Page 1 sur 1

Problème : Requête de recherche du nombre d'enregistrements

Posté : 03 mars 2011, 20:13
par lawrencium
Bonsoir,

Je suis en train de monter un site web avec une zone membre, dans celle ci j'ai besoin de rechercher dans ma base de donnée les différentes entrées effectuées par l'utilisateur dans une table et de les afficher dans un tableau (donc de longueur inconnue).

J'utilise ce code pour rechercher le nombre d'entrées de l'utilisateur et donc le nombre de lignes de mon tableau :

Code : Tout sélectionner

$select = "SELECT heure,date,livraison,message,etat,login FROM `commande` WHERE `login` LIKE '.$login'"; $result = mysql_query($select,$base) or die ('Erreur : '.mysql_error() ); $NbreData = mysql_num_rows($result);
$login est le login de la session en cour obtenu par le code suivant :

Code : Tout sélectionner

$login = htmlentities(trim($_SESSION['login']));
Seulement a chaque fois il me renvois la valeur "0" alors que des enregistrements avec ce login existent.

Une erreur de ma part dans le code ? (Sans doute ^^)

Re: Problème : Requête de recherche du nombre d'enregistrements

Posté : 03 mars 2011, 21:18
par stealth35
t'as pas a faire un htmlentites a cette endroit mais un mysql_real_escape_string

Re: Problème : Requête de recherche du nombre d'enregistrements

Posté : 04 mars 2011, 09:05
par Mazarini
Bonjour,

`login` LIKE '.$login' => `login` = '.$login'

Ensuite vérifie le contenu de $login en affichant la requête et en regardant le contenu de ta table avec phpmyadmin ou un autre client mysql.

Re: Problème : Requête de recherche du nombre d'enregistrements

Posté : 04 mars 2011, 21:05
par Ryle
A mon avis, c'est le point qui traine dans la chaine qui fait que tu ne retrouves pas ton login dans la table...

Ceci étant, comme l'indique Mazarini, la commande "LIKE" est faite pour rechercher une chaine partielle et s'utilise avec des % en guise de joker. Pour une correspondance exacte telle que celle dont tu as besoin, c'est l'opérateur "=" qu'il convient d'utiliser
 $select = "SELECT heure,date,livraison,message,etat,login FROM commande WHERE login = '" .$login. "'";
A noter également que sortir les variables des chaines permet de rendre ton code plus lisible. De même les ` de Mysql ne sont utiles que si tu as mal nommé tes tables ou tes champs. Si tes tables sont bien construites (c'est dire si tu n'utilises pas de mots clés réservés) tu peux t'en passer, ce qui rend également ton code plus facile à lire et à maintenir :)

Re: Problème : Requête de recherche du nombre d'enregistrements

Posté : 05 mars 2011, 21:59
par devlop78
L'utilisation de count(*) te permettra aussi d'éviter de retourner des valeurs inutiles si le but est uniquement de connaître le nombre de résultats