begin process at 2012 05 31 10:43:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

toujours un pb de foreach...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

toujours un pb de foreach...

dimanche 1 mai 2005 à 18:29:35 | toujours un pb de foreach...

arnold002

Bonjour à tous,

J'ai toujours un pb d'update de bdd lorsque j'utilise l'argument foreach.

foreach ($annee as $clef => $valeur) {
echo("".$valeur."='".$classe[$clef]."'<br>");
}


cela me renvoit un couple de données année=classe par ex
1994=2DE
1995=1ERE
1996=TALE
....
Ca fonctionne avec un echo mais dans la requête

foreach ($annee as $clef => $valeur) {
$sql = ("UPDATE lh_classe SET $valeur='".$classe[$clef]."'");
$req
= mysql_query($sql) or die( mysql_error() ) ;
}


Ca s'arrête à la première itération et me renvoi une erreur de syntaxe mysql.
Je ne vois pas du tout ce qui cloche ??
Merci de votre aide.

lundi 2 mai 2005 à 10:20:54 | Re : toujours un pb de foreach...

malalam

Administrateur CodeS-SourceS
Hello again,

$sql = ("UPDATE lh_classe SET $valeur='".$classe[$clef]."'");

est faux.
A la place de $valeur dans ta requete tu dois avoir un nom de champ! La ta requete ne veut rien dire.
Tu veux mettre a jour un champ...et ce champ ne s'appelle surement pas $valeur.

lundi 2 mai 2005 à 15:39:30 | Re : toujours un pb de foreach...

arnold002

Bonjour,

Le pb, c'est que $valeur prend le nom de chaque année du select, qui lui même est défini lors par l'envoi d'un précédent form.
je m'explique :
1er form

année d'arrivee ($arrivee) = par ex 1994
année de départ ($départ) = par ex 2000
submit le form

2ème form construit à partir du 1er
$min = $_POST['$arrivee'];
$max = $_POST['$depart'];

for($i=$min; $i <=$max; $i++){
<select name="année[]>
<option value='$i'>$i</option>
</select>
}

dans la bdd, chaque champ porte le nom d'une année entre 1988 et 2005, mais je ne connais pas le nom des champs lorsque j'utilise la requête update.
c'est pour ça que $valeur est nécessaire.
En l'occurence, l'update fonctionne mais j'ai une syntaxe un peu bizarre :

$sql = 'UPDATE `lh_classe` SET `'.$valeur.'` = "'.$classe[$clef].'" WHERE `id` = '.$resultat['id'].'';
$req
= mysql_query($sql) or die( mysql_error() ) ;



lundi 2 mai 2005 à 16:10:35 | Re : toujours un pb de foreach...

malalam

Administrateur CodeS-SourceS
Ah ok je n'avais pas pige du tout :-)

Ta syntaxe est normale en fait. C'est bien ce qu'il faut faire.

lundi 2 mai 2005 à 16:13:49 | Re : toujours un pb de foreach...

arnold002

merci de ton aide en tout cas ;-)
lundi 2 mai 2005 à 16:27:28 | Re : toujours un pb de foreach...

willowman

Salut a toi !

- Peux-tu nous montrer le resultat d'un echo "<br>$sql</br>" pour chaque requete générée ?
(juste un echantillon)

- Egalement le message d'erreur que te renvois Mysql ??

Merci a+

lundi 2 mai 2005 à 16:36:12 | Re : toujours un pb de foreach...

arnold002

Voila le résultat du echo"$sql";

UPDATE `lh_classe` SET `nom` = "Damez",`prenom` = "gilles",`1998` = "BEP1" WHERE `id` = 5UPDATE `lh_classe` SET `nom` = "Damez",`prenom` = "gilles",`1999` = "BEP1" WHERE `id` = 5UPDATE `lh_classe` SET `nom` = "Damez",`prenom` = "gilles",`2000` = "BEP1" WHERE `id` = 5UPDATE `lh_classe` SET `nom` = "Damez",`prenom` = "gilles",`2001` = "BEP1" WHERE `id` = 5UPDATE `lh_classe` SET `nom` = "Damez",`prenom` = "gilles",`2002` = "BEP1" WHERE `id` = 5

Sachant que j'insère aussi un nom et un prénom récupérer sur une autre table pour un id récupéré lui aussi sur une autre table.

Quant au message d'erreur il est de cette forme (très classique) :

Check the manual that corresponds to your MySQL server version for the right syntax to use near '1998='BEP1' WHERE id='5''

lundi 2 mai 2005 à 17:08:01 | Re : toujours un pb de foreach...

malalam

Administrateur CodeS-SourceS
Je n'avais pas compris que tu avais encore des erreurs !

$sql = 'UPDATE `lh_classe` SET `'.$valeur.'` = "'.$classe[$clef].'" WHERE `id` = '.$resultat['id'];
lundi 2 mai 2005 à 17:19:56 | Re : toujours un pb de foreach...

arnold002

je n'ai plus de message d'erreur mais la requête (comme tu peux le voir) contient des quote à l'envers .
en fait lorsque je fais :
$sql = "UPDATE 'lhclasse' SET ".$valeur." = '".$classe[$clef]."' WHERE id='".$resultat['id']."'");
Ca ne fonctionne pas et me retourne l'erreur indiquée ds le message précédent.
Du coup, j'ai consulter la bdd, et fait un update bidon pour voir la syntaxe.
la requête que tu m'as fournie est bonne mais n'est pas acceptée par le serveur pour des histoires de quote à l'envers. J'ai donc fait un copier/coller et modifié les valeurs qui m'intéressaient.
C la 1ère fois que je rencontre ce pb et j'avoue que je ne comprends pas pourquoi !!!


Cette discussion est classée dans : valeur, classe, toujours, clef, foreach


Répondre à ce message

Sujets en rapport avec ce message

Problème foreach [ par nougitch ] Bonsoir,Je souhaites updater ma table en fonction de 3 variables, à savoir la ligne, la colonne et la cellule.J'ai suivi ce que m'a dit Anthomicro ave besoin d'aide sur du code [ par ASPerix ] Quelqu'un peut-il m'expliquer ce que fait le code suivant:foreach($HTTP_POST_VARS as $clé => $valeur) { if ($clé == "TxtLogin") { $Login = $ Clef "dynamique" de tableau + php [ par dawda ] Bonsoir, J'ai un petit souci de tableaux. je cherche a remplir les clefs et les valeurs associés d'un tableau avec des elements qui proviennent d'un Tableau multidimensionnel/AJAX/PHP/SQL [ par noun3t ] Bonjour, Je viens vers vous aujourd'hui pour vous faire part d'un soucis quelque peu ennuyant. Je génère un formulaire via javascript et l'utilisatio Php - foreach pour construire une requête multicritères [ par lolo479 ] Bonjour, j'essai de contruire dynamiquement une requête mais je n'arrive pas à ce que le "AND" s'écrive au bon endroit !!! Si qq'un à une idée je suis Formulaire avec select et update de bdd mysql [ par arnold002 ] Bonjour à tous,J'ai un formulaire qui contient 2 champs de type select : classe et annee.Je veux associer chaque classe à chaque année et ensuite fair passage de variables de form vers bdd mysql [ par arnold002 ] Bonjour,Mon problème n'avance pas...Mon form contient 2 champs select for($i<FONT color=#008000 s update bdd en utilisant des array et balise selct de form [ par arnold002 ] Bonjour à tous,J'espère que quelqu'un pourra m'éclairer sur ce point.Je veux associer une année à une classe à l'aide d'un formulaire utilisant 2 sele synthetiser 2 clauses foreach() [ par arnold002 ] J'utilise 2 foreach et je voudrai les synthetiser pour que le resultat du premier corresponde au resultat du 2èmeVoici le code de départ foreach($anne Récupérer la valeur d'une liste déroulante [ par didine6 ] Bonjour @ tous ! J'ai une liste déroulante remplie à partir d'une requête. Je fais mon choix que je valide par un bouton submit. Je voudrais, sur cett


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales