[php] variable s'incrémentant plusieurs fois
Fermé
kategriss
Messages postés
9
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
14 novembre 2014
-
1 avril 2008 à 12:32
guimton Messages postés 89 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 10 avril 2008 - 1 avril 2008 à 16:26
guimton Messages postés 89 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 10 avril 2008 - 1 avril 2008 à 16:26
A voir également:
- [php] variable s'incrémentant plusieurs fois
- Easy php - Télécharger - Divers Web & Internet
- Signe fois clavier iphone ✓ - Forum Word
- Sirène pompiers 5 fois signification ✓ - Forum Loisirs / Divertissements
- Imprimer plusieurs fois la même image sur une page ✓ - Forum Logiciels
3 réponses
guimton
Messages postés
89
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
10 avril 2008
10
1 avril 2008 à 13:44
1 avril 2008 à 13:44
C'est normal car tu executes tes modif sur qte pour chaque ligne.
devant tes tests if, elseif, etc ajoute une ligne pour tester quel id doit etre modifier:
if( isset($_GET['id]) && $_GET['id] == $infos['id]){
if (isset($_GET['add']))
{
$qte = intval($_GET['add']);
$qte++;
$_SESSION['id']=$_GET['id'];
$_SESSION['id']['qte']=$qte;
}
elseif (isset($_GET['del']))
{
$qte = intval($_GET['del']);
if ($qte >= 1)
{
$qte--;
$_SESSION['id']=$_GET['id'];
$_SESSION['qte']=$qte;
}
else
{
$qte = 0;
$_SESSION['id']=$_GET['id'];
$_SESSION['qte']=$qte;
}
}
elseif (isset($_GET['clear']))
{
$qte = intval($_GET['clear']);
$qte = 0;
$_SESSION['id']=$_GET['id'];
$_SESSION['qte']=$qte;
}
else
{
$qte = 0;
}
}
devant tes tests if, elseif, etc ajoute une ligne pour tester quel id doit etre modifier:
if( isset($_GET['id]) && $_GET['id] == $infos['id]){
if (isset($_GET['add']))
{
$qte = intval($_GET['add']);
$qte++;
$_SESSION['id']=$_GET['id'];
$_SESSION['id']['qte']=$qte;
}
elseif (isset($_GET['del']))
{
$qte = intval($_GET['del']);
if ($qte >= 1)
{
$qte--;
$_SESSION['id']=$_GET['id'];
$_SESSION['qte']=$qte;
}
else
{
$qte = 0;
$_SESSION['id']=$_GET['id'];
$_SESSION['qte']=$qte;
}
}
elseif (isset($_GET['clear']))
{
$qte = intval($_GET['clear']);
$qte = 0;
$_SESSION['id']=$_GET['id'];
$_SESSION['qte']=$qte;
}
else
{
$qte = 0;
}
}
Loch-Nar
Messages postés
27
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
22 septembre 2008
1 avril 2008 à 13:43
1 avril 2008 à 13:43
Bonjour,
Tu fais juste un test pour savoir si add, del ou clear existe,
puis tu modifies $qte
et tu fais ca pour chaque produits...
En gros, la si tu as add, bah ca va faire +1 par produits ^^
Tu fais juste un test pour savoir si add, del ou clear existe,
puis tu modifies $qte
et tu fais ca pour chaque produits...
En gros, la si tu as add, bah ca va faire +1 par produits ^^
kategriss
Messages postés
9
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
14 novembre 2014
1 avril 2008 à 14:20
1 avril 2008 à 14:20
Bonjour
J'ai rajouté la ligne
if (isset($_GET['id']) && $_GET['id'] == $infos['id'])
et en effet maintenant çe me prend bien en compte la quantité du produit pour lequel j'ai cliqué.
Mon problème maintenant c'est que quand je rajoute 1 produit, puis un 2e, la quantité du 1er produit se remet à 0.
Voici le bout de code en question :
Mon panier (sur une autre page) ne semble pas non plus marcher comme il faut... il m'affiche une erreur de ce type :
La requête SQL est celle-ci :
Merci d'avance pour votre aide.
J'ai rajouté la ligne
if (isset($_GET['id']) && $_GET['id'] == $infos['id'])
et en effet maintenant çe me prend bien en compte la quantité du produit pour lequel j'ai cliqué.
Mon problème maintenant c'est que quand je rajoute 1 produit, puis un 2e, la quantité du 1er produit se remet à 0.
Voici le bout de code en question :
<?php if (isset($_GET['id']) AND $_GET['id'] == $infos['id']) { if (isset($_GET['add'])) { $qte = intval($_GET['add']); $qte++; $_SESSION[$_GET['id']] = $qte; } } if (isset($_GET['id']) AND $_GET['id'] == $infos['id']) { if (isset($_GET['del'])) { $qte = intval($_GET['del']); if ($qte >= 1) { $qte--; $_SESSION[$_GET['id']] = $qte; } else { $qte = 0; $_SESSION[$_GET['id']] = $qte; } } } if (isset($_GET['id']) AND $_GET['id'] == $infos['id']) { if (isset($_GET['clear'])) { $qte = intval($_GET['clear']); $qte = 0; $_SESSION[$_GET['id']] = $qte; } } else { $qte = 0; } ?>
Mon panier (sur une autre page) ne semble pas non plus marcher comme il faut... il m'affiche une erreur de ce type :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
La requête SQL est celle-ci :
$recup = mysql_query("SELECT nom, description, prix FROM prod WHERE id=" . $_SESSION[$_GET['id']] . "")or die(mysql_error());
Merci d'avance pour votre aide.
Loch-Nar
Messages postés
27
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
22 septembre 2008
1 avril 2008 à 15:03
1 avril 2008 à 15:03
Pour l'erreur SQL, verifie que le $_GET['id'] existe, sinon il fait une recherche sur id=NULL
forcement il comprend pas ^^
Pour le bout de code, j'viens de tilter ^^
En fait, tu fais tes differents tests... mais si jamais il n'y a rien, tu remets $qte à 0
donc en gros:
tu incrementes un premier produit, tu veux ensuite incrementer un second, donc l'id change, ton premier produits repasse a 0 et le second est incrementé.
Je pense que tu ferais mieux de sauvegarder le panier de l'utilisateur et la quantité de chaque cartouche dans une bdd mysql:
1) plus simple a coder ^^
2) s'il se reconnecte plus tard, son panier est sauvegardé vu que c'est pas dans un cookie ou une variable de session qui peuvent disparaitre.
plus simple et plus puissant? pourquoi s'embetter ^^
forcement il comprend pas ^^
Pour le bout de code, j'viens de tilter ^^
En fait, tu fais tes differents tests... mais si jamais il n'y a rien, tu remets $qte à 0
donc en gros:
tu incrementes un premier produit, tu veux ensuite incrementer un second, donc l'id change, ton premier produits repasse a 0 et le second est incrementé.
Je pense que tu ferais mieux de sauvegarder le panier de l'utilisateur et la quantité de chaque cartouche dans une bdd mysql:
1) plus simple a coder ^^
2) s'il se reconnecte plus tard, son panier est sauvegardé vu que c'est pas dans un cookie ou une variable de session qui peuvent disparaitre.
plus simple et plus puissant? pourquoi s'embetter ^^
guimton
Messages postés
89
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
10 avril 2008
10
1 avril 2008 à 16:26
1 avril 2008 à 16:26
remplace $recup = mysql_query("SELECT nom, description, prix FROM prod WHERE id=" . $_SESSION[$_GET['id']] . "")or die(mysql_error());
par
$recup = mysql_query("SELECT nom, description, prix FROM prod WHERE id='" . $_SESSION[$_GET['id']] . "'")or die(mysql_error());
tu as oublier les quotes autour de ton $_session
par
$recup = mysql_query("SELECT nom, description, prix FROM prod WHERE id='" . $_SESSION[$_GET['id']] . "'")or die(mysql_error());
tu as oublier les quotes autour de ton $_session
1 avril 2008 à 13:47
tes variables de session sont également modifier à chaque ligne.
attention, si tu veux les recuperer plus tard.
tu devrais plutot faire comme ça:
$_SESSION[$_GET['id']] = $qte;
comme ça pour chaque produit tu peux savoir la quantité.
et tu te sert de ta session comme panier.