Aller au contenu

ne modifie qu'une seule ligne d'un tableau et pas les autres


oceane751

Sujets conseillés

bonjour à tous

voilà j'ai un petit soucis.

j'aimerais pouvoir modifier des données dans un tableau mais seule la derniere ligne peut etre modifiée.

voici la 1ere page :

<?
session_start();

$identifiant = $_GET['id'];
$_SESSION['identifiant'] = $identifiant;
$select = "SELECT nom, prenom, adresse, ville FROM client WHERE id_cli = '".$identifiant."'";
$querselect = mysql_query($select);
$fetchselect = mysql_fetch_array($querselect);

$com = "SELECT num_com FROM passer WHERE id_cli = '".$identifiant."'";
$quercom = mysql_query($com);
$fetchcom = mysql_fetch_array($quercom);



$select1 = "SELECT ref_produit, quantite, total FROM panier WHERE id_cli = '".$identifiant."'";
$querselect1 = mysql_query($select1);

echo " <form method='post' action='donneemodif2.php'>

<table border = 1>
<tr>
<td>N° commande</td>
<td>reference </td>
<td>designation</td>

<td>quantite</td>
<td>total produit</td>
<td>date de livraison</td>
<td>etat de livraison</td>
<td><center><b>Modif</center></b></td>
<tr>";

while ($fetchselect1 = mysql_fetch_array($querselect1))
{

$select2 = "SELECT designation_produit, prix_produit FROM produit WHERE ref_produit = '".$fetchselect1['ref_produit']."'";
$querselect2 = mysql_query($select2);
$fetchselect2 = mysql_fetch_array($querselect2);



$num = "SELECT num_com FROM passer WHERE id_cli = '".$identifiant."'";
$quernum = mysql_query ($num);
$fetchnum = mysql_fetch_array($quernum);

$num1 = "SELECT num_livr FROM lign_livr WHERE num_com = '".$fetchnum[0]."'";
$quernum1 = mysql_query ($num1);
$fetchnum1 = mysql_fetch_array($quernum1);



$livraison = "SELECT date_livr, etat_livr FROM livraison WHERE num_livr = '".$fetchnum1[0]."'";
$querlivr = mysql_query($livraison);
$fetchlivr = mysql_fetch_array($querlivr);




echo "<tr>";

echo "<input type= 'hidden' name='num_livr' value='".$fetchnum1['num_livr']."' >";
echo "<input type= 'hidden' name='ref_produit' value='".$fetchselect1['ref_produit']."' >";
echo "
<td>".$fetchcom['num_com']."</td>
<td> ".$fetchselect1['ref_produit']."</td>
<td> ".$fetchselect2['designation_produit']."</td>

<td> ".$fetchselect1['quantite']."</td>
<td>".$fetchselect1['total']."</td>
<td><input type = 'text' maxlength = '9' size = '9' name = 'date_livr' value = '".$fetchlivr['date_livr']."' ></td>
<td><input type = 'text' name = 'etat_livr' value = '".$fetchlivr['etat_livr']."'></td>
<td><input type='submit' name= 'sub_form' value= 'modifier' /></td>

</tr>";
$_SESSION['fetchselect1'][0] = $fetchselect1[0];
$_SESSION['fetchselect2'][0] = $fetchselect2[0];
$_SESSION['fetchselect2'][1] = $fetchselect2[1];
$_SESSION['fetchselect1'][1] = $fetchselect1[1];
$_SESSION['fetchselect1'][2] = $fetchselect1[2];


}



echo "<a href = 'administration.php'>Retour</a>";

}
?>

puis la page où il ya la requete de mise à jour pour els champs 'date_livr' et 'etat_livr'

<?
session_start();

echo "<html>
<title>Clients</title>
<font size = +2><center>Commande des clients</font></center>";
$identifiant = $_SESSION['identifiant'];
$subform = $_POST['sub_form'];
$ref = $_POST['ref_produit'];
$num = $_POST['num_livr'];
$etat = $_POST['etat_livr'];
$date = $_POST['date_livr'];

echo $_POST['date_livr'] ."date livr<br>";
echo $_POST['etat_livr']."etat livr<br>";
echo $_POST['num_livr']."num livr<br>";
echo $_POST['ref_produit']."Ref_produit<br>";

if(isset($_POST['sub_form']))
{
echo "Condition 1 vérifiée<br>";


if($_POST['sub_form']=="modifier")
{

echo "Condition 2 vérifiée<br>";

$sql = "UPDATE livraison SET date_livr = '".$_POST['date_livr']."', etat_livr = '".$_POST['etat_livr']."' WHERE num_livr = '".$_POST['num_livr']."' ";
echo $sql."<br>";
$res = mysql_query($sql) or die (mysql_error());
$fet = mysql_affected_rows();



}
}



echo "Modification pour le client N° ".$identifiant." effectuée";
echo "<a href = administration.php>Retour</a>";
}
?>

franchement je vois pas pourquoi j'ai ce problème alors pouvez vous m'aider?

merci beaucoup d'avance...

Modifié par oceane751
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Jai lu tes deux codes, et je ne pourrais pas te dire exactement ce qui ne va pas, car il me manque plusieurs choses. Premièrement la structure de tes tables (on ne dit pas tableau lorsqu'il s'agit d'une table dans une base de données, le mot tableau est utilisé pour une structure en PHP par exemple) et comment elles sont liées. Deuxièmement, la requête qui pose problème. J'ai compris que c'était celle-là :

	  $sql = "UPDATE livraison SET date_livr = '".$_POST['date_livr']."', etat_livr = '".$_POST['etat_livr']."' WHERE num_livr = '".$_POST['num_livr']."' ";

Mais, comme tu l'affiches, donne-nous un exemple des valeurs...

Ensuite, peut-être te fies-tu à ton application pour ce qui est de voir le résultat (l'entrée modifiée), mais peut-être que c'est à l'affichage qu'il y a un problème. Donc vérifie tes données une fois la modification effectuée directement dans la base de données (avec PhpMyAdmin ou un autre programme de gestion de base de données).

Finalement, lorsque tu insères ou mets à jour des données dans une table, utilise la fonction mysql_real_escape_string pour les valeurs ventant de la part de l'utilisateur. C'est une question de sécurité, à noter également que lorsqu'il s'agit d'un nombre ou d'un id (numérique) n'entoure pas la variable par des guillemets simples ('), MySQL fait la conversion lors de la requête si tu le fais, mais à quoi bon, si tu sais que tu parles d'une valeur numérique, ne la lui présente pas comme une chaîne de caractères.

Lien vers le commentaire
Partager sur d’autres sites

As tu besoin d'autant de requètes pour faire ton traitement ?

C'est en marge de ta question mais il doit y'avoir moyen d'optmiser tout cela :)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...