Foreach et formulaire petit probleme d'insertion dans SQL

Eléphant du PHP | 183 Messages

07 févr. 2008, 12:41

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 :)
_________
Fabien

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 févr. 2008, 13:00

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)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 183 Messages

07 févr. 2008, 17:06

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.
_________
Fabien

d0m
Mammouth du PHP | 1141 Messages

07 févr. 2008, 17:12

Tu veux dire quoi par
rajouter le champs "defaut" a la boucle foreach
?

Eléphant du PHP | 183 Messages

07 févr. 2008, 17:19

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 :)
_________
Fabien

d0m
Mammouth du PHP | 1141 Messages

07 févr. 2008, 17:39

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];
}