Tableaux en javascript, le récupérer en php

Fermé
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 - 2 sept. 2008 à 16:46
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 - 4 sept. 2008 à 10:38
Bonjour,

j'ai 2 page php et une page javascript :

dans ma page javascript j'ai
var TabNumForm = new Array("a","b","c","d") //liste de test


il y a un premier traitement dans la premier page php, mais aucun traitement, en tt cas, je n'y pas, et s'execute grace a un input type button.

cette premiere page php après soumission renvoie à une deuxième page php qui elle va s'occuper des traitements.
sur cette deuxième page je fais :
if (isset($_POST['TabNumForm[1]']))


mais ça ne marche pas, le TabNumForm[1] n'est pas "reconnu", comen tça se fait? je n'appelle pas le bonne méthode?

Si quelqu'un peut m'orienter s'il vous plait...ça fait déjà un bout de temps que je cherche je ne suis pas très douée je sais.

Merci d'avance.
A voir également:

12 réponses

mouf13 Messages postés 142 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 22 février 2011 17
2 sept. 2008 à 16:58
je veux bien t'aider mais va me falloir un peu plus d'elements..
tu utilise $_POST, j'en deduis que $_POST['TabNumForm[1]'] est tiré d'un formulaire containant un input de ce nom, est-ce bien çà ?
A quoi sert ton javascript
ou veux-tu en venir...

bref pas assez d élèments pour pouvoir t'aider :o
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
2 sept. 2008 à 17:20
je viens de comprendre que $_POST c'était pour récupérer des input, donc j'ai abandonné le $_POST['tab ....].....

Mais j'ai quand même pas résolu mon soucis...

Disons que j'ai un formulaire initiale :

formInsert.php
<div id="formulaireReference">
		<br><label> Chaine <input type="text" name="chaine0" size="20" id="chaine"/> </label>
		<br />
        <LABEL>Codage : </LABEL>
			MPG4 <input type="radio" name="codage0" value="mpg4" class="OPTION" />
			MPEG2 <input type="radio" name="codage0" value="mpeg2" class="OPTION" >
		<br />
        <LABEL>Définition : </LABEL>
			SD <input type="radio" name="def0" value="SD" class="OPTION" />
			HD <input type="radio" name="def0" value="HD" class="OPTION" >
		<br />
        <LABEL>Systeme : </LABEL>
			PAL <input type="radio" name="syst0" value="PAL" class="OPTION" />
			NTSC <input type="radio" name="syst0" value="NTSC" class="OPTION" >
		<br> 
       
</div>
	<div id="formulaires"></div>
<p>
   <input type="button" id="ajt0" name="ajout0" value="ajouter" style="display:none" onclick="javascript:add()" >
 	
</form>
<p>
<input type="submit" id="Soumettre" name="Soumettre" value="Soumettre" />


le javascript me permettra de créer ou supprimer un (ou plusieurs) nouveau(x) formulaire(s) après avoir appuyer sur ajouter

forms.js
var numForm = 1;
	var i = 0;
	var contentDivName = "formulaires";
    
	function add()
	{
		 var contentForm = document.createElement('input');
		/* Retrieve fieldSet from the page */
         var conteneur   = document.getElementById(contentDivName);
        /* Create elements that we need into the new form to add  */
         var undiv      = document.createElement('div');
		
		 var MaChaine = document.createTextNode("Chaine : ");
		 var chaine        = document.createElement('input');
		
		 var MonCodage = document.createTextNode("Codage : ");
		 var MonMpg4 = document.createTextNode("MPG4 ");
		 var mpg4        = document.createElement('input');
		 var MonMpeg2 = document.createTextNode("MPEG2 ");
		 var mpeg2 = document.createElement('input');
			 
		 var MaDefinition = document.createTextNode("Définition : ");
		 var MaSd= document.createTextNode("SD ");
		 var sd        = document.createElement('input');
		 var MaHd = document.createTextNode("HD ");
		 var hd = document.createElement('input');
		 
		 var MonSysteme = document.createTextNode("Systeme : ");
		 var MonPal = document.createTextNode("PAL ");
		 var pal        = document.createElement('input');
		 var MonNTSC = document.createTextNode("NTSC ");
		 var ntsc = document.createElement('input');
		 
         var but = document.createElement('input');
		 
		 contentForm.type = 'text';
		 contentForm.value = numForm;
		 contentForm.name = numForm;
         chaine.type   = 'text';
		 mpg4.type   = 'radio';
		 mpg4.name = 'codage'+numForm;
		 mpg4.value = 'mpg4';
		 mpeg2.type   = 'radio';
		 mpeg2.name = 'codage'+numForm;
		 mpeg2.value = 'mpeg2';
		 sd.type   = 'radio';
		 sd.name = 'def'+numForm;
		 hd.type   = 'radio';
		 hd.name = 'def'+numForm;
		 pal.type   = 'radio';
		 pal.name = 'sys'+numForm;
		 ntsc.type   = 'radio';
		 ntsc.name = 'sys'+numForm;
         but.type   = 'button';
         but.value  = 'Supprimer le formulaire';

        // Implement delete function on the button
         but.onclick = function()
		 {
        	// Element to remove
        	 lediv      = this.parentNode;
        	// Element parent
        	 lefieldset   = lediv.parentNode;
        	// Remove the element
        	 lefieldset.removeChild(lediv);
         }

        /* Append elements (new form) into the page */
		 undiv.appendChild( document.createElement('br') );
		undiv.appendChild(contentForm);	 
		
		 undiv.appendChild(MaChaine);
		 undiv.appendChild(chaine);
		 
		 undiv.appendChild( document.createElement('br') );
		 
		 undiv.appendChild(MonCodage);
		 undiv.appendChild(MonMpg4);
		 undiv.appendChild(mpg4);
		 undiv.appendChild(MonMpeg2);
		 undiv.appendChild(mpeg2);
		 
		 undiv.appendChild( document.createElement('br') );
		 
		 undiv.appendChild(MaDefinition);
		 undiv.appendChild(MaSd); 
		 undiv.appendChild(sd );
		 undiv.appendChild(MaHd);
		 undiv.appendChild(hd);
		 
		 undiv.appendChild( document.createElement('br') );
		 
		 undiv.appendChild(MonSysteme);
		 undiv.appendChild(MonPal);
		 undiv.appendChild(pal );
		 undiv.appendChild(MonNTSC);
		 undiv.appendChild(ntsc);
            
		 undiv.appendChild( document.createElement('br') );
		 
		 undiv.appendChild(but);
		 
		  
         conteneur.appendChild(undiv);
		
		 //TabNumForm[i] = numForm;
		 //document.write(TabNumForm)
		 i++;
		 numForm++;
	}


et dans ma derniere page je fais le traitement pour rentrer mes données dans la base de donnée, je voulais récupérer le numForm, donc avec contentForm.name il suffit juste de mettre $_POST['1'] ou $_POST['2'] ... pour récupérer mes numForm, faire un "if(isset($_POST[$i]))"

par exmple
reg.php
for($i=1;$i<=???;$i++)
     if(isset($_POST[$i]))
          // insertion dans ma base de donnée
...


mais pour celà, il faut que je récupère le dernier numForm, donc le numéro du dernier formulaire pour savoir où arrêter ma boucle faire "pour i allant de 1 a lederniernumForm par pas de 1"

merci d'avance, si besoin, si question, je reste disponible...

Merci
0
mouf13 Messages postés 142 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 22 février 2011 17
2 sept. 2008 à 17:36
ben y a un moyen simple

tu creer un input de type hidden avec la valeur num+1 que tu as recuperé
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
2 sept. 2008 à 17:55
euh... pas compris;
type hidden ok,
valeur num+1 pourquoi?

je veux juste récupérer le numForm du dernier formulaire, et je ne sais pas à quel niveau le faire après le fonction add? dans la fonction add? dans mon reg.php dans mon formInsert.php ou forms.js?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mouf13 Messages postés 142 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 22 février 2011 17
2 sept. 2008 à 18:23
c'est pas propre mais c le principe
$i = 1;

$html = '<form method="post" action="#">'.
'<input type="hidden" name="num['.$i.']" id="num['.$i.']" value="'.$i.'"/>'.
'<input type="button" id="ajt0" name="ajout0" value="ajouter" style="display:none" onclick="javascript:add(document.getElementById('num['.$i.']').value);" >'.
'</form>';

echo $html;

et dans ton js
tu vas recreer le champs num avec la valeur+1 passé en argument
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
3 sept. 2008 à 11:36
coucou, merci pour tes réponses, mais je bugues toujours sur le

"et dans ton js
tu vas recreer le champs num avec la valeur+1 passé en argument"

c'est mon numForm qu'il faut que je change?

ou créer un num input type hidden, avec pour name num et value numForm+1 :

var num = document.createElement('input');
num.type = 'hidden';
num.name = 'num';
num.value = numForm+1;

???

Merci d'avance pour la réponse!!!! et désolé, je comprends pas tout tout en php....
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
3 sept. 2008 à 15:36
je bug avec :

onclick="javascript:add(document.getElementById("num['.$i.']").value)"

niarf niarf
0
adaro2000 Messages postés 46 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 28 octobre 2008 2
3 sept. 2008 à 15:51
Slt.

Tu dis avoir des problèmes avec :

onclick="javascript:add(document.getElementById('num['.$i.']').value);"

?

C'est normal. Si l'id de l'élément est la valeur de l'élément de la table num[], ce n'est pas là la meilleure façon de l'indiquer à Javascript. Tu affiche le contenu de cet élément dans le getElementById. Je ne pense pas que le nom de ton élément soit num[un_chiffre].

Merci.
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
3 sept. 2008 à 16:34
"tu vas recreer le champs num avec la valeur+1 passé en argument"

J'ai été trop bête pour pas avoir compris le passage en argument...par contre, num avec la valeur+1...euh po compris....

j'avais pas vu la réponse...

en faite là pour le coup, ce qui buguer sur "onclick="javascript:add(document.getElementById("num['.$i.']").value)""
c'était une question de ";" qui faisait planté mon code, par contre, je comprends toujours pas la logique de mettre le truc en paramètre pour que je puisse récupérer le dernier numForm d'ajouté...
0
mouf13 Messages postés 142 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 22 février 2011 17
3 sept. 2008 à 16:45
Oui je me suis mal exprimé.

ce champs hidden te sert de reference pour chacun des formulaires que tu vas generer
add(1);
add(2);
add(3);
...

add(numForm) {
var num = document.createElement('input');
num.type = 'hidden';
num.name = 'num[numForm+1]';
num.value = numForm+1;
}

et dans ton bouton d'ajout tu recupere la valeur du derniere input hidden : num

autre chose tu peux utiliser des tableaux
MPG4 <input type="radio" name="codage0" value="mpg4" class="OPTION" />
MPEG2 <input type="radio" name="codage0" value="mpg2" class="OPTION" />

a mon avis ca sera moins chiant :
MPG4 <input type="radio" name="codage[]" id="codage[]" value="mpg4" class="OPTION" />
MPEG2 <input type="radio" name="codage[]" id="codage[]" value="mpg2" class="OPTION" />
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
3 sept. 2008 à 18:02
rebonjour,

j'ai fait dans FormInsert.php

<?php 
	$i = 1;
	$html = '<form method = "post" action = "#">'.
			'<input type = "hidden" name = "num['.$i.']" value = "'.$i.'"/>'.
			'<input type="button" id="ajt0" name="ajout0" value="ajouter" style="display:none" onclick="javascript:add(document.getElementById("num['.$i.']").value;)"/>'.
			'</form>';
			//
	echo $html; 
	?>


et dans forms.js

        var numForm = 1;
	var contentDivName = "formulaires";
    
	function add(numForm)
	{
	 var num = document.createElement('input');

         var contentForm = document.createElement('input');
		/* Retrieve fieldSet from the page */
         var conteneur   = document.getElementById(contentDivName);
        
               /* Create elements that we need into the new form to add  */
         var undiv      = document.createElement('div');
		
	 var MonCodage = document.createTextNode("Codage : ");
	 var MonMpg4 = document.createTextNode("MPG4 ");
	 var mpg4        = document.createElement('input');
	 var MonMpeg2 = document.createTextNode("MPEG2 ");
	 var mpeg2 = document.createElement('input');
			 
	 var but = document.createElement('input');
		 
	 num.type = 'hidden';
         num.name = 'num';
         num.value = 'num[numForm+1]'; ; 
         num.id = numForm+1;
 
	contentForm.type = 'hidden';
	contentForm.name = numForm;
         chaine.type   = 'text';
	mpg4.type   = 'radio';
	mpg4.name = 'codage'+numForm;
	mpg4.value = 'mpg4';
	mpeg2.type   = 'radio';
	mpeg2.name = 'codage'+numForm;
	mpeg2.value = 'mpeg2';
	
         but.type   = 'button';
         but.value  = 'Supprimer le formulaire';

        // Implement delete function on the button
         but.onclick = function()
		 {
        	// Element to remove
        	 lediv      = this.parentNode;
        	// Element parent
        	 lefieldset   = lediv.parentNode;
        	// Remove the element
        	 lefieldset.removeChild(lediv);
         }

        /* Append elements (new form) into the page */
		 undiv.appendChild( document.createElement('br') );
		 undiv.appendChild(num);	
		undiv.appendChild(contentForm);	 
		
		 undiv.appendChild(MaChaine);
		 undiv.appendChild(chaine);
		 
		 undiv.appendChild( document.createElement('br') );
		 
		 undiv.appendChild(MonCodage);
		 undiv.appendChild(MonMpg4);
		 undiv.appendChild(mpg4);
		 undiv.appendChild(MonMpeg2);
		 undiv.appendChild(mpeg2);
		 
		  undiv.appendChild( document.createElement('br') );
		 
		 undiv.appendChild(but);
		 
		  
         conteneur.appendChild(undiv);
		 
		 numForm++;
	}



Mais mon bouton ajouter marche pas.....comment celà se faisse???
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
4 sept. 2008 à 10:38
	<?php 
	$i = 1;
	$html = '<form method = "post" action = "#">'.
			'<input type = "hidden" name = "num['.$i.']" value = "'.$i.'"/>'.
			'<input type="button" id="ajt0" name="ajout0" value="ajouter" style="display:none" onclick="javascript:add(document.getElementById("num['.$i.']").value;)"/>'.
			'</form>';
			//
	echo $html; 
	?>


Il ne faudrait pas que le $i passe à un moment à 2 ou à 3?????
0