Probleme d'ecriture d'un foreach dans une bouche while
Nomadique
Messages postés
6
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour,
je bute sur un problème dans un script PHP. la ligne "foreach" donne un erreur.
Je comprend que c'est le compteur [$i] qui cause le problème mais je ne trouve pas la solution )) 0;
Voici le code:
et la source dans un <form>
EDIT : Ajout dans LANGAGE dans les balises de code
je bute sur un problème dans un script PHP. la ligne "foreach" donne un erreur.
Je comprend que c'est le compteur [$i] qui cause le problème mais je ne trouve pas la solution )) 0;
Voici le code:
if (isset($_POST['modifier'])){
$nbr=count($_POST['id']);
$i=0;
$x=1;
while($x <= $nbr){
foreach($_POST['couleur'][$i] as $lescouleurs){
$liste_couleur[$i] .= "".$lescouleurs.","; }
$sql = "UPDATE produit SET section=\"".$_POST['section'][$i]."\",titre=\"".$_POST['titre'][$i]."\",texte=\"".$_POST['texte'][$i]."\", prix=\"".$_POST['prix'][$i]."\", dispo=\"".$_POST['dispo'][$i]."\", ordre=\"".$_POST['ordre'][$i]."\",couleur = \"".$liste_couleur[$i]."\" WHERE id_produit=\"".$_POST['id'][$i]."\"";
$resultat = mysql_query($sql) or die("Désolé la mise à jour ne fonctionne pas");
$i++;
$x++;
}}
et la source dans un <form>
// ======= LES COULEURS =========
if($ligne_produit['section'] == '6'){
$sql_couleur=mysql_query("SELECT * FROM couleur ORDER BY titre ASC");
while($ligne_couleur=mysql_fetch_array($sql_couleur)){
//CHECK
$thecouleur=explode(',',$ligne_produit['couleur']);
if(in_array($ligne_couleur['id_couleur'], $thecouleur)) { $check = "checked"; } else {$check = "";}
echo "<img width=15 src=../media/couleur/".$ligne_couleur['photo']."> ".$ligne_couleur['titre'].": <input valign=top type=checkbox name=couleur[] value=\"".$ligne_couleur['id_couleur']."\" ".$check."><br>";
}
}
EDIT : Ajout dans LANGAGE dans les balises de code
A voir également:
- Probleme d'ecriture d'un foreach dans une bouche while
- Écriture facebook - Guide
- Ecriture en gras - Guide
- Ecriture insta - Guide
- Écriture à l'envers miroir - Guide
- Police d'écriture bref ✓ - Forum Graphisme
1 réponse
Bonsoir,
Premier reflexe lorsqu'on a un souci... c'est de faire du debogage...
Ajoutes donc un PRINT de ta variable POST et regarde ce qu'elle contient.
Ensuite... il est fortement conseillé, avant toute utilisation de variable, de s'assurer qu'elle existe avec ISSET.
Et enfin... il semble que tu ais oublié les quotes autour de l'attribut name de ton INPUT
EDIT : ET des autres... tels que valign ... type.....
Cordialement,
Jordane
Premier reflexe lorsqu'on a un souci... c'est de faire du debogage...
Ajoutes donc un PRINT de ta variable POST et regarde ce qu'elle contient.
Ensuite... il est fortement conseillé, avant toute utilisation de variable, de s'assurer qu'elle existe avec ISSET.
if (isset($_POST['modifier'])){
// Le temps des tests
echo "<br> POST : <br>";
print_r($_POST);
$nbr=count($_POST['id']);
$i=0;
$x=1;
//utilisation de isset pour tester une variable.
$arrCouleur = isset($_POST['couleur'])?$_POST['couleur']:NULL;
while($x <= $nbr){
if($arrCouleur ){
foreach($arrCouleur[$i] as $lescouleurs){
$liste_couleur[$i] .= "".$lescouleurs.",";
}
}
$sql = "UPDATE produit
SET section=\"".$_POST['section'][$i]."\"
, titre=\"".$_POST['titre'][$i]."\"
, texte=\"".$_POST['texte'][$i]."\"
, prix=\"".$_POST['prix'][$i]."\"
, dispo=\"".$_POST['dispo'][$i]."\"
, ordre=\"".$_POST['ordre'][$i]."\"
,couleur = \"".$liste_couleur[$i]."\"
WHERE id_produit=\"".$_POST['id'][$i]."\"";
$resultat = mysql_query($sql) or die("Désolé la mise à jour ne fonctionne pas");
$i++;
$x++;
}
}
Et enfin... il semble que tu ais oublié les quotes autour de l'attribut name de ton INPUT
<input valign=top type=checkbox name=couleur[] value=\"".$ligne_couleur['id_couleur']."\" ".$check.">
EDIT : ET des autres... tels que valign ... type.....
<input valign='top' type='checkbox' name='couleur[]' value='".$ligne_couleur['id_couleur']."' ".$check.">
Cordialement,
Jordane