Page 1 sur 1
Récuperation de variable depuis un pop-up
Posté : 09 juil. 2008, 18:07
par guigui69
Bonjour à tous,
j'ai une page web depuis la quel j'ouvre une fenêtre pop-up. Dans cette pop-up J'ai un tableau (créer a l'aide des informations de ma base de donnée+php) J'ai un champs radio pour sélectionner celui que je veut.
Comment faire pour quand je valide dans mon pop-up la valeur du bouton part sur ma page initial dans un champ input.
J'ai deja regarder sur internet mais je n'ai rien trouver de clair. Si quelqu'un aurait un exemple de code je suis preneur.
Merci d'avance pour votre aide.
guigui69
Posté : 09 juil. 2008, 19:38
par sadeq
Bonjour,
C'est l'objet
opener qui répond à ton besoin. En effet, cet objet représente au niveau d'un popup, la page qui l'a ouvert.
A travers l'objet
opener ton popup peut accéder à tous les champs et balises de la page principale.
Supposons que le champ qui se trouve dans ta page principale est nommé "champ1" et est placé dans un formulaire nommé "formulaire1", tu peux donc lui transmettre la valeur du bouton radio sélectionné dans le popup en écrivant au niveau de ce dernier le code suivant:
Code : Tout sélectionner
<input type="radio" name="bouton1" value="valeur1" onClick="window.opener.document.formulaire1.champ1.value = this.value" />
Posté : 11 juil. 2008, 11:21
par guigui69
Merci , j'ai fait ceci:
Page Principale:
Code : Tout sélectionner
Fiche Action Corrective ?
<select name="action_corrective" id="action_corrective" onchange="fac(this.value)">
<option value="0">Non</option>
<option value="1">Oui</option>
</select><div id="hidden" style="display: none"><form><input type="text" name="id_fac" id="id_fac" size="10" maxlength="10"><input type="submit" value="ajouter FAC" onClick='OuvrirPop("fac.php","fiche d action corrective",10,10,800,700,"menubar=no,scrollbars=no,statusbar=no")'></form></div></td></tr><tr><td colspan="2"><TEXTAREA name="commantaire_eva_reclamation" rows="2" cols="90"></TEXTAREA></td></tr></table>
<input type="submit" name="ajouter" id="ajouter" value="Valider" /></FORM>
Pop-Up:
Code : Tout sélectionner
<tr>
<td><input type="radio" name="id_fac" value="<?php echo $row1["id_fac"]; ?>" onClick="window.opener.document.getElementById('id_fac').value = this.value;"><?php echo $row1["id_fac"]; ?></td>
<td><a href="javascript:OuvrirPopup('view_fac.php?id_fac=<?php echo $row1["id_fac"];?>')"><img SRC="img/visu.png" ALT="Visu" border="0"></img></a></td>
</tr>
Cela remplis bien mon champ Input.
Existe-il un moyen de bloquer le refresh de la page principale, car quand je clique sur le bouton pour ouvrir le popup la page principale ce rafraichit et donc mon champ input est caché.
Merci pour votre aide.
guigui69
Posté : 11 juil. 2008, 13:01
par sadeq
Dans la page principale, au lieu du bouton submit, tu utilise un bouton simple : <input type="button" ...
Car le bouton submit provoque l'envoi du formulaire principal.
Posté : 15 juil. 2008, 12:13
par guigui69
Merci,
J'aurai encore une question:
Est-il possible de créer un autre champ input si le premier champ est rempli ?
Ou bien est-il plus simple de rentrer ces informations dans le champ input ( a la suite, si il y a deja un numeros) et de les traiter en php si il y a un caractère separateur? Exemple: 1#23#72
Car en fait je réaliser des action corrective pour une fiche client et il peut avoir plusieurs fiche action corrective pour une fiche client.
Car le but c'est de rentrer ces informations dans ma table fiche_ac avec le numéros de ac (champ input) et le numéros fiche client.
Merci d'avance
guigui69
Posté : 15 juil. 2008, 12:55
par sadeq
il est plus simple de rentrer les numéros d'actions dans le champ input l'un à la suite de l'autre séparés par un caractère précis et de les traiter en php selon ce caractère séparateur. Exemple: 1#23#72
Le code du Pop-up changerait en conséquence (si le séparateur est #):
Code : Tout sélectionner
onClick="window.opener.document.getElementById('id_fac').value += this.value + '#';"
+= permet d'ajouter le nouveau contenu à l'ancien dans la même variable.
Posté : 16 juil. 2008, 10:02
par guigui69
Merci
j'ai rajouter ceci comme code:
Code : Tout sélectionner
<tr>
<td><input type="radio" name="id_fac" id="id_fac"value="<?php echo $row1["id_fac"]; ?>" onClick="window.opener.document.getElementById('id_fac').value += this.value + '#';"><?php echo $row1["id_fac"]; ?></td>
<td><a href="javascript:OuvrirPopup('view_fac.php?id_fac=<?php echo $row1["id_fac"];?>')"><img SRC="img/visu.png" ALT="Visu" border="0"></img></a></td>
</tr>
Maintenant je vais voir si je peut trouver le code php pour traiter cette donnée pour l'injecter dans ma base. (Si quelqu'un aurait un bout de code ^^)
Merci
guigui69
Posté : 16 juil. 2008, 10:54
par sadeq
En PHP, si l'on veut extraire d'une chaine toutes les valeurs séparées par un caractère connu on utilise la fonction explode() qui décompose la chaine en tableau dont les cases sont les valeurs séparées.
Exemple:
// La chaine d'origine
$chaine = "1#23#72";
// Extraire les valeurs séparées par #
$tableau_valeurs = explode("#", $chaine); // Retourne un tableau contenant les valeurs (1, 23, 72)
// Afficher le tableau
print_r($tableau_valeurs);
Posté : 16 juil. 2008, 11:10
par guigui69
Merci j'avais trouver la fonction explode, J'ai du rajouter (-1) pour qu'il ne prenne pas le dernier caractère vide :
Code : Tout sélectionner
$decoupe = explode("#",$id_fac);
//echo "$id_fac";
$boucle=0;
while ($boucle < sizeof($decoupe)- 1)
{
echo '->'.$boucle.'qui correspond à'.$decoupe[$boucle].'';
echo "<br>";
$boucle = $boucle+1;
}
Le code ci-dessus est-il correcte?
Et pour rentrer ces données je doit utiliser la fonction foreach?
Merci d'avance
guigui69
Posté : 16 juil. 2008, 11:19
par sadeq
Oui ton code est bon. Mais voici comment utiliser foreach et éviter les boucles à indice incrémenté par le programme :
$decoupe = explode("#",$id_fac);
foreach ($decoupe as $index=>$valeur)
{
if (trim($valeur) != "") // Ignorer les valeurs vides
{
echo '->'.$index.'qui correspond à'.$valeur.'<br />';
}
}