[php/mysql] Mise a jour d'une table
Résolu/Fermé
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
-
18 avril 2006 à 11:55
etudiante - 26 mai 2008 à 19:56
etudiante - 26 mai 2008 à 19:56
A voir également:
- [php/mysql] Mise a jour d'une table
- Mise a jour chrome - Accueil - Applications & Logiciels
- Table ascii - Guide
- Mise a jour windows 10 - Accueil - Mise à jour
- Table des matières word - Guide
- Mise a jour chromecast - Accueil - Guide TV et vidéo
17 réponses
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
18 avril 2006 à 14:01
18 avril 2006 à 14:01
alors voila le code de la page qui affiche les infos de la table
voici le code de la feuille de mise a jour
on m'a dis que dans le passage de la feuille fiche vers la feuille mise a jour je n'avais que 1 seul Nb pris en compte mais je n'arrive pas a m'en sortir
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" media="screen" href="style.css"> <title>Document sans titre</title> </head> <body> <?php if(isset($_POST['fiche'])) $fiche=$_POST['fiche']; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', ''); // on seléctionne la base mysql_select_db('lyceebai',$db); $rq="SELECT * FROM Classe"; $res=mysql_query($rq)or die('Erreur SQL !<br>'.$rq.'<br>'.mysql_error()); print '<form method="POST" action="miseajourbase.php">'; while($row = mysql_fetch_array($res)) { $Id=$row['Id']; $Lieu=$row['Nom']; $Nb=$row['Nb']; print"<label>$Lieu</label>"; print "<input name='Identifiant' type='hidden' value=$Id>"; print "<input type='text' name='nb' size='1' value='$Nb'></input>"; echo "<br />"; } echo "<br />"; print '<div align="center"><INPUT TYPE="SUBMIT" NAME="envoie" VALUE="Confirmer la validation du traitement"></div>'; print '</form>'; mysql_close(); ?> </body> </html>
voici le code de la feuille de mise a jour
<?php if(isset($_POST['nb'])) $Nb=$_POST['nb']; else $Nb=""; echo $fiche; echo $Nb; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', ''); // on seléctionne la base mysql_select_db('lyceebai',$db); // on crée la requete SQL for($i=1; $i<22;$i++){ $sql = "UPDATE Classe SET Nb = '$Nb' WHERE Id = '$i'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); } ?>
on m'a dis que dans le passage de la feuille fiche vers la feuille mise a jour je n'avais que 1 seul Nb pris en compte mais je n'arrive pas a m'en sortir
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
18 avril 2006 à 12:57
18 avril 2006 à 12:57
t'as fait ca comment ? t'as fait un form avec des input text ? ? ?
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
18 avril 2006 à 16:11
18 avril 2006 à 16:11
re
alors lors de la mise a jour j'ai ce message d'erreur
Erreur SQL !
UPDATE Classe SET Nb = '0'1 WHERE Id = '1'
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1 WHERE Id = '1'' at line 1
voici le code de la page mise a jour
alors lors de la mise a jour j'ai ce message d'erreur
Erreur SQL !
UPDATE Classe SET Nb = '0'1 WHERE Id = '1'
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1 WHERE Id = '1'' at line 1
voici le code de la page mise a jour
<?php if(isset($_POST['nb'])) $Nb=$_POST['nb']; else $Nb=""; // on se connecte à MySQL $db = mysql_connect('sql3', 'lyceebai', 'p8ybx63r'); // on seléctionne la base mysql_select_db('lyceebai',$db); // on crée la requete SQL for($i=1; $i<22;$i++){ $sql = "UPDATE Classe SET Nb = '$nb'".$i." WHERE Id = '$i'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); } ?>
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
18 avril 2006 à 16:36
18 avril 2006 à 16:36
enfin, bon la dans l'esprit t'aurais pu la voir la faute de synthaxe dans la chaine :P
OU
C'est pareil, c'est comme tu le sens...
Voilà, c'est bon la ? !
$sql = "UPDATE Classe SET Nb = '$nb".$i."' WHERE Id = '$i'";
OU
$sql = "UPDATE Classe SET Nb = '$nb$i' WHERE Id = '$i'";
C'est pareil, c'est comme tu le sens...
Voilà, c'est bon la ? !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
18 avril 2006 à 16:01
18 avril 2006 à 16:01
on m'a dis que dans le passage de la feuille fiche vers la feuille mise a jour je n'avais que 1 seul Nb pris en compte mais je n'arrive pas a m'en sortir
Oui c'ets tout à fait ça ,tu n'as qu'un seul Nb, c'est normal, regarde ça dans ta boucle :
Si par exemple t'as la combionaison id - nb suivante
id : 1 nb : 3
id : 2 nb : 4
id : 3 nb : 0
et que tu boucles la dessus tu arau avec ce que t'a écris :
Et la tu vois bien que tes 3 input ont le même nom ! Donc :
Affichera
et
et la je pense que ça devrait être bon... tu vois le délire ?!
Ah et puis faits attention dans la mise à jour t'écrivais $Nb pour récupérer ton champs de texte alor que son nom est 'nb' et sa valeur est fixé via Nb dans l'autre page.... a ne pas confondre.
Voilà , Bonne journée :)
Oui c'ets tout à fait ça ,tu n'as qu'un seul Nb, c'est normal, regarde ça dans ta boucle :
print "<input type='text' name='nb' size='1' value='$Nb'></input>";
Si par exemple t'as la combionaison id - nb suivante
id : 1 nb : 3
id : 2 nb : 4
id : 3 nb : 0
et que tu boucles la dessus tu arau avec ce que t'a écris :
<input type='text' name='nb' size='1' value='3'></input> <input type='text' name='nb' size='1' value='4'></input> <input type='text' name='nb' size='1' value='0'></input>
Et la tu vois bien que tes 3 input ont le même nom ! Donc :
pour l'affichage des infos de ta table : $cpt=0; while($row = mysql_fetch_array($res)){ $cpt++; .... print "<input type='text' name='nb'".$cpt." size='1' value='$Nb'></input>";
Affichera
<input type='text' name='nb1' size='1' value='3'></input> <input type='text' name='nb2' size='1' value='4'></input> <input type='text' name='nb3' size='1' value='0'></input>
et
pour la mise à jour : $sql = "UPDATE Classe SET Nb = '$nb'".$i." WHERE Id = '$i'";
et la je pense que ça devrait être bon... tu vois le délire ?!
Ah et puis faits attention dans la mise à jour t'écrivais $Nb pour récupérer ton champs de texte alor que son nom est 'nb' et sa valeur est fixé via Nb dans l'autre page.... a ne pas confondre.
Voilà , Bonne journée :)
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
18 avril 2006 à 16:45
18 avril 2006 à 16:45
ok merci c vrai j'ai un peu de mal quand il s'agit de melanger des choses j'ai pas trop l'habitude
par contre j'ai testé et ca ne marche tjs pas
dans ma table pour le champ nb je n'est mis que des 10
sur la page 1 j'obtient bien les noms avec la valeur 10
pour 2 enregistrements j'ai changer 10 par 20 et j'ai fais la mise a jour
si je recharge a nouveau la 1ere page j'obtient une modification de tout les champs sous la forme
201
202
203
204
205
206
207
208
.....
et ce jusqu'a
2021
merci encore a toi de me repondre
par contre j'ai testé et ca ne marche tjs pas
dans ma table pour le champ nb je n'est mis que des 10
sur la page 1 j'obtient bien les noms avec la valeur 10
pour 2 enregistrements j'ai changer 10 par 20 et j'ai fais la mise a jour
si je recharge a nouveau la 1ere page j'obtient une modification de tout les champs sous la forme
201
202
203
204
205
206
207
208
.....
et ce jusqu'a
2021
merci encore a toi de me repondre
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
18 avril 2006 à 17:12
18 avril 2006 à 17:12
en fait ce que je fais c'est que je concatène les 2 valeur -> donc 20 1 -> 201
si tu veux 21 au lei de faire $a$b (avec $a = 20 et $ b =1)
tu fais $a+$b et poOf...
Bref je te répond en speed car il faut que j'aille choper mon train ,revoit un peu ton truc et si ca ne marche toujours pas demain ,j'essaierai d'y jeter un cou d'oeil entre 2 trucs que je fais o taff....
bonne soirée. :P
si tu veux 21 au lei de faire $a$b (avec $a = 20 et $ b =1)
tu fais $a+$b et poOf...
Bref je te répond en speed car il faut que j'aille choper mon train ,revoit un peu ton truc et si ca ne marche toujours pas demain ,j'essaierai d'y jeter un cou d'oeil entre 2 trucs que je fais o taff....
bonne soirée. :P
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
18 avril 2006 à 17:16
18 avril 2006 à 17:16
le probleme est pas d'additionner mais de mettre a jour
sur la feuille si je prend le 1ere enregistrement ca valeur est de 10
je decide de changer la valeur est de mettre 20
dans ma table 10 doit etre remplacer par 20 lors de la mise a jour
ce qui implique que si après la mise a jour je recharge la 1ere page pour le 1ere enregistrement dois apparaitre la valeur 20
voila
sur la feuille si je prend le 1ere enregistrement ca valeur est de 10
je decide de changer la valeur est de mettre 20
dans ma table 10 doit etre remplacer par 20 lors de la mise a jour
ce qui implique que si après la mise a jour je recharge la 1ere page pour le 1ere enregistrement dois apparaitre la valeur 20
voila
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
19 avril 2006 à 09:33
19 avril 2006 à 09:33
okai je vois ou j'me suis pané :P
Chui pa sur à 100 % mais j'pense que ca devrait passer...
$var='nb'.$i; $sql = "UPDATE Classe SET Nb = '". $_POST['$var']."' WHERE Id = '$i'";
Chui pa sur à 100 % mais j'pense que ca devrait passer...
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
19 avril 2006 à 09:41
19 avril 2006 à 09:41
désolé d'etre chiant mais cette fois ci, si je modifie les valeurs et que je met a jour quand je reviens sur la 1ere feuille toutes les valeurs sont a 0
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
19 avril 2006 à 11:02
19 avril 2006 à 11:02
oki donc ca veut dire que mon truc ne fonctionne pas... :(
Ca y j'ai retrouvé comment faire , faur utiliser des variables dynamiques...
http://www.lephpfacile.com/cours/index.php?p=27
Attention, il faut que le premier s'appelle nb0, puis ensuite nb1,nb2..nb22 bref tu vois le truc, lma c'est testé ca devrait etre OP.
voici un pt'it exemple que j'ai fait pour que tu captes biens les variables dynamiques...
Voilà :D
Ca y j'ai retrouvé comment faire , faur utiliser des variables dynamiques...
http://www.lephpfacile.com/cours/index.php?p=27
$ZeVar='nb'.$i; $sql = "UPDATE Classe SET Nb = '". ${$ZeVar}."' WHERE Id = '$i'";
Attention, il faut que le premier s'appelle nb0, puis ensuite nb1,nb2..nb22 bref tu vois le truc, lma c'est testé ca devrait etre OP.
voici un pt'it exemple que j'ai fait pour que tu captes biens les variables dynamiques...
<?php $b0=2; $b1=3; $b2=0; for($i=0;$i<3;$i++) { $re='b'.$i; echo"b:".${$re}; } ?>
Voilà :D
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
19 avril 2006 à 11:24
19 avril 2006 à 11:24
le résultat est le meme
je te renvoie le code des 2 pages on ne sait jamais quelque fois que je me dsoit tromper
la page mise a jour
je te renvoie le code des 2 pages on ne sait jamais quelque fois que je me dsoit tromper
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" media="screen" href="style.css"> <title>Document sans titre</title> </head> <body> <?php if(isset($_POST['fiche'])) $fiche=$_POST['fiche']; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', ''); // on seléctionne la base mysql_select_db('lyceebai',$db); $rq="SELECT * FROM Classe"; $res=mysql_query($rq)or die('Erreur SQL !<br>'.$rq.'<br>'.mysql_error()); print '<form method="POST" action="miseajourbase.php">'; $cpt=0; while($row = mysql_fetch_array($res)) { $cpt++; $Id=$row['Id']; $Lieu=$row['Nom']; $Nb=$row['Nb']; print"<label>$Lieu</label>"; print "<input name='Identifiant' type='hidden' value=$Id>"; print "<input type='text' name='nb'".$cpt." size='1' value='$Nb'></input>"; echo "<br />"; } echo "<br />"; print '<div align="center"><INPUT TYPE="SUBMIT" NAME="envoie" VALUE="Confirmer la validation du traitement"></div>'; print '</form>'; mysql_close(); ?> </body> </html>
la page mise a jour
<?php if(isset($_POST['nb'])) $Nb=$_POST['nb']; else $Nb=""; echo $Nb[15]; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', ''); // on seléctionne la base mysql_select_db('lyceebai',$db); // on crée la requete SQL for($i=1; $i<22;$i++){ $ZeVar='nb'.$i; $sql = "UPDATE Classe SET Nb = '".${$ZeVar}."' WHERE Id = '$i'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); } ?>
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
19 avril 2006 à 13:49
19 avril 2006 à 13:49
Normal, ici je pense que ca coince.... il faut mettre
Sur ta page d'affichage, vérifie bien que la source, c'est
et puis dans ta page de mise à jour je te conseil d'afficher tes requetes histoire de pouvoir contrôler...
->
Et puis la ca devrait le faire...
P.S: sinon pour bien comprendre ce que je t'ai fait faire avec les variables dynamiques, lit le lien que je t'ai mis plus haut et fait tourner le p'tit code que j'ai join...
print "<input type='text' name='nb".$cpt."' size='1' value='$Nb'></input>";
Sur ta page d'affichage, vérifie bien que la source, c'est
<input type='text' name='nb1' size='1' value='taValeur'></input> <input type='text' name='nb2' size='1' value='taValeur'></input> ... <input type='text' name='nb22' size='1' value='taValeur'></input>
et puis dans ta page de mise à jour je te conseil d'afficher tes requetes histoire de pouvoir contrôler...
->
$sql = "UPDATE Classe SET Nb = '".${$ZeVar}."' WHERE Id = '$i'"; echo "<br/>".$sql;
Et puis la ca devrait le faire...
P.S: sinon pour bien comprendre ce que je t'ai fait faire avec les variables dynamiques, lit le lien que je t'ai mis plus haut et fait tourner le p'tit code que j'ai join...
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
19 avril 2006 à 14:14
19 avril 2006 à 14:14
en affichant la requete j'obtient ca
UPDATE Classe SET Nb = '' WHERE Id = '1'
UPDATE Classe SET Nb = '' WHERE Id = '2'
UPDATE Classe SET Nb = '' WHERE Id = '3'
UPDATE Classe SET Nb = '' WHERE Id = '4'
UPDATE Classe SET Nb = '' WHERE Id = '5'
UPDATE Classe SET Nb = '' WHERE Id = '6'
UPDATE Classe SET Nb = '' WHERE Id = '7'
UPDATE Classe SET Nb = '' WHERE Id = '8'
UPDATE Classe SET Nb = '' WHERE Id = '9'
UPDATE Classe SET Nb = '' WHERE Id = '10'
UPDATE Classe SET Nb = '' WHERE Id = '11'
UPDATE Classe SET Nb = '' WHERE Id = '12'
UPDATE Classe SET Nb = '' WHERE Id = '13'
UPDATE Classe SET Nb = '' WHERE Id = '14'
UPDATE Classe SET Nb = '' WHERE Id = '15'
UPDATE Classe SET Nb = '' WHERE Id = '16'
UPDATE Classe SET Nb = '' WHERE Id = '17'
UPDATE Classe SET Nb = '' WHERE Id = '18'
UPDATE Classe SET Nb = '' WHERE Id = '19'
UPDATE Classe SET Nb = '' WHERE Id = '20'
UPDATE Classe SET Nb = '' WHERE Id = '21'
UPDATE Classe SET Nb = '' WHERE Id = '1'
UPDATE Classe SET Nb = '' WHERE Id = '2'
UPDATE Classe SET Nb = '' WHERE Id = '3'
UPDATE Classe SET Nb = '' WHERE Id = '4'
UPDATE Classe SET Nb = '' WHERE Id = '5'
UPDATE Classe SET Nb = '' WHERE Id = '6'
UPDATE Classe SET Nb = '' WHERE Id = '7'
UPDATE Classe SET Nb = '' WHERE Id = '8'
UPDATE Classe SET Nb = '' WHERE Id = '9'
UPDATE Classe SET Nb = '' WHERE Id = '10'
UPDATE Classe SET Nb = '' WHERE Id = '11'
UPDATE Classe SET Nb = '' WHERE Id = '12'
UPDATE Classe SET Nb = '' WHERE Id = '13'
UPDATE Classe SET Nb = '' WHERE Id = '14'
UPDATE Classe SET Nb = '' WHERE Id = '15'
UPDATE Classe SET Nb = '' WHERE Id = '16'
UPDATE Classe SET Nb = '' WHERE Id = '17'
UPDATE Classe SET Nb = '' WHERE Id = '18'
UPDATE Classe SET Nb = '' WHERE Id = '19'
UPDATE Classe SET Nb = '' WHERE Id = '20'
UPDATE Classe SET Nb = '' WHERE Id = '21'
wiwimagique
Messages postés
481
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 avril 2006
108
19 avril 2006 à 14:41
19 avril 2006 à 14:41
$sql = "UPDATE Classe SET Nb = '".$_POST['nb'.$i]."' WHERE Id = '$i'"; echo "<br/>".$sql;
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
19 avril 2006 à 15:28
19 avril 2006 à 15:28
et mon
Pourquoi ça marche avec le tien et non avec cette synthaxe ? ? ? c'est à cause des ' ? ? de mon '$var' ? j'aurais du mettre juste $var ? ?
Bref tant mieux si ca fonctionne pour toi antic...
Pour ce qui est des sites, non pas du tout, a part le site MySQL... :D
Bonne fin de journée ;P
$var='nb'.$i; $sql = "UPDATE Classe SET Nb = '". $_POST['$var']."' WHERE Id = '$i'";??? c'est pas pareil ? ? ?
Pourquoi ça marche avec le tien et non avec cette synthaxe ? ? ? c'est à cause des ' ? ? de mon '$var' ? j'aurais du mettre juste $var ? ?
Bref tant mieux si ca fonctionne pour toi antic...
Pour ce qui est des sites, non pas du tout, a part le site MySQL... :D
Bonne fin de journée ;P
wiwimagique
Messages postés
481
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 avril 2006
108
>
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
20 avril 2006 à 11:30
20 avril 2006 à 11:30
Il aurait fallu faire
pour chaque $nb.
Le $$var est une très bonne astuce mais $nbX n'étaient pas initialisées :P
if(isset($_POST['nb'])) $Nb=$_POST['nb']; else $Nb="";
pour chaque $nb.
Le $$var est une très bonne astuce mais $nbX n'étaient pas initialisées :P
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
>
wiwimagique
Messages postés
481
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
20 avril 2006
20 avril 2006 à 13:37
20 avril 2006 à 13:37
Oki, merci :D
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
19 avril 2006 à 14:58
19 avril 2006 à 14:58
génial merci wiwimagique et aussi un grand merci a Zep3k!GnO
juste une derniere chose Zep3k!GnO tu aurais des sites qui expliquent justement ce genre de code soit pour le php ou MySQL
juste une derniere chose Zep3k!GnO tu aurais des sites qui expliquent justement ce genre de code soit pour le php ou MySQL