Page 1 sur 1

Problème avec (!$exist)

Posté : 06 août 2005, 18:07
par Jacherouderai
Bonjour j'ai un code pour mes identifications maus je rencontre un problème avec mon (!$exist). L'erreur affichée est "Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /include/files/identifier.php on line 35.
De quoi cela vient il?? j'en ai marre de chercher sur mon code, si quelq'un peut jeter un coup d'oeil.... :D
/ ON inclut le fichier de configuration 
require ("config.php"); 

//on se connecte à la base de donnée
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");

//sélection de votre base de donnée
mysql_select_db($mysql_base,$db) or die ("erreur de connexion
base");

// On selectionne quand le champs login correspond au login entré 
// et le champs passe au pass entré. 
$sql = "SELECT * FROM lao_membres WHERE login=$login and pass=$pass"; 

// On execute la requête de selection 
$res = mysql_query($sql); 

// On compte le nombre de ligne des resultats 
// 1 : si valide 0 si aucun login ne correspond 
$exist = mysql_numrows($res); 

// Si la variable $exist = 0 --> login inexistant ou faux pass 
if(!$exist) { 
    // On affiche ce message d'erreur 
    echo "<center>Veuillez vérifier vos données</center>"; 
     
    // On inclut le formulaire d'identification 
    include("formulaire.php"); 
} 

// Sinon, si le login et pass sont valides 
else {

Posté : 06 août 2005, 18:17
par ouckileou
on a généralement cette erreur quand la requête SQL exécutée n'est pas bonne

donc à mon avis le problème ne vient pas du test

essaye ça pour afficher les erreurs SQL :
$res = mysql_query($sql); or die(mysql_error());
de plus, pour compter un nombre de ligne tu ferais mieux d'utiliser l'instruction SQL COUNT

Posté : 06 août 2005, 21:23
par Lpu8er
Normal. La requête est invalide:
login=$login and pass=$pass
Mieux vaut:
login='$login' and pass='$pass'

Lpu8er

Posté : 06 août 2005, 22:59
par Cyrano
Et si on fait méthode Cyrano maniaque :
$sql = "SELECT * FROM lao_membres WHERE login='". $login ."' and pass='". $pass ."'";
En clair, on ne mélange pas les langages: on sépare PHP et SQL dans des concaténations propres ;)