greg3487
Messages postés17Date d'inscriptiondimanche 20 septembre 2015StatutMembreDernière intervention11 février 2016
-
Modifié par jordane45 le 11/12/2015 à 13:51
jordane45
Messages postés37525Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 4 juin 2023
-
12 déc. 2015 à 03:05
Bonjour,
j'ai un petit problème de condition, a chaque fois que j'ajoute un produit, le produit passe en t'en que nouveau produit même s'il existe dans la base de donnée.
quelqu'un pourrais me dire se qui cloche et une incohérence entre le var_dump et la barre d'adresse.
greg3487
Messages postés17Date d'inscriptiondimanche 20 septembre 2015StatutMembreDernière intervention11 février 2016 11 déc. 2015 à 18:17
je vient de modifier le code, mais il met a jour que que un seul produit, les autre s'enregistre pas ou se mette pas a jour.
voici mon code modifié.
if(isset($_GET['valide']))
{
$produit_id= intval($_GET['nom_id']);
$produit_prix = intval($_GET['prix_id']);
$quantite_ajoute = intval($_GET['quantite_ajout']);
$result = $mysqli->query("SELECT * FROM boutique WHERE `Article_ID` = '$produit_id'");
$row = $result->fetch_array();
if($row[0] <= 0)
{
$message = '<p class="error">Le catalogue ne contient pas cette référence. Aucun produit n\'est ajouté a panier.</p>';
}
else
{
var_dump($row['Article_ID']);
$verif = $mysqli->query("SELECT * FROM panier");
$row = $verif->fetch_array();
$quantite_total = $quantite_ajoute + $row['quantite'];
var_dump($row);
if ($row[] = '0')
{
$mysqli->query("INSERT INTO panier (user_id, produit_id, quantite)
VALUES ('$web_user_id', '$produit_id', '$quantite_ajoute')");
$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
}
elseif ($row[] = '1') {
$mysqli->query("UPDATE panier
SET quantite = '$quantite_total'
WHERE user_id = '$web_user_id'
AND produit_id = '$produit_id'");
var_dump('bab');
$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
}
else
{
$message = '<p class="error">L\'ajout du produit dans le panier n\'est pas effectué.</p>';
}
}
}
$result = $mysqli->query("SELECT produit_id, quantite FROM panier WHERE user_id = '$web_user_id'");
while ($row = $result->fetch_array())
{
$produit_id = $row['produit_id'];
$qantite = $row['quantite'];
}
jordane45
Messages postés37525Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 4 juin 2023341 11 déc. 2015 à 19:07
Là encore.... si c'est pour récupérer la quantité d' UN produit particulier.... il te manque un WHERE ... non ?
Ensuite quand tu dis :
mais il met a jour que que un seul produit
.... le code que tu nous montres est sensé mettre à jours plusieurs produits ??
Car visiblement... tu n'en passes qu'un seul via tes variables GET non ?
Au passage....Je t'invite également à passer par la méthode POST au lieu de GET ....
Et pour finir ...
Nous ne pourrons pas t'aider d'avantage tant que nous n'aurons pas:
- La structure de tes tables
- Le formulaire HTML attaché à ce code PHP
- Que tu nous éclaires sur le fonctionnement "souhaité" ... et à contrario.. le fonctionnement "constaté" qui te pose problème.
greg3487
Messages postés17Date d'inscriptiondimanche 20 septembre 2015StatutMembreDernière intervention11 février 2016
>
jordane45
Messages postés37525Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 4 juin 2023 11 déc. 2015 à 21:06
voici mon code, et quand je disais q'il y en a que 1 qui se met a jour, je voulais dire que il y a que les produit déjà enregistré dans la base de donnée du panier, qui se met a jour. Il passe tous par le elseif (le update) au lieu de passer par le if pour mettre un nouveau produit.
base de donnée : user_id => produit_id => quantite
if(isset($_GET['valide']))
{
$produit_id= intval($_GET['nom_id']);
$produit_prix = intval($_GET['prix_id']);
$quantite_ajoute = intval($_GET['quantite_ajout']);
$result = $mysqli->query("SELECT * FROM boutique WHERE `Article_ID` = '$produit_id'");
$rowtest = $result->fetch_array();
//var_dump($rowtest);
if($rowtest[0] <= 0)
{
$message = '<p class="error">Le catalogue ne contient pas cette référence. Aucun produit n\'est ajouté a panier.</p>';
}
else
{
//var_dump($row['Article_ID']);
$verif = $mysqli->query("SELECT * FROM panier WHERE `produit_id` = '$produit_id'");
$row = $verif->fetch_array();
$quantite_total = $quantite_ajoute + $row['quantite'];
//var_dump($row);
if ($row[] = '0')
{
$mysqli->query("INSERT INTO panier (user_id, produit_id, quantite)
VALUES ('$web_user_id', '$produit_id', '$quantite_ajoute')");
$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
}
elseif ($row[] = '1') {
$mysqli->query("UPDATE panier
SET quantite = '$quantite_total'
WHERE user_id = '$web_user_id'
AND produit_id = '$produit_id'");
var_dump('bab');
$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
}
else
{
$message = '<p class="error">L\'ajout du produit dans le panier n\'est pas effectué.</p>';
}
}
}
$result = $mysqli->query("SELECT produit_id, quantite FROM panier WHERE user_id = '$web_user_id'");
while ($row = $result->fetch_array())
{
$produit_id = $row['produit_id'];
$qantite = $row['quantite'];
}
jordane45
Messages postés37525Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 4 juin 2023341 12 déc. 2015 à 03:05
Alors :
Que donnes ton var_dump ?
//var_dump($row);
Ensuite... une comparaison ne se fait pas avec UN SEUL égale... mais avec DEUX ou TROIS selon les besoins !
Donc tes IF, tel que celui là :
if ($row[] = '0')
Devraient êtres de la forme :
if ($row[] == '0')
Ensuite.. $row[] .... ajoute un donnée dans l'array $row .....
A mon avis.. tu as oublié de mettre la "key" entre les crochets
un truc du genre