Aller au contenu

modifier des données mysql


invite

Messages recommandés

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

Tu peux très bien modifier tout un lot de données avec phpMyAdmin. :transpi:

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...