amglpp
Messages postés3Date d'inscriptionvendredi 28 décembre 2007StatutMembreDernière intervention23 avril 2008
-
23 avril 2008 à 00:07
cephalic
Messages postés38Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention25 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
$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);
cephalic
Messages postés38Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention25 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.
amglpp
Messages postés3Date d'inscriptionvendredi 28 décembre 2007StatutMembreDernière intervention23 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.
amglpp
Messages postés3Date d'inscriptionvendredi 28 décembre 2007StatutMembreDernière intervention23 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
cephalic
Messages postés38Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention25 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']
}