Page 1 sur 1

Foreach et formulaire petit probleme d'insertion dans SQL

Posté : 07 févr. 2008, 12:41
par fabien_14
Bonjour,

J'affiche un formulaire qui m'intégre mes champs en fonction d'une requete SQL aprés l'envoi de SUBMIT sa m'insere cela dans ma base de donnée, Evidement le nombre de champs est variable puisqu'il dépent d'une requete SQL

Mon probleme est que cela ne marche pas avec foreach.

voici mon code :

Code : Tout sélectionner

<form method="post" name="post"> <?php $result = mysql_query("SELECT * FROM defaut WHERE idligne = $_GET[ligne]"); while ($c=@mysql_fetch_array($result)) { echo "$c[nom] : <input type=\"text\" name=\"commentaire\" size=\"27\" ><input type=\"equipe\" name=\"equipe\" size=\"27\" ><br>"; } ?> <input type="submit" class="bouton" value=" Envoyer " name="submit"> </form>


Code : Tout sélectionner

if ($_POST['submit'] == TRUE) { foreach(??????????) { $date = date('Y/m/d H:i:s'); $sql = mysql_query(" INSERT INTO rec SET equipe = '$equipe',commentaire = '$commentaire',date = '$date' ") or die( mysql_error()); } }

Voila si qlq peux me donner un coup de main sur le foreach.

Je vous remercie :)

Posté : 07 févr. 2008, 13:00
par Truc
A chaque passage de boucle(construction du formulaire) tu auras des champs input au meme attribut name "commentaire".
Ajoute des [] à cet attribut pour en faire un tableau pour le parcourir par la suite à l'aide de foreach()
foreach($_POST['commentaire'] as $com)

Posté : 07 févr. 2008, 17:06
par fabien_14
Merci sa marche trés bien :)

Cependant j'ai oublié un champs et il me faudrai rajouter le champs "defaut" a la boucle foreach

J'ai essayé cela mais sans résultat :

foreach($_POST['commentaire']['defaut'] as $com)
{

Merci de votre aide.

Posté : 07 févr. 2008, 17:12
par d0m
Tu veux dire quoi par
rajouter le champs "defaut" a la boucle foreach
?

Posté : 07 févr. 2008, 17:19
par fabien_14
Pareil que "commentaire" je dois ajouter defaut dans mon formulaire.

<input type="text" name="iddefaut[]" size="27">

C'est pour prendre en compte cela dans la boucle foreach car je n'arrive pas a l'inserer a ma table via la requete SQL.

EDIT :

J'ai essayé ceci mais cela ne marche pas non plus

foreach ($_POST['commentaire']['iddefaut'] as $key => $value) {
$commentaire = $_POST['commentaire'][$key];
$defaut = $_POST['iddefaut'][$key];






Merci de vos réponse :)

Posté : 07 févr. 2008, 17:39
par d0m
Déjà tu pourrais utiliser les balises code et php pour rendre le post plus lisible. C'était un supplice de te lire.

D'après ce que tu dis, tes champs iddefaut sont liés à tes champs commentaires.

Une fois ton formulaire soumis, tu auras 2 tableaux dans ta variable POST :
$_POST['iddefaut'] et $_POST['commentaires']
Si tes input sont crées en parallèle (dans le même ordre et en même nombre), tu peux les parcourir simultanement en utilisant un des deux dans le foreach et parcourir l'autre avec la cle:
foreach($_POST['commentaire'] as $cle => $com){
  $commentaire = $com;
  $defaut      = $_POST['iddefaut'][$cle];
}
Ca revient en gros à ce code là :
for($i=0;$i<count($_POST['commentaire']);$i++){
  $commentaire = $_POST['commentaire'];
  $defaut      = $_POST['iddefaut'][$cle];
}