Page 1 sur 1
Faire une boucle sur des variable POST
Posté : 29 juin 2008, 11:51
par ma_pomme
Bonjour, Bonsoir,
Donc voila mon problème j'ai une vingtaine de champs dans mon formulaire qui ne seront pas forcement tous remplis et pour traité ces champs je voulais faire une boucle pour ne pas forcement vérifier les champs vide. Puis par la suite les envoyé en liste dans ma bdd.
Mes champs son nommé in0, in1, in2, etc... jusqu'à 19
j'ai essayé plein de chose comme considérer les variables comme un tableau dans la boucle sans réussite.
Merci bcp de votre aide par avance
Posté : 29 juin 2008, 12:20
par katagoto
Je tenterais un truc comme ça :
$i=0;
foreach($_POST as $clef => $valeur){
if(!isset($_POST[$clef]) OR empty $_POST[$clef]) $i++;
}
if($i>0) die("un champ n'est pas remplis");
Chaque fois qu'un champs n'est pas remplis, j'incrémente $i...
Le problème, c'est qu'il faudrait vérifier le nombre de champs et leurs nom :
if(!in_array($clef, $tableau_champs)) die ("champs inéxistant");
else unset($tableau_champs[$clef]); // Pour pas avoir deux fois le même champs
Posté : 29 juin 2008, 14:43
par ma_pomme
en faite je ne veux traiter QUE les champs remplie par l'utilisateur pour ne pas insérer des partie vide dans ma bdd et ne pas me taper des conditions pour tout ces champs.
j'avais pensé faire un truc genre array ($in[0], $in[1], etc..) mais ça ne passe pas en POST a moins que l'on puisse validé l'array avant l'envoie du formulaire

Posté : 29 juin 2008, 15:47
par iclo
Hum, un peu confus ton problème...
Pour tester si un champ est vide, tu as la fonction empty()
Posté : 29 juin 2008, 16:05
par ma_pomme
oui je sais j'ai un peu de mal a expliqué mon soucis lol
je vais essayé d'être le plus clair possible :s (pas évident)
j'ai ce formulaire
<table align="center" width="100%">
<tr><td colspan="2" align="center">
<h2>Ajout de recette</h2></td></tr>
<form action="ajout_recette_traitement.php" enctype="multipart/form-data" method="post">
<tr><th>
Nom :
</th>
<th><input type="text" name="nom"></th></tr>
<tr></tr>
<tr><th>Ingrédients nécessaires :</th>
<th><input type="text" name="in0"> <input type="text" name="in1"> <input type="text" name="in2"> <input type="text" name="in3"> <input type="text" name="in4"> <input type="text" name="in5"> <input type="text" name="in6"> <input type="text" name="in7"> <input type="text" name="in8"> <input type="text" name="in9"> <input type="text" name="in10"> <input type="text" name="in11"> <input type="text" name="in12"> <input type="text" name="in13"> <input type="text" name="in14"> <input type="text" name="in15"> <input type="text" name="in16"> <input type="text" name="in17"> </th></tr>
<tr></tr>
<tr><th>Style :</th>
<th>Végétalien<input type="radio" name="style" value="V"><br />Végétarien<input type="radio" name="style" value="v"><br />Diététique<input type="radio" name="style" value="d"><br />Classique <input type="radio" name="style" value="c"></th></tr>
<tr></tr>
<tr><th>Economique :</th>
<th>€ € €<input type="radio" name="eco" value="3"><br />€ €<input type="radio" name="eco" value="2"><br />€<input type="radio" name="eco" value="1"></th></tr>
<tr></tr>
<tr><th>Rapidité :</th>
<th>* * *<input type="radio" name="rap" value="3"><br />* *<input type="radio" name="rap" value="2"><br />*<input type="radio" name="rap" value="1"></th></tr>
<tr></tr>
<tr></tr>
<tr><th>Liste des ingrédients détaillée :</th>
<th><textarea name="ingr_det" cols="80" rows="10" size="80" ></textarea></th></tr>
<tr></tr>
<tr><th>Façon :</th>
<th><textarea name="facon" cols="80" rows="10" size="80"></textarea></th></tr>
<tr></tr>
<tr><th></th>
<th><input type="submit" value="Envoyer"></th></tr>
Pour les champs des ingredients nécessaires je voudrais savoir s'il est possible de faire de façon simple un traitement sans ce tapé une ou deux ligne par ingredient avec juste un chiffre qui change
Posté : 30 juin 2008, 10:20
par guilt92
Tu peux utiliser la boucle for pour générer ton code html :
par exemple :
<form name="formulaire">
<?php
for($i=1;$i<20;$i++)
{
?>
<input type="text" name="champ_<?php echo $i;?>"/>
<?php
}
?>
</form>
Cela créera un formulaire avec les champs "champ_1", "champ_2"... jusqu'a champ_19.
Sinon si tu veux faire pareil avec des noms personnalisés tu peux stocker ces noms dans un tableau et utiliser la même procédure.
J espere que cela t aidera.
Posté : 30 juin 2008, 19:10
par ma_pomme
oui merci c'est ce que je vais faire
