par
Ryle » 10 avr. 2007, 10:21
Peux tu donner le message d'erreur complet ?

On dirait une parse error.. problème de guillemets/apostrophes/accolades/parenthèse non équilibrés ? .. la ligne serait interessante...
Si $pseudo est une chaine de caractère, les apostrophes sont indispensables. Si ta requête tourne sous MySQL alors que tu n'as pas mis les apostrophes autour de ta chaine, c'est que tu ne testes pas la bonne requête
Ajoute un "or die(mysql_error())" lors de l'exécution de tes requêtes tu verras tout de suite qu'il y a une erreur de syntaxe s'il manque les apostrophes.. et peut être verras tu également d'autres erreurs sql (nom de champ incorrect, etc.)
$resultat = mysql_query($sql) or die (mysql_error());
Une remarque également dans le cas du critère ci-dessous :
$clause = "WHERE coordonnees LIKE'$motclef%' OR nom LIKE'$motclef%' OR prenom LIKE'$motclef%' AND id_cat LIKE $pseudo";
la condition AND est prioritaire sur le OR (comme la multiplication l'est sur l'addition. Si tu ne spécifies pas de parenthèses, ce critère retournera les enregistrements pour lesquels le prenom commence par $motclef ET id_cat est égal à '$pseudo' OU BIEN ceux dont coordonnees commence par $motclef (quel que soit l'id_cat), OU BIEN ceux dont nom commence par $motclef (quel que soit l'id_cat).
Je suppose que ce que tu souhaites c'est pour avoir l'un des trois pour un commercial donné :
$clause = "WHERE (coordonnees LIKE '".$motclef."%' OR nom LIKE '".$motclef."%' OR prenom LIKE '".$motclef."%') AND id_cat = '".$pseudo."'";
A noter par ailleurs que si tu fais une recherche exacte (genre id_cat = pseudo) il faut utiliser le "=" et pas le LIKE
Enfin, il y a quelque chose d'illogique ici (outre l'absence d'apostrophes) :
if($view_cat != 0)
$clause = "WHERE id_cat=$view_cat AND id_cat LIKE $pseudo";
Comment id_cat peut être égale à $view_cat et ressemble à $pseudo ? tu testes $view_cat!=0 ? ce serait donc un nombre ? qu'en est-il de id_cat ? et pseudo du coup ? .. comprend plus moi

Peux tu donner le message d'erreur complet ? :) On dirait une parse error.. problème de guillemets/apostrophes/accolades/parenthèse non équilibrés ? .. la ligne serait interessante...
Si $pseudo est une chaine de caractère, les apostrophes sont indispensables. Si ta requête tourne sous MySQL alors que tu n'as pas mis les apostrophes autour de ta chaine, c'est que tu ne testes pas la bonne requête :?
Ajoute un "or die(mysql_error())" lors de l'exécution de tes requêtes tu verras tout de suite qu'il y a une erreur de syntaxe s'il manque les apostrophes.. et peut être verras tu également d'autres erreurs sql (nom de champ incorrect, etc.)
[php]$resultat = mysql_query($sql) or die (mysql_error()); [/php]
Une remarque également dans le cas du critère ci-dessous :
[php]$clause = "WHERE coordonnees LIKE'$motclef%' OR nom LIKE'$motclef%' OR prenom LIKE'$motclef%' AND id_cat LIKE $pseudo"; [/php]
la condition AND est prioritaire sur le OR (comme la multiplication l'est sur l'addition. Si tu ne spécifies pas de parenthèses, ce critère retournera les enregistrements pour lesquels le prenom commence par $motclef ET id_cat est égal à '$pseudo' OU BIEN ceux dont coordonnees commence par $motclef (quel que soit l'id_cat), OU BIEN ceux dont nom commence par $motclef (quel que soit l'id_cat).
Je suppose que ce que tu souhaites c'est pour avoir l'un des trois pour un commercial donné :
[php]$clause = "WHERE (coordonnees LIKE '".$motclef."%' OR nom LIKE '".$motclef."%' OR prenom LIKE '".$motclef."%') AND id_cat = '".$pseudo."'"; [/php]
A noter par ailleurs que si tu fais une recherche exacte (genre id_cat = pseudo) il faut utiliser le "=" et pas le LIKE :)
Enfin, il y a quelque chose d'illogique ici (outre l'absence d'apostrophes) :
[php]if($view_cat != 0)
$clause = "WHERE id_cat=$view_cat AND id_cat LIKE $pseudo";[/php]Comment id_cat peut être égale à $view_cat et ressemble à $pseudo ? tu testes $view_cat!=0 ? ce serait donc un nombre ? qu'en est-il de id_cat ? et pseudo du coup ? .. comprend plus moi :-s