Problème variable php dans une requete sql

Résolu
krevette235 Messages postés 12 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 16 janvier 2009 - 18 mars 2008 à 03:04
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 - 18 mars 2008 à 16:15
Bonjour a tous,
bon voila ca fait plusieurs heures que je cherche, que je farfouille un peu partout mais je ne trouve rien. J'aimerai pouvoir verifier dans ma base de donnée que l'utilisateur qui essaie de se connecter existe bien, mais voila je n'y arrive. soit l'utilisateur existe tout le temps, soit il n'existe jamais. J'ai essayé d'écrire la variable de toutes les facons (simple cote, double cote, anti cote, ...) mais rien. Je vais donc vous montrez mon code en espérant que quelqu'un trouve une solution.

<?php
$link = mysql_connect('localhost', 'root');
if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}
$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$login= $_POST['login'];
$pass= $_POST['pass'];
echo "$login
";
echo "$pass
";

$verif= mysql_query("select user from utilisateurs where user like '$login'");
if (!$verif) {
    echo "Pas de user
";}
    else
    {echo "le user existe";}
?>

je vous remercie d'avance

5 réponses

yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
18 mars 2008 à 03:30
Il manque une accolade dans mon exemple désolé

$login= mysql_real_escape_string($_POST['login']);
$pass= $_POST['pass'];
echo "$login
";
echo "$pass
";
if ($verif mysql_query("select user from utilisateurs where user '$login'"))
{
    if (mysql_rum_rows() === 0)
   {
    echo 'Pas de user
';
    }
    else
    {
     echo 'le user existe';
     }
}

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
3
krevette235 Messages postés 12 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 16 janvier 2009
18 mars 2008 à 13:02
Je vous remercie grandement!!!
j'ai bien compris mon erreur: je vérifier si ma requete etait correcte et non si l'utilisateur exister.

Par contre il y avait quelques petites erreurs sur une ligne:

if (mysql_num_rows($verif) === 0)

Maintenant ca fonctionne bien, je vais enfin pouvoir continuer car j'avais vraiment besoin de ca.

Encore merci
3
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
18 mars 2008 à 03:28
Salut,

Déja on dit quote, pas cote

Ensuite puisque toi tu veux une comparaison absolu utilise = plutot que like.. (et surtout échappe tes données)

Et puis toi tu vérifie si la requête aboutie bien... même si elle retourne rien ça veut pas dire une erreur, tu ne compare pas la bonne chose... tu dois comparer le nombre de rangés retournées (ou comparer le string avec un fetch)...

Exemple:


$login = mysql_real_escape_string($_POST['login']);
$pass= $_POST['pass'];
echo "$login
";
echo "$pass
";
if ($verif mysql_query("select user from utilisateurs where user '$login'"))
    if (mysql_rum_rows() === 0)
   {
    echo 'Pas de user
';
    }
    else
    {
     echo 'le user existe';
     }
}

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mars 2008 à 07:59
Hello,

juste une précision :
"même si elle retourne rien ça veut pas dire une erreur, tu ne compare pas la bonne chose"Si...quand les utilisateurs se loggaient tout le temps, cela voulait dire que ta requête ne générait pas d'erreur SQL : ta requête était bonne. Mais comme le dit Yoman par contre...cela ne veut pas dire que l'utilisateur existait dans ta base, simplement que la requête générait une erreur (mauvais SQL par exemple) : $req mysql_query(requête); > $req sera égal à true si la requête est bonne.
=> $req sera égal à false si la requête génère ne erreur.

La phrase est fausse ;-) Mais la solution est bonne.
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
18 mars 2008 à 16:15
Salut,

@malalam: je me suis sans doute mal exprimé, je voulais dire que si la requête ne retournait aucun résultat, alors si elle était bien formulé elle ne générait pas automatiquement une erreur (retour false), donc sa comparaison de $verif comme boolean n'était pas suffisante... bref tu as tout de même vu où je voulais en venir :)

@krevette235: Ouais j'ai tappé ça a la vite, quelques petites fautes désolé

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
Rejoignez-nous