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 :

Le tableau $_GET est vide


Sujet :

Langage PHP

  1. #1
    Membre régulier
    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
    Points : 85
    Points
    85
    Par défaut Le tableau $_GET est vide
    Bonjour a tous,

    J'ai poste le meme thread sur le forum javascript mais n'ai pas obtenu de reponse. J'espere que c'est un probleme de PHP et non JS.

    Voila, je cree mes lignes dynamiquement grace a Javascript. j'ai aussi differencie les cellules de mes lignes comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell1.name=cell1.name + '_'+ind ou ind=row.rowIndex
    mon probleme est de recuperer mes donnees dans mon formulaire PHP. Alors j'ai fait un GET vers une page b.html (juste une page de test).

    mon code fstatus.php qui cree la liste deroulante contenue dans la cellule 3 de ma ligne cree en JS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 		echo '<select name="fstatus">';
    				echo '<option value=1>Draft</option>';
    				echo '<option value=2>Available</option>';
    				echo '<option value=3>Private</option>';
    				echo '<option value=4>Pilot</option>';
    				echo '<option value=5>On Request</option>';
    		echo '</select>';
     
     ?>
    mon code JS qui est entre les balises <head> du fichier func.php:

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <script>
     
       function getXhr(){
                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox and others
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest not supported by your browser
    				   alert(" Your browser does not support XMLHTTPRequest objects..."); 
    				   xhr = false; 
    				} 
                      return xhr
    			}
     
    			/**
    			*  method called when the user clicks on the button
    			*/
    			function go(){
    				var xhr = getXhr()
    				// We defined what we gonna do with the response
    				xhr.onreadystatechange = function(){
    					// We do somthing once the server's response is OK
    					if(xhr.readyState == 4 && xhr.status == 200){
     
    						//var body = document.getElementsByTagName("body")[0];
     
    					// Retrieve <table> ID and create a <tbody> element
     
    						var tbl = document.getElementById("table");
    						var tblBody = document.createElement("tbody");
    						var row = document.createElement("tr");
     
    						var cell_1 = document.createElement("td");
    						var cell_2 = document.createElement("td");
    						var cell_3 = document.createElement("td");
    						var cell_4 = document.createElement("td");
     
    					// Create the first cell which is a text zone	
    						var cell1=document.createElement("input");
    						cell1.type="text";
    						cell1.name="fname";
    						cell1.size="20";
    						cell1.maxlength="50";
    						cell_1.appendChild(cell1);
     
    					// Create the second cell which is a text area	
    						var cell2=document.createElement("textarea");
    						cell2.name="fdescription";
    						cell2.rows="2";
    						cell2.cols="30";
    						cell_2.appendChild(cell2);
     
    					// Create the second cell which is a combo box
    						var cell3 = document.createElement("div");
    						cell3.id="rs";
    						cell3.innerHTML=xhr.responseText;
    						cell_3.appendChild(cell3);
     
     
    					// Create the fourth cell which is a button
    						var cell4=document.createElement("input");
    						cell4.type="button";
    						cell4.value="Delete"
    						cell4.onclick=delRow;
    						cell_4.appendChild(cell4);
     
    					// add cells to the row
    						row.appendChild(cell_1);
    						row.appendChild(cell_2);
    						row.appendChild(cell_3);
    						row.appendChild(cell_4);
     
    					// add the row to the end of the table body
    						tblBody.appendChild(row);
     
    					// put the <tbody> in the <table>
    						tbl.appendChild(tblBody);
     
    					//	Rename cells with the row index			
    						var ind=row.rowIndex;
    						var liste_fname = row.getElementsByTagName("input");
    						for(i=0; i < liste_fname.length; i++)
    						{
    						   if(liste_fname[i].name == "fname") 
    						   {
    							  liste_fname[i].name = liste_fname[i].name + "_" + ind; //give fname_1, fname_2, fname_3, ...
     
    						   }
    						}
     
    						var fd = row.getElementsByTagName("textarea");
    						fd[0].name = fd[0].name + "_" + ind;
     
    						var cd = row.getElementsByTagName("div");
    						cd[0].id = cd[0].id + "_" + ind;
     
    						var selectname = row.getElementsByTagName("select");
    						selectname[0].name = selectname[0].name + "_" + ind;
     
    					// appends <table> into <body>
    						//body.appendChild(tbl);
     
    					// sets the border attribute of tbl to 1;
    						tbl.setAttribute("border", "1");
     
    						}		
    				}
     
    				xhr.open("GET","fstatus.php",true);
    				xhr.send(null);
    			}
    function delRow(){
    	var i= this.parentNode.parentNode.rowIndex;
    	document.getElementById('table').deleteRow(i);
    }
       </script>

    mon formulaire dans le code func.php:

    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
    <body >
     
    <?php
    if (isset($_GET['submit'])){
    	print_r($_GET);
     
    }
     
    ?>
     
    <h1> Create an Item </h1>
    <form method="get" action="b.html">
     
    	<table align="left" border = "2" cellspacing ="0" cellpadding="3" id="table"> 
    		<tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><input type="button" Name= "Ajouter" Value="Ajouter" onclick="go()"></td></tr>
     
    	</table>	
    	<p><input type="submit" name="submit" value="Enter"/></p>
     
    </form> 
    </body>
    et enfin ma page b.html:

    dans l'URL de b.html je vois ceci:
    .../b.html?fname_1=func1&fdescription_1=func1+description&fstatus_1=3&fname_2=func+2&fdescription_2=func2+description&fstatus_2=1&submit=Enter
    Mais il semble que le tableau $_GET soit vide puisque dans ma page b.html je ne vois que SALUT mais rien venant du print_r($_GET).

    A l'aide!
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quelle drôle d'idée de mettre ton print_r dans une condition.
    si ton $_GET etait vide, tu aurais "array()" ; si tu n'as rien c'est que ta condition ne passe pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    J'ai pas capté puisque apparemment b.html reçoit bien les paramètres GET. Ton print_r il est dans b.html ? Ce fichier est il interprété par php ??

  4. #4
    Membre régulier
    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
    Points : 85
    Points
    85
    Par défaut
    merci de ta reponse.

    j'ai modifie la page func.php de la facon 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
    <?php
    //if (isset($_GET['submit'])){
    	print_r($_GET);
     
    //}
     
    ?>
     
    <h1> Create an Item </h1>
    <form method="get" action="func.php">
     
     
    	<table align="left" border = "2" cellspacing ="0" cellpadding="3" id="table"> 
    		<tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><input type="button" Name= "Ajouter" Value="Ajouter" onclick="go()"></td></tr>
     
    	</table>	
    	<p><input type="submit" name="submit" value="Enter"/></p>
     
    </form> 
    </body>
    et cette fois je vois bien ce resultat dans func.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [fname_1] => erters8654485 [fdescription_1] => earteasrt757856 [fstatus_1] => 1 [submit] => Enter )
    SVP comment puis je faire pour que mes lignes ne disparaissent pas quand je clique sur Enter.

    Parce que quand je valide mon formulaire, je retrouve juste L'entete de ma table sans les lignes que j'ai ajoutees.

    Thanks

  5. #5
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Soumet ton formulaire directement via XMLHttpRequest plutôt que de passer par une requête synchrone (classique) ?

  6. #6
    Membre régulier
    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
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par metagoto Voir le message
    Soumet ton formulaire directement via XMLHttpRequest plutôt que de passer par une requête synchrone (classique) ?
    j'ai utilise xhr pour executer un fichier php (fstatus.php) mais je ne sais pas si je devrais faire pareil pour soumettre mon formulaire.
    Excusez je suis un newbie en Ajax et JS.
    Avez vous un tutoriel pour cela? Thanks.

    Est'il possible d'avoir plusieurs xhr dans le meme fichier .php? parceque je veux rester sur le formulaire au cas ou le user voudrait entrer de nouvelles donnees et soumettre de nouveau son formulaire.

Discussions similaires

  1. [Tableaux] Tester si le tableau est vide
    Par marty499 dans le forum Langage
    Réponses: 6
    Dernier message: 18/04/2008, 18h57
  2. Réponses: 10
    Dernier message: 08/04/2008, 11h14
  3. supprimer ligne tableau si A est vide
    Par flyhb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2008, 23h30
  4. Savoir quand une variable ou un tableau est vide
    Par cryptorchild dans le forum Langage
    Réponses: 1
    Dernier message: 17/02/2006, 08h40
  5. Comment détecter si un tableau est vide ?
    Par ErPi dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 18h50

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