|
|
|
|
[php/mysql] Mise a jour d'une table
Dernière réponse le 26 mai 2008 à 19:56:59 antic80, le 18 avr 2006 à 11:55:11Bonjour
voila j'ai une table Classe avec 3 champs Id, Nom, Nb
il y a 22 enregistrements
je dois pouvoir affiché sur la meme feuille les 22 enregistrements sous la forme Nom NB
avec le Nb qui s'affiche dans une zone de saisie
une fois les nouveaux nb saisie en cliquant sur un bouton je lance une feuille miseajour.php qui dois me mettre a jour la feuille complete c a dire qu'elle dois faire le tour des 22 valeurs affichés et mettre a jour la table
probleme j'arrive a afficher mes enregistrements mais je n'arrive pas a envoyer le tout vers la feuille miseajour pour effectué les mises a jour
Alors voila le code de la page qui affiche les infos de la table
<!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 |
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
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 :) Zep3k!GnO On est des rangers mec, des rangers... |
Re
<?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());
}
?>
|
Enfin, bon la dans l'esprit t'aurais pu la voir la faute de synthaxe dans la chaine :P
$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 ? ! Zep3k!GnO On est des rangers mec, des rangers... |
Ok merci c vrai j'ai un peu de mal quand il s'agit de melanger des choses j'ai pas trop l'habitude
|
En fait ce que je fais c'est que je concatène les 2 valeur -> donc 20 1 -> 201
|
Le probleme est pas d'additionner mais de mettre a jour
|
Oki donc ca veut dire que mon truc ne fonctionne pas... :(
$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 Zep3k!GnO On est des rangers mec, des rangers... |
Le résultat est le meme
<!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());
}
?>
|
Normal, ici je pense que ca coince.... il faut mettre
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... Zep3k!GnO On est des rangers mec, des rangers... |
En affichant la requete j'obtient ca
|
Répondre à wiwimagique
|

