Update bdd en utilisant des array et balise selct de form

Résolu
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007 - 1 mai 2005 à 10:24
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007 - 21 mars 2006 à 14:35
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 select.
Le nom des select est variable car j'utilise un array
1er select


echo('<select name= "classe[]" style="font-size: 10px;">'
);

echo ( '<option value ="BEP1">BEP1</option>'
);

.....

2eme select (avec boucle for) 1988<$i<2006


echo('<select name = "annee[]" style= "font-size: 10px;">'
);

echo ( "<option value ='"
.$i
."'>"
.$i
."</option>"
);

echo('</select>'
);

Mon probleme concerne l'update que je veux faire dans la bdd.
Je n'arrive pas à récupérer toutes les valeurs des 2 array classe[] et annee[]


$sql
=
("UPDATE lh_classe SET "
. $annee
[0]." = '"
.$classe[0]
. "' WHERE id= '5'"
);
$req
= mysql_query
($sql
)
or die
( mysql_error
()
)
;

Comment je dois faire ?
Merci

4 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 mai 2005 à 13:47
Hello, une boucle.
Si tes 2 tableaux ont le meme nombre d'entrees :
foreach ($annee as $clef = > $valeur) {
$sql =
( "UPDATE lh_classe SET "
. $valeur
." ='"
.$classe[$clef]
."' WHERE id= '5'"
);
$req
= mysql_query
($sql
)
or die
( mysql_error
()
)
;
}
3
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
1 mai 2005 à 18:15
Merci de ta réponse,

Ta methode semble fonctionner si je fais un echo(".$valeur."= '". $classe[$clef] ."');
J'obtiens bien la liste des années avec la classe correspondante.
Pourtant lorsque je lance la requête, j'ai toujours une erreur de syntaxe :

Check the manual that corresponds to your MySQL server version for the right syntax to use near '2000 ='TBPR' WHERE id='5''
La requête prend uniquement en compte la valeur de la dernière année.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 mai 2005 à 10:22
D'ailleurs desole c'est ma requete qui est fausse lol, je ne voulais pas mettre $valeur, j'etais un peu a la masse.
0
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
21 mars 2006 à 14:35
Je reprends la discussion car j'ai encore des problèmes.
La structure ne change pas

mon form :
<select name= class[]>
<option value=classe1>classe1</option>
<option value=classe2>classe2</option>
...
<select name=annee[]>
<option value=2000>2000</option>
<option value=2001>2001</option>
...

ma table lh_classe (en voici une copie)
CREATE TABLE `lh_classe` (
`id` int(4) NOT NULL default '0',
`nom` varchar(50) NOT NULL default '',
`prenom` varchar(50) NOT NULL default '',
`photo` varchar(50) NOT NULL default 'sans.jpg',
`1988` varchar(5) NOT NULL default '',
`1989` varchar(5) NOT NULL default '',
`1990` varchar(5) NOT NULL default '',
`1991` varchar(5) NOT NULL default '',
`1992` varchar(5) NOT NULL default '',
`1993` varchar(5) NOT NULL default '',
`1994` varchar(5) NOT NULL default '',
`1995` varchar(5) NOT NULL default '',
`1996` varchar(5) NOT NULL default '',
`1997` varchar(5) NOT NULL default '',
`1998` varchar(5) NOT NULL default '',
`1999` varchar(5) NOT NULL default '',
`2000` varchar(5) NOT NULL default '',
`2001` varchar(5) NOT NULL default '',
`2002` varchar(5) NOT NULL default '',
`2003` varchar(5) NOT NULL default '',
`2004` varchar(5) NOT NULL default '',
`2005` varchar(5) NOT NULL default '',
`2006` varchar(5) NOT NULL default '',
`2007` varchar(5) NOT NULL default '',
`2008` varchar(5) NOT NULL default '',
`2009` varchar(5) NOT NULL default '',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM;

ma requete après validation du formulaire
foreach ($annee as $clef => $valeur) {$req mysql_query ( "UPDATE lh_classe SET " .<gras>$valeur." </gras>'".$classe[$clef]."' WHERE id='".$_SESSION['id']."'");
}
ou $valeur correspond à une année et $classe[$clef] correspond à une classe
Malheureusement rien ne se passe ou du moins, aucune valeur varible ne passe !!!
Ca me prend la tête....
0
Rejoignez-nous