Forum Clubic

Récupérer la derniere valeur de "numForm"

Bonjour,

je viens pour savoir si quelqu’un pourrait m’aider, ma requête est plus plutôt simple, mais je vais d’abord vous exposer les faits simplifier au maximum :

j’ai 2 boutons =>

<input type="button" id="ajt0" name="ajout0" value="ajouter" style="display:none" onclick="javascript:add()" >
<input type="submit" id="Soumettre" name="Soumettre" value="Soumettre" />

fonction add()
-elle permet d’ajouter un formulaire, un nombre illimité de formulaire est possible

var numForm = 1;
	var contentDivName = "formulaires";
    
	function add()
	{
		 
		    /* 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 contentForm = document.createElement('input');
		 
		 var MaChaine = document.createTextNode("Chaine : ");
		 var chaine        = document.createElement('input');
                 
                 contentForm.type = 'hidden';
		 contentForm.name = numForm;
                 chaine.type   = 'text';

                 undiv.appendChild(contentForm);	 
		
		 undiv.appendChild(MaChaine);
		 undiv.appendChild(chaine);

                conteneur.appendChild(undiv);
		 
		 numForm++;
	}
     

requête:
ce que j’aimerais pouvoir faire maintenant, c’est récupérer le dernier numForm.

Comment faire??? ça à l’air si simple que je bloque dessus.

Merci d’avance pour votre aide!!!
Edité le 04/09/2008 à 16:18

Ton composant existe : chaine

Essaye un truc du genre:

var numForm = 1;
var monComposant = null;

var chaine = document.createElement(‘input’);
monComposant = chaine;

  1. monComposant contiendra en principe le dernier composant généré

Mais je ne veux pas le dernier composant, je veux juste le dernier numForm

le plus simple serait peut être que je mette tous le code mais ça risque de faire long, mais bon, j’essaie

premiere page formInsert.php


<title>Test FormInsert</title>
</head>
<?php
include "Test-Forms.js";
?>
<body>
<form id="formInsert" name="formInsert" method="post" action="reg.php">
<input type="hidden" name="envoie" value="1" />
	<div id="formListDeroul">
		<label>
		<select name="listDerou" size="1" id="select" >
			<option value="select" onclick="selectionner()">------Selectionner------</option>
			<option value="auto" id="auto" onclick="auto()" >Auto</option>
			<option value="manuel" onclick="manuel()">Manuel</option>
		</select>
		</label>
	</div>
    <br />
	<div id="formSelectAuto" style="display:none">
		Permanent <input type="radio" name="selectAuto" value="permanent" class="OPTION" />
	<br>
		Temporaire <input type="radio" name="selectAuto" value="temporaire" class="OPTION" />
		<input name="adrauto" type="text" id="adrAuto" value="<?php
										include("connect.php");
										$ip = "224.0.1.0";
										if(Connecter())
										{
											$MonSQL= "SELECT * FROM information ORDER BY Multicast";
											$CurseurMulticast = mysql_query($MonSQL);
											$UnMulticast = GetLigne($CurseurMulticast);
											while($UnMulticast)
											{
												$suivante = long2ip(ip2long($ip)+1);
												if($UnMulticast["Multicast"]==$ip)
												{
													$ip=$suivante;
												}
												$UnMulticast = GetLigne($CurseurMulticast);
											}
											echo $ip;
											//return $ip;
										}?>" size="30" />
	<br />
    </div>
    
	<div id="formSelectMan" style="display:none">
		<input name="adrman" type="text" id="adrMan" value="Entrez l'adresse" size="15" />
        <input name="vue" type="button" value="Vérifier" onclick="verif()" />
	</div>
	<br />
	<label> Port <input name="port" type="text" id="port" value="" size="8" /> </label>
<p>
	<LABEL>Type : </LABEL>
		MPTS <input type="radio" name="type" value="mpts" class="OPTION" onClick="javascript:MPTS()"/>
		SPTS <input type="radio" name="type" value="spts" class="OPTION" onClick="javascript:SPTS()">

	<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" />
</body>

forms.php

<script type="text/Javascript">
    
    function auto()
    {
        document.getElementById('formSelectAuto').style.display = 'block';		
        document.getElementById('formSelectAuto').style.visibility = 'visible';
		document.getElementById('formSelectMan').style.display = 'none';
		 
		
    }
    
    function manuel()
    {
        document.getElementById('formSelectAuto').style.display = 'none';
		document.getElementById('formSelectMan').style.display = 'block';		
        document.getElementById('formSelectMan').style.visibility = 'visible';

    } 
	
	function verif()
	{
		var expr = /^(((22[4-9]|23[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.)((25[0-4]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]))$)/;
		var chaine = document.getElementById('adrMan').value ; 
		if(!expr.exec(chaine))
			{
			alert('adresse non valide : sélectionnez une adresse entre 224.0.1.0 et 239.254.254.254');
 			champ.focus();
			}
			else
			{alert('adresse valide')}
	}
    
    function MPTS()
    {
        document.getElementById('ajt0').style.display = 'block';
        document.getElementById('ajt0').style.visibility = 'visible';
        document.getElementById('formulaires').style.visibility = 'visible';
		
    }
    
        function SPTS()
    {
        document.getElementById('ajt0').style.display = 'none';
        document.getElementById('ajt0').style.visibility = 'hidden';
        document.getElementById('formulaires').style.visibility = 'hidden';
		
    }
    
	var numForm = 1;
	var contentDivName = "formulaires";
    
	function add()
	{
		 
		/* 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 contentForm = document.createElement('input');
		 
		 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 = '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';
		 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);
		 
		 numForm++;
		 
	}
	return numForm;
</script>

et la page final
reg.php

<?php
include "connect.php";
include "Test-Forms.js";
if(Connecter())
{
	$select = $_POST['listDerou'];
	if($select == 'auto')
	{
		$ip = $_POST['adrauto'];
		$temp = $_POST['selectAuto'];
	}
	else
	{
		$ip = $_POST['adrman'];
		$temp = " ";
	}

	$port = $_POST['port'];
	$type = $_POST['type'];
	
	$i = 1;
	
	if($type == 'spts')
	{
		$req = "INSERT INTO information (Multicast, Port, Type, Chaine, Codage, Definition, Systeme, Permanent) VALUES('".$ip."','".$port."','".$type."','".$_POST['chaine0']."','".$_POST['codage0']."','".$_POST['def0']."','".$_POST['syst0']."','".$temp."')";
		$result=mysql_query($req);
	}
	else
	{
		while($i <=[b] $dernierNumForm[/b])
		{
			if (isset($_POST[$i]))
			{
				$req = "INSERT INTO information (Multicast, Port, Type, Chaine, Codage, Definition, Systeme, Permanent) VALUES('".$ip."','".$port."','".$type."','".$_POST['chaine'.$i]."','".$_POST['codage'.$i]."','".$_POST['def'.$i]."','".$_POST['syst'.$i]."','".$temp."')";
				$result=mysql_query($req);
			}
			$i++;
		}
	}
}

c’est par le dernier numForm que je remplacer $dernierNumForm, on a proposé de faire un return, mais je ne sais pas le récupérer, et s’il est au bon endroit.

Voilà, vous avez toutes les données maintenant, vous pouvez tester chez vous, et voir ce que j’attend en faite.

Merci encore

Je vois.

Au choix

Tu changes tes noms de champs vers des trucs genre monInput[] ->

Et dans ton code JS, tu change: contentForm.name = “monInput[]”;

Et au niveau php:

if (isset($_POST['monInput'])) foreach ($_POST['monInput'] as $index => $table) {
  ...
}

Quand tu mets des [] dans un nom de formulaire, ça crée automatiquement un tableau.

quand tu parles de

c’est par exemple remplace mes

mpg4.type   = 'radio';
		 mpg4.name = 'codage[]';
		 mpg4.value = 'mpg4';
		 mpeg2.type   = 'radio';
		 mpeg2.name = 'codage[]';
		 mpeg2.value = 'mpeg2';

ou en crée un nouveau? par exemple

num.type   = 'hidden';
num.name = 'num[]';

Désolé, j’arrive pas à visualiser exactement ce que tu me dis, mais merci pour ton aide!!!

En gros, ta problématique, c’est que tu génères des champs de formulaire à la volée via DOM (document.createElement), ok ?

Ensuite, tu veux gérer ce formulaire depuis PHP, mais tu ne sais pas ce qui a été généré, et donc en gros, dans ta boucle :

while($i <=$dernierNumForm) {
			if (isset($_POST[$i])) {
				$req = "INSERT INTO information (Multicast, Port, Type, Chaine, Codage, Definition, Systeme, Permanent) VALUES('".$ip."','".$port."','".$type."','".$_POST['chaine'.$i]."','".$_POST['codage'.$i]."','".$_POST['def'.$i]."','".$_POST['syst'.$i]."','".$temp."')";
				$result=mysql_query($req);
			}
			$i++;
		}

Il te manque la façon de déterminer $dernierNumForm.

Donc au choix:

  1. un champ de formulaire $dernierNumForm que dans ta fonction javascript add() tu mets à jour (dans le genre document.getElementById(‘dernierNumForm’).value = numForm;

  2. soit tu utilises PHP et la génération de tableau en fonction des noms des formulaires.

Si par exemple le nom est foobar[machin][] alors PHP générera dans le tableau $_POST, cette valeur :

$_POST['foobar'] = array(
   'foobar' => array(
      0 => 'valeur1', ... // ce que l'utilisateur a rentré
   )
);

Donc, ce que je te dis, c’est d’utiliser cette technique pour que dans PHP, tu n’ai qu’à parcourir ton tableau $_POST[‘codage’] (ou autre).

Voilà.

Si tu ne piges pas, teste sur un petit formulaire, genre et avec une page php simple, qui fait un <?php echo '

'; var_dump($_POST); echo '
'; ?> Tu verras tout de suite, je pense.

D’accord, en faite, ta première solution c’est ce que je voulais faire à la base, d’où mon contentForm.name = numForm;
Mais sotte comme je suis, je ne me suis pas rendu compte qu’il fallait mettre contentForm.value = numForm (et pas name).

dnoc du coup j’ai fait dans mon js :

nbNumForm.type = 'hidden';
nbNumForm.name = 'dernierNumForm';
nbNumForm.value = numForm;
		 
leNumForm.type = 'hidden';
leNumForm.name = numForm;

et dans mon reg.php

$i = 0;
		$dernierNumForm = $_POST['dernierNumForm'];
		echo $dernierNumForm;
		while($i <= $dernierNumForm)
		{
		echo '<br>';echo $i;
			if ((isset($_POST[$i])) || ($i==0))
			{
				echo '$_POST['.$i.']';
				$req = "INSERT INTO information (Multicast, Port, Type, Chaine, Codage, Definition, Systeme, Permanent) VALUES('".$ip."','".$port."','".$type."','".$_POST['chaine'.$i]."','".$_POST['codage'.$i]."','".$_POST['def'.$i]."','".$_POST['syst'.$i]."','".$temp."')";
				$result=mysql_query($req);
				if($result)
				{
					echo '<br>';
					echo "insertion réussi pour ".$ip.' '.$port.' '.$type.' '.$_POST['chaine'.$i].' '.$_POST['codage'.$i].' '.$_POST['def'.$i].' '.$_POST['syst'.$i].' '.$temp;
				}
				else{
				echo '<br>';echo"c'est de la merde";
				}
			}
			$i++;
		}

ici mes echo, c’est juste pour tester si les bons paramètre sont entrés. mais je suis contente!!! les bonnes données, sont entré au bons endroits.

Merci beaucoup pour votre aide!!!