Modification de la quantité d'un article dans un caddie

Résolu
amglpp Messages postés 3 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 23 avril 2008 - 23 avril 2008 à 00:07
cephalic Messages postés 38 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 25 avril 2008 - 23 avril 2008 à 11:31
Bonjour,

Je débute à 65 ans dans ce language php, et je butte sur la modification de la quantité d'un article dans la gestion d'un panier d'achat. Je n'arrive pas à saisir la nouvelle quantité (en utilisant input) et à écraser la valeur précédente par un UPDATE, par contre la suppression d'une ligne d'achat fonctionne bien.
Si vous avez une idée, cela me dépannerai bien car cela fait plus d'une semaine que je galère, ci dessous mon programme épuré des floritures

merci

<?php
$ici= "gestion_panier.php?pseudo=$pseudo";
$c=0;
require("conf.php");


$db = mysql_connect($host, $user, $password) or die ("connexion au serveur impossible");
mysql_select_db($database,$db) or die ("sélection de la base impossible");


$sql "SELECT pseudo, ref_prod, quant FROM panier WHERE pseudo '$pseudo'";
$result = mysql_query($sql) or die ("Execution extract impossible");
$nbr_articles = mysql_num_rows($result);
// mise en page
echo "\";
// test de l'opération à effectuer
if (isset ($_POST['update']))
{
 $update=$_POST['update'];
}
if (isset ($_POST['supprimer']))
{
 $supprimer=$_POST['supprimer'];
}
echo \"Your basket $pseudo
/..........(Delete a line ---------> tick on the check box line and click on 'delete' box )
\";
echo \"
(Modify the quantity --> write the new quantity and click on new quantity box)

\";
echo \"
\";

// début de update quantité
if ($update)

{
 $quant=$_POST['quant'];
 $nbenrq= sizeof($quant);
for ($i=0; $i<$nbenrq; $i++)

{
 $req=\"UPDATE panier SET quant=$quant WHERE $ref_prod[$i]\";
 mysql_query($req, $db);
 $nb=mysql_affected_rows ($db);
if ($nb ==0)
 echo \"error no deleted : \". mysql_error().\"
\";
}
} //fin update */

if ($supprimer)
{
 $supp=$_POST['supp'];
 $nbenr= sizeof($supp);

for ($i=0; $i<$nbenr; $i++)
 
{ $req_supp=\"DELETE from panier WHERE id='$supp[$i]'\";
 mysql_query($req_supp, $db);
 $nb=mysql_affected_rows ($db);
if ($nb ==0)
 echo \"error no deleted : \". mysql_error().\"
\";
}
} //fin supprimer

// afficher la liste
$sql \"SELECT id,pseudo, ref_prod, quant FROM panier WHERE pseudo '$pseudo'\";
$resultat = mysql_query($sql) or die (\"Execution extract impossible\");
$nblignes=mysql_num_rows($resultat);
$nbchamps=mysql_num_fields($resultat);

echo \"<table border=0 align=left width=85% cellspacing=3 cellpadding=3 >\";
echo \"<FORM ACTION=$ici method='POST'>----
\";
 echo \"row, \";
for ($i=2; $i < $nbchamps; $i++)
{
 $tabchamps[$i] = mysql_field_name($resultat,$i);
 echo \" $tabchamps[$i] |\";
}
echo \", \";

$rg = 1;
for ($i=0; $i < $nblignes; $i++)
{
 $ligne = mysql_fetch_row($resultat);
 echo \"----
\"; $c= ! $c;
 echo \"$rg, \";
 $rg++;
for ($j=2; $j < $nbchamps; $j++)
{
 echo \"$ligne[$j], \";
}

echo \"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;, \";
}
echo "</form>
";
echo "</table>";
mysql_close($db_link);
?>


 

4 réponses

cephalic Messages postés 38 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 25 avril 2008
23 avril 2008 à 10:04
Bonjour
La requete udpadate n'est pas bonne :
$req="UPDATE panier SET quant=$quant WHERE $ref_prod[$i]";
La condition where est fausse. Il faut comprar $ref_prod avec quelquechose.
$req="UPDATE panier SET quant=$quant WHERE  id = $ref_prod[$i]";
Et comme apparement votre champs dans la base s'appelle id c'est avec lui qu'il faut le comparer.
3
amglpp Messages postés 3 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 10:40
Bonjour cephalic et merci,
c'est juste j'ai cette erreur, mais le point sur lequel je bloque le plus est sur la prise en compte de la nouvelle quantité, si je fais un "echo" sur $quant[$i] ou sur $ref_prod[$i] après "input text" je n'ai aucune valeur.
J'ai essayé plusieurs solutions et je pense que je dois me mélanger dans les indices.
0
amglpp Messages postés 3 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 10:54
J'ai modifié la ligne de l'update, et rajouté un echo sur $quant avant l'update, j'obtiens $quant='  '
Je pense qu'il faut aussi que je transmette $ref_prod mais j'ai le même soucis

{
 $quant=$_POST['quant'];
 $nbenrq= sizeof($quant);
 echo "quant= '$quant'";
for ($i=0; $i<$nbenrq; $i++)


{
 $req="UPDATE panier SET quant=$quant WHERE id='$ref_prod[$i]'";

merci
0
cephalic Messages postés 38 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 25 avril 2008
23 avril 2008 à 11:31
Re
Oui vous avez un gros problème que je n'avais pas vu.
Le parcours de données de requète ne se récupère pas comme vous l'avez fait : remplacer tout sa :

if ($update) {
 $quant=$_POST['quant'];
 $nbenrq= sizeof($quant);
for ($i=0; $i<$nbenrq; $i++)

{
 $req="UPDATE panier SET quant=$quant WHERE $ref_prod[$i]";
 mysql_query($req, $db);
 $nb=mysql_affected_rows ($db);
if ($nb ==0)
 echo "error no deleted : ". mysql_error()."
";
}
 Par
if ($update){
$req="UPDATE panier SET quant=$quant WHERE pseudo=$pseudo";

 mysql_query($req, $db) or die("erreru update");
}

Plus généralement our récuperer des données de requete ne faite pas une boucle for
avec mysql_num_rows mais utiliser
$row=mysql_query(votre_requete)
while($result=mysql_fetch_assoc($row))
{
$row['nom_champs_dans_la_base']
}

C'est plus simple.
Cordialement
0
Rejoignez-nous