Page 1 sur 7

transmition de Formulaire POST vers popup

Posté : 20 avr. 2008, 15:14
par chrislabricole
Bonjour,

Désolé si je ne poste pas dans la bon forum (mon problème concerne un peu tous les langages :P)...

Je fais face à un problème dont je ne vois pas du tout comment résoudre :s

Le truc est que quand le client clique sur le bouton submit (formulaire en methode POST), ça ouvre une popup...
La popup s'ouvre bien mais.... je peux pas récupérer les valeurs des champs avec $_POST['nom_du_champ'] ....

Voici le code...
<form action="./index.php?page=particuliers" onsubmit="popup('./view_details.php','R&eacute;sum&eacute; de votre commande','toolbar=0, location=1, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=800, height=600');return(false)" class="identification_fields" method="get">
N&deg; de commande : <input type="text" name="num_com" size="10" maxlength="10"></input><br />
Mot de passe :&nbsp;&nbsp;<input type="password" name="password" size="13" maxlength="10"></input><br />
<input type="hidden" name="par" value="pro"></input><input type="submit" value="Voir votre commande"></input>
</form> 
Code JS qui permet de donner la fonction "popup()"
function popup(page,largeur,hauteur,options) {
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}
et le code de la popup (view_details.php) :
<?php
if( isset($_POST['num_com']) ) {
      echo $_POST['num_com'];
} else {
      echo 'La variable POST n\'existe pas...';
}
?>
Comme vous le deviner, dans la popup, il s'affiche :
"La variable POST n'existe pas.."

Sinon je n'aurais pas posté :P

Je n'est aucune idée comment résoudre ça, sachant que j'ai des notions en JS

Merci beaucoup de votre aide :)
Christophe.

Posté : 20 avr. 2008, 15:40
par Cyrano
Il faut que tu explores du coté JavaScript avec parent où tu pourras retracer les éléments du formulaire. Au moment de l'ouverture du pop-up, le formulaire n'est pas encore posté, donc $_POST est vide, c'est pour ça que tu n'y trouves rien.

Posté : 20 avr. 2008, 15:48
par chrislabricole
Ah ok, pourrais-tu, s'il te plait, plus préciser comment faire ?

Merci à toi :)

Posté : 20 avr. 2008, 17:13
par Cyrano
Après une rapide vérification, ce serait avec window.opener.

Donc tu pointes sur window.opener.forms.idDeLaBaliseForm.elements.idDeLElementVise ou quelque chose d'approchant. C'est un sujet traité périodiquement, tu devrais trouver facilement des exemples avec une petite recherche.

Posté : 20 avr. 2008, 17:24
par chrislabricole
ouais mais là, tu me propose d'aller chercher les elements du formulaire grace à javascript ?

dans ma popup, je voudrais par exemple créer une variable "$num_com" qui contient le champ "num_com"

car grace à ça, après, je vais aller chercher des infos dans mysql.....

Merci à toi :)

Posté : 20 avr. 2008, 22:45
par Cyrano
Alors récupère la valeur dans le gestionnaire d'évènement qui ouvre le popup et envoie-là dans l'url dans l'appel d'ouverture du pop-up. Sinon, il faudra passer par AJAX à partir du popup.

Posté : 21 avr. 2008, 17:56
par chrislabricole
Alors récupère la valeur dans le gestionnaire d'évènement qui ouvre le popup
C'est-à-dire ? :P
envoie-là dans l'url dans l'appel d'ouverture du pop-up.
Donc par méthode GET ? ça me semble pas très propre avec un mot de passe... :?
Sinon, il faudra passer par AJAX à partir du popup.
Pas trop lourd pour se que je veux faire ?? Et puis avec cette solution là, pourrais-je récupérer mes valeurs dans des variable en PHP ?

Merci à toi :)

Posté : 21 avr. 2008, 21:23
par Cyrano
SI tu as à passer des données sensibles, alors AJAX est la seule solution raisonnable et non, ce n'est pas trop lourd.

Mais le problème reste de tes variables PHP : essayes de distinguer chronologiquement ce qui se passe dans le déroulement de tes actions : certaines choses sont effectuées coté serveur, d'autres coté client : coté client, tu ne peux pas avoir de PHP. À mon avis, il faut peut-être revoir la méthodologie globale de ce que tu veux faire... :-k

Posté : 21 avr. 2008, 22:38
par chrislabricole
ok, ça m'étonne qu'il faut faire quelque chose de plutôt compliqué alors que je penser qu'une ligne de code javascript suffisée pour faire passer du POST dans un popup via formulaire...

bon alors, dans mon formulaire, il y a 2 champs : numéro de commande et mot de passe quand le client clique sur "voir votre commande" un popup doit s'ouvrir à ce moment la (ça tu le sais :P) dans cette popup, la commande du client est afficher si le couple numéro de commande+mot de passe est valide, c'est grace à un WHERE sur le num de commande que c'est afficher bien sûr...

Voilà, je sais pas si se que je viens de dire peux mieux t'aider à comprendre la situation...
Mais AJAX, c'est du JS, alors pourquoi employer le JS pour faire un "lien", le JS, c'est du côté client.. :roll:
Excuse moi mais je saisi pas tout :roll:

Merci à toi.

Posté : 22 avr. 2008, 01:36
par Cyrano
Explication brève sur AJAX : c'est une technique qui permet d'envoyer une requête au serveur en JavaScript sans rechargement de page. On peut donc envoyer des données en POSTDATA via un objet XMLHTTPRequest. La réponse sera récupérée par JavaScript qui pourra alors ouvrir un popup et afficher des données, ces données pouvant faire partie de la réponse du serveur. Si c'est par exemple une liste de commande, cette réponse pourra comporter des données formatées en JSON par exemple, format très pratique parce que très portable et à partir duquel on peut reconstruire des tableaux de données... tableau qui pourrait en l'occurence permettre de reconstruire une liste d'articles commandés par un client.¸¸Tu as besoin de peu de choses : une classe JavaScript pour le XHR et coté serveur un fichier PHP qui récupère des données en POST selon ton choix, effectue une requête SQL et les formate en JSON (les fonctions existent en PHP5) pour retourner une chaîne. Ton code JavaScript récupère cette chaîne, la retransforme en tableau avec un eval() et il te reste à construire le code de la page qui constituera ton popup. Tout ce qu'il restera à faire, c'est d'ouvrir ce popup en lui donnant ce code plutôt qu'une url.

Posté : 22 avr. 2008, 17:49
par chrislabricole
Ok ok :)
Mais je ne vois pas du tout comment mettre en œuvre cela... :?
J'ai beau regarder des tutos sur AJAX, mais se que tu propose me semble plus difficile que "d'habitude", non ? :?
Ca m'es arriver de me servir d'AJAX, mais juste les bases quoi...

Merci tes indications :)

Posté : 22 avr. 2008, 22:28
par Cyrano
Désolé si je réponds pas plus vite, à l'heure où j'écris ceci, je viens de rentrer du bureau.

Pour essayer de familiariser avec l'utilisation d'AJAX, jette un coup d'oeil sur les tutos de listes déroulantes liées de la FAQ et récupère le code de la version AJAX. Ça devrait t'aider à avancer un peu.

Posté : 23 avr. 2008, 02:51
par chrislabricole
Pas très grave pour ta rapidité ^^

c'est bien ça ?
http://www.phpfrance.com/forums/viewtop ... 562#166433

Franchement, ça m'aide pas trop :? :roll:

Merci à toi :)

Posté : 23 avr. 2008, 05:44
par Cyrano
Je sais bien que le sujet traité n'a pas de rapport avec ce que tu veux faire : c'est le principe de fonctionnement global qui nous intéresse, de quoi on se sert coté client et de quoi coté serveur. Et tu as un exemple de création d'un objet XHR pour transmettre des données aux serveur et comment on récupère le retour. Cet exemple est en outre relativement basique, donc d'autant plus important à assimiler avant de commencer à utiliser sans comprendre des classes toutes faites.

Posté : 23 avr. 2008, 12:06
par chrislabricole
Ok,

Mais en fait, se que je ne comprend pas surtout, c'est, comment faire pour dire à la requête AJAX d'aller chercher tel donnée si on le lui dit pas.... pour lui dire, il faudrais faire passer du POST dans la popup... le problème est là.... ou du GET ? => données sensibles...

Donc voilà, si tu pourrai me décrire les étapes avant/après l'ouverture de la popup et que viens faire là AJAX ...etc... ça m'aiderai d'un grand saut je pense....

Merci à toi :)