invite Posté(e) le 17 janvier 2007 Partager Posté(e) le 17 janvier 2007 Bonjour, je voudrais éditer les données d'une base mysql dans un tableau, de façon à pouvoir modifier les données directement. Je ne sais pas si je m'exprime correctement, disons que si j'utilise phpmyadmin par exemple, je ne peux modifier les donnes que ligne par ligne, avec enregistrement à chaque fois, ce qui fait que quand il y a beaucoup de lignes à modifier c'est fastidieux. Voici le code de mes deux pages, qui ne fonctionne pas des qu'il y a plusieurs lignes ( je comprend bien qu'il s'agit de l'identifiant de l'enregistrement qui n'est plus unique, mais je ne vois pas comment faire): Page essai.php: <html> <head> <TITLE>Modifications de données</TITLE> </head> <body> <? $identifiant= $_POST['identifiant']; include "apel.php"; $db=mysql_connect($mysql_host,$mysql_login,$mysql_pass); mysql_select_db($mysql_dbnom,$db); $demande = "SELECT * from $table1 WHERE $table1.code='$identifiant' ORDER BY reference,commentaire"; $result = mysql_query($demande); $i = 0; ?> <table with="100%" border="1" cellpadding="2" cellspacing="2"> <TR> <TD>code_piece</TD> <TD>commentaire</TD> <TD>N° photo</TD> <TD>id_piece</TD> <TD>poids</TD> <TD>lot</TD> </TR> <? while ($val = mysql_fetch_array($result)) { $v_code_piece = mysql_result($result,$i,"code_piece"); $v_commentaire = mysql_result($result,$i,"commentaire"); $v_reference = mysql_result($result,$i,"reference"); $v_id_piece = mysql_result($result,$i,"id_piece"); $v_poids = mysql_result($result,$i,"poids"); $v_lot = mysql_result($result,$i,"lot"); ?> <form method="post" action="essai1.php"> <tr> <TD><input type="varchar" name="code_piece" value="<? echo "$v_code_piece";?>" maxlength="30"><br></TD> <TD><input type="varchar" name="commentaire" value="<? echo "$v_commentaire";?>" maxlength="30"><br></TD> <TD><input type="varchar" name="reference" value="<? echo "$v_reference";?>" maxlength="4"><br></TD> <TD><input type="varchar" name="id_piece" value="<? echo "$v_id_piece";?>" maxlength="5"><br></TD> <TD><input type="varchar" name="poids" value="<? echo "$v_poids";?>" maxlength="3" size="3"><br></TD> <TD><input type="varchar" name="lot" value="<? echo "$v_lot";?>" maxlength="2" size="2"><br></TD> </tr> <? $i++; } ?> </table> <input type="submit" name="submit" value="Enregistrer"> </form> </body> </html> page essai1.php: <html> <head></head> <body bgcolor="#bceed5" text="#757575"> <? include "apel.php"; $db=mysql_connect($mysql_host,$mysql_login,$mysql_pass); mysql_select_db($mysql_dbnom,$db); $code_piece=$_POST['code_piece']; $commentaire=$_POST['commentaire']; $reference=$_POST['reference']; $idpiece=$_POST['id_piece']; $poids=$_POST['poids']; $lot=$_POST['lot']; echo "$code_piece"; // on écrit la requête sql $sql = "UPDATE catalogue SET code_piece='$code_piece',commentaire='$commentaire',reference='$reference',id_piece='$idpiece',poids='$poids',lot='$lot' WHERE id_piece='$idpiece'"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo 'Les modifications ont bien été enregistrées.'; mysql_close(); ?> <P> <A href="essai0.php">Retour</A> </body> </html> Voila, d'avance merci beaucoup à ceux qui pourront me donner une piste ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Quarky Posté(e) le 17 janvier 2007 Partager Posté(e) le 17 janvier 2007 Tu peux très bien modifier tout un lot de données avec phpMyAdmin. Il te suffit d'afficher les valeurs de ta table, de tous les sélectionner (Check all ou Tout sélectionner en bas) et de faire Modifier. Tu auras alors un panneau de modification de l'ensemble des données avec une seule et unique validation après changement. Pas besoin de faire un script pour ça. PS : n'oublies pas la balise , pour faciliter la lecture. Lien vers le commentaire Partager sur d’autres sites More sharing options...
invite Posté(e) le 17 janvier 2007 Auteur Partager Posté(e) le 17 janvier 2007 Merci, en fait je connais cette fonction, mais quand on a pas mal de chant ce n'est pas commode, car peut lisible et donc peu rapide (affichage en formulaire). Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 17 janvier 2007 Partager Posté(e) le 17 janvier 2007 Déjà, pour la partie suivante : <? while ($val = mysql_fetch_array($result)) { $v_code_piece = mysql_result($result,$i,"code_piece"); $v_commentaire = mysql_result($result,$i,"commentaire"); $v_reference = mysql_result($result,$i,"reference"); $v_id_piece = mysql_result($result,$i,"id_piece"); $v_poids = mysql_result($result,$i,"poids"); $v_lot = mysql_result($result,$i,"lot"); ?> <form method="post" action="essai1.php"> <tr> <TD><input type="varchar" name="code_piece" value="<? echo "$v_code_piece";?>" maxlength="30"><br></TD> <TD><input type="varchar" name="commentaire" value="<? echo "$v_commentaire";?>" maxlength="30"><br></TD> <TD><input type="varchar" name="reference" value="<? echo "$v_reference";?>" maxlength="4"><br></TD> <TD><input type="varchar" name="id_piece" value="<? echo "$v_id_piece";?>" maxlength="5"><br></TD> <TD><input type="varchar" name="poids" value="<? echo "$v_poids";?>" maxlength="3" size="3"><br></TD> <TD><input type="varchar" name="lot" value="<? echo "$v_lot";?>" maxlength="2" size="2"><br></TD> </tr> <? $i++; } ?> Je ferais plutôt comme ça : <? while ($val = mysql_fetch_array($result)) { $i=1; $v_code_piece = $val['code_piece']; $v_commentaire = $val['commentaire']; $v_reference = $val['reference']; $v_id_piece = $val['id_piece']; $v_poids = $val['poids']; $v_lot = $val['lot']; ?> <form method="post" action="essai1.php"> <tr> <TD><input type="varchar" name="code_piece<?=$i;?>" value="<? echo "$v_code_piece";?>" maxlength="30"><br></TD> <TD><input type="varchar" name="commentaire<?=$i;?>" value="<? echo "$v_commentaire";?>" maxlength="30"><br></TD> <TD><input type="varchar" name="reference<?=$i;?>" value="<? echo "$v_reference";?>" maxlength="4"><br></TD> <TD><input type="varchar" name="id_piece<?=$i;?>" value="<? echo "$v_id_piece";?>" maxlength="5"><br></TD> <TD><input type="varchar" name="poids<?=$i;?>" value="<? echo "$v_poids";?>" maxlength="3" size="3"><br></TD> <TD><input type="varchar" name="lot<?=$i;?>" value="<? echo "$v_lot";?>" maxlength="2" size="2"><br></TD> </tr> <? $i++; } <input type="hidden" name="nb_lignes" value="<?=$i-1;?>" /> > Et pour la partie traitement, tu fais égale au nombre de lignes à traiter (contenu dans $_POST['nb_lignes'] ) avec une boucle FOR. Par exemple : FOR($cpt=1;$cpt<$_POST['nb_lignes'];$cpt++) { [TON TRAITEMENT] } Tu vois le principe ? Edit : j'avais pas fait gaffe sur le coup, mais ta balise FORM, tu dois la mettre avant ton TABLE, parce que là, tu te retrouve avec n ouvertures de FORM et une seule fermeture. Bref, y'a pas mal de trucs à revoir... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.