formulaire JS PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : formulaire JS PHP

par Ben-J » 28 juin 2006, 16:44

merci beaucoup Ryle d'avoir pris le temps de résoudre cette question bête lool j'avoue que je n'avais pas tout a fait saisi le principe, la c'est bon. thanks!!

par Ryle » 28 juin 2006, 15:04

Nope tu ne peux pas foreacher plusieurs tableau en même temps (enfin pas à ma connaissance), mais tu peux faire un simple for() et utiliser le compteur pour appeller les index de chaque tableau.

Par exemple :
for($i = 0; $i < count($selectsemaine) ; $i++) { // pour $i allant de 0 jusqu'au nombre d'élément dans le premier tableau
  echo "Enregistrement n°" . $i ." : <br>"; // affiche le compteur

  echo " - Semaine : " . $selectsemaine[$i] ."<br>"; // affiche l'élément $i du tableau
  echo " - Mission : " . $selectmission[$i] ."<br>"; 
  echo " - Libellé : " . $libmis[$i] ."<br>";
  ...
}

par Ben-J » 28 juin 2006, 14:09

Question subsidiaire: est-il possible de faire défiler plusieurs tableaux dans la même boucle foreach, du style
foreach($_POST["X"] as $X && $_POST[Y] as $Y && ...); ?
(j'ai testé, ça ne marche pas, mais j'avais peut etre un problème de syntaxe, si la chose est possible évidemment)

par Ben-J » 28 juin 2006, 11:23

désolé du retard ^^

Code : Tout sélectionner

selectsemaine : Array ( [0] => 0 [1] => 10 [2] => 14 ) selectmission : Array ( [0] => 0 [1] => 4 [2] => 5 ) libmis : Array ( [0] => [1] => srtujsr [2] => qdfgbsqghq ) nom1mis : Array ( [0] => 0 [1] => Espace ILS numero 2 [2] => Scenic numero 1 ) ...
voila pour le print_r d'une partie de mes champs :wink:

mon script dtable.js :
window.onload = dtableInit;

/* initialise le script */
function dtableInit() {
	var table = document.getElementsByTagName('TABLE');
	for ( var i = 0; i < table.length; i++ ) {
		// on récupère tous les tableaux dynamiques
		if ( table[i].className == 'TABLE' ) {
			var tbody = table[i].tBodies[0];
			var newTr = tbody.rows[0].cloneNode(true);
			
			// on masque la première ligne du tbody (la ligne de reference)
			tbody.rows[0].style.display = 'none';
			
			// on en ajoute une
			tbody.appendChild(newTr);
		}
	}
}

/* trouve le tag "parentTagName" parent de "element" */
function getParent(element, parentTagName) {
	if ( ! element )
		return null;
	else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
		return element;
	else
		return getParent(element.parentNode, parentTagName);
}

/* ajoute une ligne */
function addLigne(link) {
	// 1. récuperer le node "TABLE" à manipuler
	var td = link.parentNode;
	var table = getParent(td,'TABLE');
	
	// 2. on va manipuler le TBODY
	var tbody = table.tBodies[0];
	
	// 3. on clone la ligne de reference
	var newTr = tbody.rows[0].cloneNode(true);
	tbody.appendChild(newTr);
	
	if ( document.all )  // pour IE
		newTr.style.display = "block";
	else
		newTr.style.display = "table-row"; // pour Gecko
}

/* supprimer une ligne */
function delLigne(link) {
	// 1. récuperer le node "TABLE" à manipuler
	var td = link.parentNode;
	var table = getParent(td, 'TABLE');
	
	// 2. récuperer le TBODY
	var tbody = table.tBodies[0];
	
	// 3. Supprimer le TR
	tbody.removeChild(getParent(td, 'TR'));
}
et dans ma page où est le formulaire :
<table class="TABLE" >
	<thead>
		<tr>
			<td><div align="center"><a href="#" onclick="addLigne(this); return false;">Ajouter une mission</a></div></td>
			<td><div align="center"><input type=submit value="Sauvegarder" name="saveresavehic"></div></td>
			<td><div align="center"><input id="voirplanning" name="voirplanning" value="Créer le planning" type=submit></div></td>
			
		</tr>

	</thead>

	<tbody>
		<tr>
		  	<td>
		  		<div align="center">
				<select name="selectsemaine[]">
					<option value=0>---</option>
					'; 
					for ($i=1; $i<=52; $i++)
					{ echo '<option value="'.$i.'">'.$i.'</option>';};
					echo'
				</select>
				</div>
		  	</td>
			<td>
				<div align="center">
					<select name="selectmission[]">
						<option value=0>-----</option>
						<option value=1>1</option>
						<option value=2>2</option>
                                                ...
						<option value=9>9</option>
						<option value=10>P1</option>
						<option value=11>P2</option>
					</select>
				</div>
			</td>
			<td>
				<div align="center">
      				<input type="text" name="libmis[]">
    			</div>
			</td>
			<td>
				<div align="center">
      				<select name="vehicmis[]">';
	  				$requetev = "select * from vehicules order by codevehic";
					$resultat = mysql_query($requetev);
					$ligne = mysql_fetch_assoc($resultat); echo'*/
					<option value=0>--------------------------------</option>';
					while ($ligne)
					{
					echo '<option value="'.$ligne["nomvehic"].'">'.$ligne["nomvehic"].'</option>';
					$ligne = mysql_fetch_assoc($resultat);
					}
					echo '
					</select>
				</div>
			</td>
			<td valign="middle">
				<div align="center">
					<p></p>
					<select name="nom1mis[]">
					';
					$requeten1 = "select * from users order by nomuser;";
					$resultatn1 = mysql_query($requeten1);
					$ligne = mysql_fetch_assoc($resultatn1);echo'
					<option value=0>--------------------------------</option>';
					while ($ligne)
					{
						echo '<option value="'.$ligne["login"].'">'.$ligne["prenomuser"].'  '.$ligne["nomuser"].'</option>';
						$ligne = mysql_fetch_assoc($resultatn1);
					}
					echo'
					</select>
					<p></p>
					<select name="nom2mis[]">';
		  			$requeten2 = "select * from users order by nomuser;";
					$resultatn2 = mysql_query($requeten2);
					$ligne = mysql_fetch_assoc($resultatn2); echo'
					<option value=0>--------------------------------</option>';
					while ($ligne)
					{
						echo '<option value="'.$ligne["login"].'">'.$ligne["prenomuser"].'  '.$ligne["nomuser"].'</option>';
						$ligne = mysql_fetch_assoc($resultatn2);
					}
					echo '					
					</select>
					<p></p>
				</div>
			</td>
(je n'ai pas tout mis, je pense qu'il y a suffisamment de lecture, déja ^^)
comment avoir accès a l'index? (je sais, c'est peut-être une question a la c** mais bon...)
en tout cas merci d'avance

par Ryle » 28 juin 2006, 10:11

Pourquoi des foreach imbriqués ? Un seul foreach suffit pour parcourir les colonnes de ton tableau, ensuite ce sont les index qui te permettent d'accéder aux données de chaque colonnes :)

Ce que je ne vois pas très bien c'est sous quelle forme tu récupères le tableau javascript en php... tu nous met un p'tit peu de code et un print_r pour qu'on voit à quoi ressemble le tableau que tu récupères ? :)

formulaire JS PHP

par Ben-J » 27 juin 2006, 14:40

bonjour !
bon je vais essayer d'expliquer clairement mon problème:

j'ai un formulaire dans un tableau de plusieurs colonnes, où un script JS permet d'ajouter ou de supprimer des lignes; une ligne devrait correspondre à un enregistrement dans la base. Le script JS permet de stocker les réponses de chaque ligne, dans un tableau par colonne.
Malheureusement je n'arrive pas à boucler correctement pour ma requête d'insertion : en faisant des foreach imbriqués de chaque propriété(ou colonne) j'obtiens un grand nombre d'enregistrements dû a toutes les possibilités. Je n'ai pas accès a la variable indice, puique le tableau est en JS.
Comment réaliser un seul enregistrement par ligne?
D'autre part, comment ne pas prendre en compte la valeur 0 du tableau?
Merci d'avance !