Problème variable php dans une requete sql [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 14 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2009
-
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
-
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

Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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  
Messages postés
12
Date d'inscription
lundi 14 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2009

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
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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  
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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.
 
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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