Modérateur PHPfrance |
10684 Messages
08 janv. 2009, 12:35
Sans rentrer dans le détail, quelques petites choses qui ne vont pas :
Pour comparer deux valeurs, on utilise l'opérateur "==". L'opérateur "=" sert à l'affectation.
Lorsque tu fais : OR $present=0; dans ton while, tu affectes la valeur 0 à ta variable $present, rendant ce test toujours vrai.
Par ailleurs, même avec un "==", dans la mesure ou ta variable $present est déclarée juste au dessus étant égale à 0, le test sera toujours vrai et n'a donc aucun intéret.
function verifsimil($login, $prod)
{
$present=0;
// une bonne habitude à prendre : mettre sa requête dans une variable, et ne ramener que les colonnes dont tu as besoin
$sql = "SELECT narticle FROM panier WHERE user = '".$login."'"; // ca permet d'afficher la requête pour débugger plus facilement :)
$resultSet = mysql_query($sql);
while ($donnee = mysql_fetch_assoc($resultSet)) // pas besoin d'un _array si on utilise que les noms de colonnes, un _assoc suffit
{
if ($prod == $donnee['narticle']) {
$present=1;
}
}
mysql_close();
return $present;
}
Nota : bien indenter le code le rend plus lisible et plus facile à maintenir... dans ton exemple on a l'impression que la fonction n'est pas complète, en l'indentant proprement on se rend compte que si
Tu peux aussi simplifier ta fonction en virant le while() et en demandant directement dans ta requête si l'article est trouvé :
$sql = "SELECT COUNT(*) AS nb FROM panier WHERE user = '".$login."' AND narticle = ". $prod;
Si nb est égal à 0, l'article n'y est pas, sinon (1 ou plus) c'est qu'il est présent

Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...