IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

popup + formulaire + tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut popup + formulaire + tableau
    bonjour,

    j'espère ne pas me tromper de forum, si c'est le cas, d'avance mes excuses.

    depuis hier je sèche sur le passage de parametres entre une popup et une page appelante. ce n'est pourtant pas les discussions qui manquent ! mais la je jette l'éponge et je vous expose mon problème :

    sur une page : new.php il y a un formulaire : origine qui appelle une popup qui possède elle aussi un formulaire addUnite.

    le formulaire AddUnite me permet de stocker dans un tableau une liste d'unite et leur responsable .

    ce que je n'arrive pas a faire : passer mon tableau $respP à ma page appelante : new.php.

    appel de la popup :
    <a href="#" onClick="window.open('AddUnit.php','Ajout des unités','toolbar=no,status=no,width=500 ,height=280,scrollbars=yes,location=no,resize=yes,menubar=no')">Ajouter les unités</a><br>

    2 questions :
    comment transmettre mon tableau et fermer la popup en meme temps ?
    comment affecter le tableau au formulaire de la page appelante qui n'a pas encore ete envoyé ? est ce faisable ?

    merci d'avance,

    naïma

  2. #2
    Invité
    Invité(e)
    Par défaut
    en javascript tu peut appeler des fonction ou aller chercher des variables de la page ouvrante.

    A tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>alert(parent.tab_valeur)</script>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>alert(opener.tab_valeur)</script>
    sinon en php envoi en parametre dans l'url ton tableau (si il est en 1 dimension) avec les valeur collée par des ";" le tout encodé en base 64, que tu décode dans AddUnit.php J'ai pas le temp de faire le code pour ça, si tu veut je te le pond demain.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut
    bonsoir,

    merci de la réponse,
    pourquoi faut il que le tableau soit a 1 dimension ?
    J'ai effectivement remarqué que quand je rajoute mon tableau en paramètre, rien ne se passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href=\"javascript:window.opener.location.replace('new.php?pop=OK&resp=$resP'); window.close()\">Fermer la fenêtre</a>";
    $resP etant mon tableau que je remplis de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    ....
    		  <?
    			if ($_POST['uniteP']){
    				//echo "<table border='0' class='table'><form name='list' action='new.php?pop=OK' onsubmit=\" Reporter(this); \">";
    				echo "<table border='0' class='table'><form action='AddUnit.php' method='post'>";
    				$tab = $_POST['uniteP'];
    				foreach ($tab as $unite) {
    					echo "<TR><td>Choix du scientifique de l'unite $unite<br>";
    					echo "<SELECT NAME='respP[$unite]'>";
    					$query = "SELECT t1.idResponsable, t1.nomResponsable, t1.prenomResponsable FROM responsable t1, unite t2 where t1.idUnite=t2.idunite and t1.idUnite=$unite";
     
    					$result = mysql_query($query);
    					if (mysql_num_rows($result) > 0) {
    						// Recuperation des resultats
    						while($row = mysql_fetch_object($result)){
    							echo "<OPTION NAME='respP' value='".$row->idResponsable."'>".$row->nomResponsable .' '. $row->prenomResponsable ."</OPTION>";	
    						}
    						mysql_free_result($result);
    					} 		
    					echo "</TD></TR>";
    				}
    				echo "</TABLE>";
    			}
    		  ?>
     
    ....
     
    <?
    if ($_POST['enregistrer']) {
        $resP = $_POST['respP'];
    					foreach ($resP as $key=>$responsable) {
    						echo "idUnit = ".$key . "idResp = ".$responsable."<br>";
    					}
    					//$resP = serialize($resP);
    					//echo "<A HREF=\"javascript:self.close()\" onClick=\"window.opener.location.href='new.php?pop=OK&resp=$resP'; windows.close(); return(true);\">Fermer</A>";
    					echo "<a href=\"javascript:window.opener.location.replace('new.php?pop=OK&resp=$resP'); window.close()\">Fermer la fenêtre</a>";
    				}
     
    			?>
    a+
    nina

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut
    bonsoir,

    le probleme du passage de tableau est resolu!
    il fallait, en plus de serialiser, encoder en base 64....

    ensuite je n'ai plus qu'a mettre dans le formulaire de la fenetre appelante mon tableau transmis par get dans un champs cache :
    <TR><td><input type='hidden' name='listUnitP' value='<?echo $_GET['resp'];?>'></td></TR>

    Ainsi lorsque je soumet le formulaire de la page appelante je recupere bien mes valeurs stockees dans le tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?
    				if ($_POST['enregistrer']) {
    					$resP = $_POST['listUnitP'];
    					$tab = unserialize(base64_decode($resP));
    					foreach ($tab as $key=>$responsable) {
    						echo "idUnit = ".$key . "idResp = ".$responsable."<br>";
    					}					
     
    				}
    			?>
    voila si ca peux aider ...

    par contre je ne sais toujours pas comment fermer la popup via le bouton submit du formulaire, sans passer par le lien "fermer la fenetre" qui oblige a cliquer 2 fois...

    si qqu'un peut m'aider sur ce point (je ne connais pas trop le js)
    merci,

    n

  5. #5
    Invité
    Invité(e)
    Par défaut
    2 solution :
    1/ sur le formulaire tu a l'évènement onsubmit
    2/ sur le submit tu a l'évènement onclick

    sur un de ces évènement tu fait windows.close();
    PS : pense a mettre "resolu"

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut
    merci,

    la solution 1 marche avec l'ecriture onsubmit="window.close"

    pour la solution 2, les 3 ecritures ne marchent pas :
    onsubmit="window.close"
    onsubmit="windows.close"
    onsubmit="self.close"

    j'ai retenu l'evenement on submit dans le formulaire, mais...

    je ne recupere plus mon tableau depuis la page appelante, ainsi si je fais :

    if ($_POST['respP']){
    echo "tableau recu";
    }

    et je n'ai rien...

    comment serialiser/encoder juste avant l'envoi du formulaire et la fermeture de la popup ? est ce possible ?

    merci d'avance,
    n

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recuperation de données popup-formulaire
    Par bricocoman dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/07/2006, 12h04
  2. Popup et tableau
    Par Invité dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 31/03/2006, 11h28
  3. [FORMULAIRE] Tableau à deux entrées...
    Par ip203 dans le forum IHM
    Réponses: 2
    Dernier message: 09/03/2006, 12h48
  4. Réponses: 5
    Dernier message: 03/03/2006, 11h00
  5. Réponses: 7
    Dernier message: 15/12/2005, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo