Vérifier l'existence d'un membre

Petit nouveau ! | 2 Messages

23 avr. 2012, 23:18

Bonjour,

Malgré les nombreux forums que j'ai visité, je n'arrive toujours pas à régler mon pb :/
Débutante en php et mysql pas facile...
Je m'explique, je veux vérifier que le pseudo est bien présent dans ma table MEMBRE
Donc voici ma requête:

$q= "SELECT * FROM MEMBRE WHERE pseudo='".$pseudo."'";
$res = $c->query($q);

if (!$res) echo "ce membre existe";
else echo "ce membre n'existe pas";

Et le problème est que quelque soit l'existence ou non du membre, c'est toujours le même "echo" qui apparaît...
J'espère enfin trouver une solution à mon problème
Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 avr. 2012, 09:12

salut,

mauvaise (très mauvaise) utilisation.

on ne fait pas un if($variable) si celle ci n'est pas un boolean. la première raison c'est que si ta variable vaux zéro ou '0' elle sera considérée comme false mais ce n'est pas forcément ce que tu veux.
la seconde c'est que ce n'est pas clair.

Il faut d'abord compter le nombre de pseudo dans la table. Cela passe par l'utilisation de la fonction SQL count.

$q= "SELECT count(*) as nb FROM MEMBRE WHERE pseudo='".$pseudo."'";

Le mot clef as permet de créer un alias de la colonne (normalement le nom de colonne est count(*) mais nb ou nombre c'est plus parlant et plus simple).
Cette requête va donc compte le nombre de tuple qui ont $pseudo pour pseudo.

l'exploitation est simple
  • query
  • fetch
ne connaissant pas la classe tu utilise, je ne peux te donner d'exemple.

Il faut toujours protéger ses requêtes SQL (demande a google ce que sont les injections SQL). pour cela plusieurs possibilitées :
  • Avec l'extension mysql (ou mysqlo) : mysql_real_escape_string (ou mysqli_real_escape_string) existe aussi avec mysqli en poo
  • Avec PDO : utilise méthode quote
  • Une fonction perso dont tu a le cru ;)
bon tests

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

24 avr. 2012, 11:10

Merci beaucoup pour ces corrections :)