Problème récupération de données formulaire

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 : Problème récupération de données formulaire

Re: Problème récupération de données formulaire

par moogli » 13 janv. 2013, 12:20

Salut,

Tu créer autant de formulaire que tu as d'article, sans jamais les fermer donc la je pense qu'il te fournit l'info du dernier article ?

La solution c'est d'utiliser la notation tableau dans le nom des champs input comme ça tu aura un tableau à parcourir avec les infos souhaitées.
Pour garder la liaison avec l'article tu peux mettre la clef primaire (souvent appelée id) comme index du tableau.

Par exemple <input type="text" name="article[412]" />
Où 412 est la clef primaire correspondant à l'article courant.

Côté validation tu récupère un tableau dans $_POST['article'], que tu va parcourir avec une boucle foreach

Par exemple
<?php
foreach($_POST['article'] as $idArticle => $qtCmd ){
// la validation, insertion dans une table ou autre
}
?>
La base de ton code d'affichage :

- Affichage de l'entête du formulaire (<form etc etc>)
- Affichage de l'entête de la table
- tant qu'il y a des résultat (boucle while)
- affiche la ligne de tableau
- avec un input de ce style echo '<input type="text" name="article['.$data['id']].'" />';
- fin while
- fin Table
- input submit
- fin formulaire

Pour info, ta requête sql ne devrait pas contenir de prédicat dans la jointure (idTruc=412) mais dans une clause where.

Sur la première ligne tu suppose qu'il y a une info commande dans l'url mais tu ne peux en être certain utilise un if isset (ou empty) pour être que qu'il soit présente dans l'url sinon ça risque de mettre le brin ;)


@+

Problème récupération de données formulaire

par fonsgr » 11 janv. 2013, 22:14

Bonjour, j'ai besoin d'aide pour une récupération de données dans un formulaire j'ai mis un code commenté et j'explique mon problème en dessous (Je ne sais pas si il faut faire comme ça, c'est mon premier post sur un forum d'entraide pour une demande (donc, au cas ou, excusez moi ^^)
<body>
//Ici je recupere mon numero de commande (pour l'acces à la BD)
<?php $id_commande = $_GET['command'];?> 
//Je regarde si il y a un critère de tri de ma table
	<?php if(isset($_GET['critere'])) {
	
		switch($_GET['critere']) {
			case "ref_mpa": $critere = "reference_mpa"; break;
			case "libelle": $critere = "libelle_mpa"; break;
			case "description": $critere = "description_mpa"; break;
			default: $critere = "reference_mpa";		
		}	
	} else {
		$critere = "reference_mpa";	
	}
	//Je selectionne les produits (MPA) necessaires pour ma commande
		$sql = "SELECT mpa.reference_mpa, mpa.libelle_mpa, mpa.description_mpa, mpa_commande.id_mpa, mpa_commande.id_commande
		FROM mpa INNER JOIN mpa_commande ON mpa_commande.id_commande = $id_commande AND mpa_commande.id_mpa = mpa.id_mpa
		ORDER BY $critere";
		$mpa1 = $connect->query($sql) or die ($sql);?>

//J'affiche ma table
<table>
	<thead>
		<tr>
			<th><a  href="?critere=ref_mpa">Référence MPA<a/></th>
			<th><a  href="?critere=libelle">Libéllé</a></th>
			<th><a  href="?critere=description">Description</a></th>
			<th>Quantité</a></th>
		</tr>
	</thead>
	<?php 
		while($mpa = $mpa1->fetch()) {
	?>
		<tr class="row1">
			<td><?php echo $mpa['reference_mpa']; ?></td>
			<td><?php echo $mpa['libelle_mpa']; ?></td>
			<td style="text-align:center"><?php echo $mpa['description_mpa']; ?></td>
  //Pour chaque MPA j'affiche une zone de texte que l'utilisateur va remplir avec les quantitées nécessaire pour chaque produit (non connu a l'avance)
			<td style="text-align:center"><form action="formulaire.php" method="post"><input type="text" name=<?php$mpa1['id_mpa']?>
		</tr>
		<?php 
		?>
</table>

<input type="submit" value="Valider" />
//Bouton pour valider le formulaire
</form>
</body>
Mon problème est qu'il me faut récupérer la valeur de chaque zone de texte (sachant qu'on ne connait pas le nombre de textarea) afin de stocker chaque résultat dans ma BDD en l'associant avec sa MPA.
Cela fait 3 jours que je suis dessus et j'ai vraiment besoin d'aide :)
Merci d'avance pour vos réponses.