[php] mise à jour donnée et affichage

Fermé
oie - 27 mai 2006 à 02:22
carternets Messages postés 4 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 17 juillet 2008 - 15 juil. 2008 à 20:32
bonjour!

voilà je voudrais pouvoir modifier la quantité de chaque article dans mon panier mais au lieu de ça, ça me modifie toutes les quantités des articles que le client à mis dans son panier

voici mon code :
[code]
<?
session_start();

$sessionidclient = $_SESSION['id_client'];
$article = $_POST['article'];
$quantite = $_POST['quantite'];

// connexion à la BDD

$req1 = "SELECT ref_produit, prix_produit FROM produit WHERE designation_produit = '".$article."'";
$query1 = mysql_query($req1) or die(mysql_error());
$fetch1 = mysql_fetch_array($query1);

$total = $fetch1[1]*$quantite;


$inser = "INSERT INTO panier (id_cli, ref_produit, quantite, total) VALUES ( '".$_SESSION['id_client']."','".$fetch1[0]."', '".$quantite."', '".$total."')";

$inquer = mysql_query($inser) or die(mysql_error());
$affected = mysql_affected_rows();

$reqtot = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."' ";
$querytot = mysql_query($reqtot) or die(mysql_error());
$fetchtot = mysql_fetch_array($querytot);

$select = "SELECT ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."' ";
$quersel = mysql_query($select) or die(mysql_error());

echo "<table border= 2>
<tr>
<td><center><b>Designation</td></center></b>
<td><center><b>Quantite</td></center></b>
<td><center><b>Prix(en €)</td> </center></b>
<td><center><b>Total produit</td></center></b>
<td>Modifier</td></tr>";

while($fetchsel = mysql_fetch_array($quersel))
{

$selectdesi = "SELECT designation_produit, prix_produit FROM produit WHERE ref_produit = '".$fetchsel[0]."'";

$querdesi = mysql_query($selectdesi) or die(mysql_error());
while ($fetchdesi = mysql_fetch_array($querdesi))
{

if(isset($_POST['sub_form']))
{
if ($_POST['sub_form'] == 'modifier')
{
$modif = "UPDATE panier SET quantite = ".$_POST['quantite'].", total = ".$fetchdesi[1] * $_POST['quantite']."
WHERE ref_produit = '".$fetchsel[0]."' AND id_cli = '".$_SESSION['id_client']."'";
echo $modif;
$res = mysql_query($modif) or die (mysql_error());
$fetchmodif = mysql_affected_rows();
}
}

$reqtott = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."' ";

$querytott = mysql_query($reqtott) or die(mysql_error());
$fetchtott = mysql_fetch_array($querytott);

if(isset ($fetchmodif))
{
echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}'>";
echo "<tr>
<td>".$fetchdesi[0]."</td>
<td><input type = text name = quantite value = ".$_POST['quantite']." ></td>
<td>".$fetchdesi[1]."</td>
<td>".$fetchdesi[1] * $_POST['quantite']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</form>
</tr>
";
}
else
{
echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}'>";
echo "<tr>
<td>".$fetchdesi[0]."</td>
<td><input type = text name = quantite value = ".$fetchsel[1]." ></td>
<td>".$fetchdesi[1]."</td>
<td>".$total."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</form>
</tr>
";

}

}
}

if (isset ($fetchmodif))
{
echo "
<tr><td></td><td></td><b><center> </b></td><td align = \"center\"><b>Total : ".$fetchtott[0]." €</b></td></tr>";
echo"</table>";
}
else
{

echo "
<tr><td></td><td></td><b><center> </b></td><td align = \"center\"><b>Total : ".$fetchtot[0]." €</b></td></tr>";

echo"</table>
";
}



echo "<br><br>";
echo "<a href = essaipanier.php>Retour</a><br>";
echo "<a href = index.php>Accueil</a>";

?>
[/code]

je vous remercie beaucoup pour votre aide ...
A voir également:

5 réponses

P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
29 mai 2006 à 12:46
dis moi, quand tu regarde ton "code source" de la page html généré ...
est ce que tous les
<input type = text name = quantite value = ".$fetchsel[1]." >
on le même nom ??
1
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
29 mai 2006 à 15:17
c'est parce qu'ils ont tous le même nom. alors soit tu as fait un formulaire par produit et dans ce cas il te faut nommer chaque formulaire pour soumettre uniquement le bon soit il faut différencier les nom de tes champs...

Je suis claire ou pas ???
je ne sais pas .
dis moi si tu as compris le problème parce que c'est tout bête, mais encore faut-il que se soit bien expliquer ... et là je ne suis pas sure d'être trés claire dans mes explications :D
1
P@ Messages postés 1709 Date d'inscription vendredi 7 juillet 2000 Statut Membre Dernière intervention 24 mars 2009 185
30 mai 2006 à 09:59
alors s'il te plait ... regarde dans la balise form
while($fetchsel = mysql_fetch_assoc($quersel))
{


  echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}' >";
echo "<tr><input type = 'hidden' name = 'ref_produit' value = '".$fetchsel['ref_produit']."'/ >
<td>".$fetchsel['ref_produit']."</td>
<td><input type = 'text' name = 'quantite' value = '".$fetchsel['quantite']."'/ ></td>

<td>".$fetchsel['total']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</tr>
</form>";
}


et ca devrait être mieux, non ??
1
carternets Messages postés 4 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 17 juillet 2008
15 juil. 2008 à 20:32
Salut,

ce que tu peux faire sinon c'est une incrémentation pour chaque boucle et la placer dans le nom de ton input.

Par exemple

$i=0;

while($fetchsel = mysql_fetch_assoc($quersel))
{

$i++;

  echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}' >";
echo "<tr><input type = 'hidden' name = 'ref_produit".$i."' value = '".$fetchsel['ref_produit']."'/ >
<td>".$fetchsel['ref_produit']."</td>
<td><input type = 'text' name = 'quantite".$i."' value = '".$fetchsel['quantite']."'/ ></td>

<td>".$fetchsel['total']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</tr>
</form>";
}


Donc en gros ton premier input sera ref_produit1 la seconde boucle ref_produit2 etc...
Derrière sur ta page où tu récupères la donnée, tu utilises une structure conditionnelle où ce que tu veux.

Voilà, j'espère que ça t'aidera ;-)
0
oauis mais je ne sais pas comment faire pour que quand je clique sur "modifier", ca me modifie juste la quantité d'un seul article..

suis completement perdu... :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
on va reprendre un code plus implifié :

$sessionidclient =  $_SESSION['id_client'];
 
 echo  $_SESSION['id_client']."Identifiant client";
 echo "<br><br>";
 
 $article = $_POST['article'];
 echo $article;
 echo "<br>";
$quantite = $_POST['quantite'];
 // connexion BDD

$req1 = "SELECT ref_produit, prix_produit FROM produit WHERE  designation_produit = '".$article."'";
$query1 = mysql_query($req1) or die(mysql_error());
$fetch1 = mysql_fetch_array($query1);


 $total = $fetch1['prix_produit']*$quantite;


$inser = "INSERT INTO panier (id_cli, ref_produit, quantite, total) VALUES ( '".$_SESSION['id_client']."','".$fetch1['ref_produit']."', '".$quantite."', '".$total."')";

$inquer = mysql_query($inser) or die(mysql_error());
$affected = mysql_affected_rows();

$reqtot = "SELECT sum(total) FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
$querytot = mysql_query($reqtot) or die(mysql_error());
$fetchtot = mysql_fetch_array($querytot);

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

  $modif = "UPDATE panier SET quantite = '".$_POST['quantite']."', total = '".$fetch1['prix_produit'] * $_POST['quantite']."'
  WHERE ref_produit = '".$fetch1['ref_produit']."' AND id_cli = '".$_SESSION['id_client']."'";
  $res = mysql_query($modif) or die (mysql_error());
  }
  }


$select = "SELECT  ref_produit, quantite, total FROM panier WHERE id_cli = '".$_SESSION['id_client']."'  ";
$quersel = mysql_query($select) or die(mysql_error());



echo "<table border= 2>
<tr>
<td><center><b>Reference</td></center></b>
<td><center><b>Quantite</td></center></b>

<td><center><b>Total produit</td></center></b>
<td>Modifier</td></tr>";

while($fetchsel = mysql_fetch_assoc($quersel))
{


  echo "<form method= 'post' action='{$_SERVER['PHP_SELF']}'>";
echo "<tr>
<td>".$fetchsel['ref_produit']."</td>
<td><input type = 'text' name = 'quantite' value = '".$fetchsel['quantite']."'/ ></td>

<td>".$fetchsel['total']."</td>
<td><input type = submit name = 'sub_form' value = 'modifier'></td>
</tr>
</form>";
}
echo "</table>
";

?>



pour afficher tous les articles mis dans le panier, je boucle.

et j'ai ma requete UPDATE qui me permet de mettre à jour la quantite avec le $_POST['quantite'] en fonction de la ref_produit

et quand je veux modifier, ça me rajoute une ligne, un champs quantité en plus..

j'ai du mal à expliquer mon problème.. :(
0