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

JavaScript Discussion :

Function Javascript dans PHP sans resultat


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut Function Javascript dans PHP sans resultat
    Bonjour
    j'ai une page fille qui est une PopUp avec une liste de radio buttons.
    Quand je clique sur TRANSFERT dans ma popup, le radio button selectionne dans ma Pop Up me permet de cree une nouvelle option dans un select multiple de la page mere.

    Page Fille:

    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
    40
    41
    42
    43
     
    <script type="text/javascript">
     
    function TransfertFilleMere(){
    	for (var i=0; i < document.paramform.ap.length; i++){
    		if (document.paramform.ap[i].checked)      {
    		  var rad_val = document.paramform.ap[i].value;
    		  var rad_text = document.getElementById("span_" + rad_val).innerText;
    		  }
    	   }
     
     
    	var elmtWinParent=window.opener.document.getElementById("tunp")
    	y=window.opener.document.createElement('option');
    	y.value=rad_val;
    	y.text=rad_text;
    	y.selected="selected";
     
    	try {
    	  elmtWinParent.add(y,null); // standards compliant
    	  }
    	catch(ex){
    	  elmtWinParent.add(y); // IE only
    	  }
     
    }
    </script>
     
    <form name="paramform">
     
    	<input type="radio" name="ap" value="1" /><span id = span_1>Param1</span><br />
    	<input type="radio" name="ap" value="2" /><span id = span_2>Param2</span><br />
    	<input type="radio" name="ap" value="3" /><span id = span_3>Param3</span><br />
    	<input type="radio" name="ap" value="4" /><span id = span_4>Param4</span> <br />
    	<input type="radio" name="ap" value="5" /><span id = span_5>Param5</span> <br />
    	<input type="radio" name="ap" value="6" /><span id = span_6>Param6</span><br /> 
     
     
    	</select>
     
    	<input type="button" value="Transfert" onclick="TransfertFilleMere()">
     
    </form>
    Page Mere:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <head>
    <script>
    var mywindow = null;
    function ohh(){
        if(mywindow != null && mywindow.closed == false) {
            alert("The window is already open");
        }
        else  {
            mywindow = window.open("fille_avant.php","PopUp", "width=500,height=400,left=" + ((screen.width - 500)/2) + ",top=" + ((screen.height - 400)/2) + "location=yes,status=yes,toolbar=yes,scrollbars=yes resizable=yes");
     
        }
    }
    function gettxt(myselect){
    var x=document.getElementById("tunp");
    for (i=0;i<x.length;i++){
    	var val=x.options[i].value;
    	if (val==myselect){
    		txt =x.options[i].innerText;
    		return txt;
    	}
      }
    }
    </script>
    </head>
    <body>
     
    <?php print_r($_POST)?>
    <?php
    if (isset($_POST['submit'])){
            $table=$_POST;
            print_r($table['variables']);
            echo '<form id="form1" method="post">';
            echo '<select name="variables[]" id="tunp" multiple="multiple">';
            foreach ($table['variables'] as $k => $i){
                    echo '<option value="' . $i . '" selected="selected"><script>gettxt(' . $i . ')</script></option>';
            }
            echo '</select><br/>';
            echo '<input type="button" name="lancer" value="Ouvre" onclick="ohh()">';
            echo '<br /><br /><br />';
            echo '<input type="submit" name="submit"  value="Enter">';
            echo '<br /><br /><br />';
            echo '</form>';
     
    }
    else {
    ?>
     
    <form id="form1" method="post">
    <select name="variables[]" id="tunp" multiple="multiple">
    </select><br/>
    <input type="button" name="lancer" value="Ouvre" onclick="ohh()">
    <br /><br /><br />
    <input type="submit" name="submit"  value="Enter">
    <br /><br /><br />
    </form>
    <?php
    }
    ?>
     
    </body>
    Dans la page Mere, je voudrais reafficher les select multiples qui ont ete ajoutees par l'utilisateur.
    Et pour ce faire je recupere le TEXT d'une option de mon select multiple grace a la function gettxt(myselect) et j'appelle cette fonction JS comme cela:
    foreach ($table['variables'] as $k => $i){
    echo '<option value="' . $i . '" selected="selected"><script>gettxt(' . $i . ')</script></option>';
    }
    Mais voila quand j'ajoute des options dans ma page mere et que je soumets mon formulaire, je ne vois pas le texte de lóption.

    Voila le code source genere quand je fais VIEW SOURCE:

    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
    40
    41
    <head>
    <script>
    var mywindow = null;
    function ohh(){
        if(mywindow != null && mywindow.closed == false) {
            alert("The window is already open");
        }
        else  {
            mywindow = window.open("fille_avant.php","PopUp", "width=500,height=400,left=" + ((screen.width - 500)/2) + ",top=" + ((screen.height - 400)/2) + "location=yes,status=yes,toolbar=yes,scrollbars=yes resizable=yes");
     
        }
    }
    function gettxt(myselect){
    var x=document.getElementById("tunp");
    for (i=0;i<x.length;i++){
    	var val=x.options[i].value;
    	if (val==myselect){
    		txt =x.options[i].innerText;
    		return txt;
    	}
      }
    }
    </script>
    </head>
    <body>
     
    Array
    (
        [variables] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 4
                [3] => 5
            )
     
        [submit] => Enter
    )
     
    <form id="form1" method="post"><select name="variables[]" id="tunp" multiple="multiple"><option value="1" selected="selected"><script>gettxt(1)</script></option><option value="2" selected="selected"><script>gettxt(2)</script></option><option value="4" selected="selected"><script>gettxt(4)</script></option><option value="5" selected="selected"><script>gettxt(5)</script></option></select><br/><input type="button" name="lancer" value="Ouvre" onclick="ohh()"><br /><br /><br /><input type="submit" name="submit"  value="Enter"><br /><br /><br /></form>
    </body>
    Je ne sais pas pourquoi gettxt(1), gettxt(2) etc ne renvoient aucun resultat.

    Merci d'avance pour votre aide.

    Billy

  2. #2
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Bonsoir,

    Ca ne me paraît pas surprenant que
    gettxt(1), gettxt(2) etc ne renvoient aucun résultat.

    Pour qu'elles renvoient quelque chose,
    il aurait fallu que le texte
    que tu veux leur faire afficher
    existe déjà (mais alors quel intérêt ?).
    Bref,
    à moins que je ne fasse erreur,
    pour moi,
    ta fonction gettxt() ne sert à rien.

    Reprenons le problème :

    Lorsque tu soumets le formulaire,
    le serveur te recrées une page
    avec ce qu'il connaît :
    entre autres les values de tes options,
    mais pas le texte contenu entre les balises options
    qui lui est perdu.

    Il faudrait donc,
    comme pour les values de tes options,
    passer les infos (Param 1,...) au serveur
    lors du clique sur enter.
    Peut-être en utilisant quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="option[]" value="Param 1"/>
    que tu créerais
    à partir de ta pop up
    en même temps que les options.

    Mais bon, ça reste à creuser
    et il y a peut-être d'autres solutions.

    Fred

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Je ne sais ou en veux-tu venir mais innerText n'est pas cross-browser, utilises firstChild.nodeValue pour avoir le texte.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,
    Je ne sais ou en veux-tu venir mais innerText n'est pas cross-browser, utilises firstChild.nodeValue pour avoir le texte.
    Merci a tous pour vos reponses.

    J' obtiens le texte en utilisant firstChild.nodeValue mais ensuite quand je submit mon formulaire, le texte disparait. Je voudrais que ce texte reste meme quand le user submit le formulaire.
    J' ai donc cree en JS des hidden fields et mon page FILLE est:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <script type="text/javascript">
     
    function TransfertFilleMere(){
    	for (var i=0; i < document.paramform.ap.length; i++){
    		if (document.paramform.ap[i].checked)      {
    		  var rad_val = document.paramform.ap[i].value;
    		  //var rad_text = document.getElementById("span_" + rad_val).innerText;
    		  var rad_txt=document.getElementById("span_" + rad_val).firstChild.nodeValue;
    		}
    	   }
     
     
    	 var elmtWinParent=window.opener.document.getElementById("tunp")
    	y=window.opener.document.createElement('option');
    	y.value=rad_val;
    	y.text=rad_txt;
    	y.selected="selected";
     
    	try {
    	  elmtWinParent.add(y,null); // standards compliant
    	  }
    	catch(ex){
    	  elmtWinParent.add(y); // IE only
    	  } 
     
    	var wo=window.opener.document.getElementById("form1");
    	var c=window.opener.document.createElement("input");
    	c.type="hidden";
    	c.value=rad_txt;
    	c.name="p_" + rad_val;
    	wo.appendChild(c)
    }
    </script>
     
    <form name="paramform">
     
    	<input type="radio" name="ap" value="1" /><span id = span_1>Param1</span><br />
    	<input type="radio" name="ap" value="2" /><span id = span_2>Param2</span><br />
    	<input type="radio" name="ap" value="3" /><span id = span_3>Param3</span><br />
    	<input type="radio" name="ap" value="4" /><span id = span_4>Param4</span> <br />
    	<input type="radio" name="ap" value="5" /><span id = span_5>Param5</span> <br />
    	<input type="radio" name="ap" value="6" /><span id = span_6>Param6</span><br /> 
     
     
    	</select>
     
    	<input type="button" value="Transfert" onclick="TransfertFilleMere()">
    </form>
    Page MERE:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <head>
    <script>
    var mywindow = null;
    function ohh(){
        if(mywindow != null && mywindow.closed == false) {
            alert("The window is already open");
        }
        else  {
            mywindow = window.open("fille1.php","PopUp", "width=500,height=400,left=" + ((screen.width - 500)/2) + ",top=" + ((screen.height - 400)/2) + "location=yes,status=yes,toolbar=yes,scrollbars=yes resizable=yes");
     
        }
    }
     
    </script>
    </head>
    <body id="bod">
     
    <?php print_r($_POST)?>
    <?php
     if (isset($_POST['submit'])){
            $table=$_POST;
            echo '<form id="form1" method="post">';
            echo '<select name="variables[]" id="tunp" multiple="multiple">';
            foreach ($table['variables'] as $k => $i){
                    echo '<option value="' . $i . '" selected="selected"> ' . $table['p_'.$i] . '</option>';
            }
            echo '</select><br/>';
            echo '<input type="button" name="lancer" value="Ouvre" onclick="ohh()">';
            echo '<br /><br /><br />';
            echo '<input type="submit" name="submit"  value="Enter">';
            echo '<br /><br /><br />';
            echo '</form>';
     
    }
    else { 
    ?>
     
    <form id="form1" method="post">
    <select name="variables[]" id="tunp" multiple="multiple">
    </select><br/>
    <input type="button" name="lancer" value="Ouvre" onclick="ohh()">
    <br /><br /><br />
    <input type="submit" name="submit"  value="Enter">
    <br /><br /><br />
    </form>
    <?php
    }
    ?>
     
    </body>
    Ainsi j' ajoute dans le select multiple de ma page mere Param1 et Param4 et je submit ma page MERE:
    $_POST= Array ( [variables] => Array ( [0] => 1 [1] => 4 ) [submit] => Enter [p_1] => Param1 [p_4] => Param4 )
    Mais si je re-submit encore ma page MERE
    $_POST=Array ( [variables] => Array ( [0] => 1 [1] => 4 ) [submit] => Enter )
    Et les Hidden fields ont disparu alors que je veux que tant que $_POST['variables'] existe alors Paramxxx doit aussi exister.

    Merci

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

Discussions similaires

  1. [PHP-JS] inclure du javascript dans php
    Par CB56 dans le forum Langage
    Réponses: 4
    Dernier message: 13/09/2006, 14h53
  2. [PHP-JS] recuperer une variable javascript dan php
    Par hammag dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2006, 14h00
  3. [PHP-JS] Insertion Javascript dans PHP
    Par andrewwww dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/04/2006, 17h04
  4. [PHP-JS] Intégration code Javascript dans PHP
    Par tilou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/04/2006, 15h26
  5. [PHP-JS] retour valeur javaScript dans php
    Par Tempotpo dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2006, 11h35

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