Warning : supplied argument is not a valid MySQL result

Invité
Invité n'ayant pas de compte PHPfrance

15 déc. 2005, 23:37

Salut à tous,

un soucis avec ce bout de code, j'avoue ne pas comprendre ce qu'il se passe...
$requete = "select id from p_user where login = '$login' and password = '$password '";
$resultat = mysql_query($requete);

$isAuthenticated = (mysql_num_rows($resultat) >  0);
Ca me renvoit l'erreur
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
alors que la requête me renvoit un résultat sur phpMyAdmin...

Mammouth du PHP | 19672 Messages

16 déc. 2005, 00:52

Qu'essayes-tu donc d'attribuer comme valeur à $isAuthenticated ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

27 déc. 2005, 19:03

Salut à tous,

un soucis avec ce bout de code, j'avoue ne pas comprendre ce qu'il se passe...
$requete = "select id from p_user where login = '$login' and password = '$password '";
$resultat = mysql_query($requete);

$isAuthenticated = (mysql_num_rows($resultat) >  0);
Ca me renvoit l'erreur
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
alors que la requête me renvoit un résultat sur phpMyAdmin...
J'ai le meme probleme, as tu résolu le tien?
if(mysql_num_rows($result)>0){
return TRUE;

me retourne

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in "le nom du fichier ou il y a le code"

Merci de répondre.

Petit nouveau ! | 9 Messages

27 déc. 2005, 19:06

Salut à tous,

un soucis avec ce bout de code, j'avoue ne pas comprendre ce qu'il se passe...
$requete = "select id from p_user where login = '$login' and password = '$password '";
$resultat = mysql_query($requete);

$isAuthenticated = (mysql_num_rows($resultat) >  0);
Ca me renvoit l'erreur
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
alors que la requête me renvoit un résultat sur phpMyAdmin...
Salut, j'ai le meme probleme, merci de me dire si vous avez résolu et comment ca serait coolos.

MERCI

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 déc. 2005, 19:44

Le probleme vient du code or si tu nous montres pas le tient il y a peu de chances qu'on puisse trouver l'erreur :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 2144 Messages

27 déc. 2005, 19:55

En gros, la requête n'est pas exécutée correctement et donc il est impossible d'exploiter le résultat (avec mysql_num_rows dans ton cas). Ajoute un "or die (mysql_error()); "juste après mysql_query:
mysql_query($requete) or die (mysql_error());

pour voir ce qui plante et teste la requête en faisant un copie-coller dans phpMyAdmin

A vue de nez je dirais que la clause where n'est pas correcte

Invité
Invité n'ayant pas de compte PHPfrance

27 déc. 2005, 21:51

Le probleme vient du code or si tu nous montres pas le tient il y a peu de chances qu'on puisse trouver l'erreur :wink:
Ca donne ca, ca sert a ouvrir une cession pour acceder a du contenu securisé, j'ai intallé WAMP5 1.8, et le tuto est pour php5 qui a du s'installer avec wamp.

CODE:

<?php
// initialisation de la session
session_start() ;

// si on a reçu les données d'un formulaire :
if ( !empty( $_POST['pseudo'] ) && !empty( $_POST['motdepasse'] ) ) {

// on les récupère
$nom = $_POST['pseudo'] ;
$motdepasse = $_POST['motdepasse'] ;

// on teste si le mot de passe est valide :
if ( verification( $nom, $motdepasse ) ) {

// on sauvegarde donc son nom dans la session
$_SESSION['nom'] = $nom ;
$message = 'vous êtes correctement identifié' ;
} else {
// sinon on avertit l'utilisateur :
$message = 'Mauvais mot de passe' ;
$message .='<a href="auth.php">retour</a>' ;
}
} else {
// un des champs n'est pas rempli
$message = 'le login ou le mot de passe est vide' ;
$message .='<a href="auth.php">retour</a>' ;
}
function verification($nom,$pass){
// Connexion SQL
$dbhote = 'localhost';
$dbuser = 'root';
$dbpass = 'monpass';
$dbbase = 'application';
$link = mysql_connect($dbhote,$dbuser,$dbpass);
mysql_select_db($dbbase,$link);

// Création de la requête SQL
$nom_sql = mysql_real_escape_string($nom) ;
$pass_sql = mysql_real_escape_string($pass) ;
$sql ="SELECT * FROM user "
. " WHERE user_name='$nom_sql' AND password='$pass_sql'" ;

// Exécution de la requête SQL
$result = mysql_query($sql,$link);
if(mysql_num_rows($result)>0){
return TRUE;
}else{
return FALSE;
}
}

?>


<html>
<head><title>Identification</title></head>
<body><p>
<?php echo $message ?>
</p></body>
</html>

Invité
Invité n'ayant pas de compte PHPfrance

27 déc. 2005, 21:54

En gros, la requête n'est pas exécutée correctement et donc il est impossible d'exploiter le résultat (avec mysql_num_rows dans ton cas). Ajoute un "or die (mysql_error()); "juste après mysql_query:
mysql_query($requete) or die (mysql_error());

pour voir ce qui plante et teste la requête en faisant un copie-coller dans phpMyAdmin

A vue de nez je dirais que la clause where n'est pas correcte
Salut et merci des réponses, j'ai fait ca et voila le résultat:

"Unknown column 'user_name' in 'where clause'"

Désolé mais c du charabia, je suis débutant, voir encore moins en fait, si ca vous parle, je veux bien des trucs....

MERCI encore

ViPHP
ViPHP | 2144 Messages

27 déc. 2005, 23:23

Le message, bien qu'en anglais est relativement explicite: tu fais référence dans ta clause where à une colonne user_name qui n'existe pas.
Il faudrait qu'on voit la structure de la table...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 déc. 2005, 23:25

"Unknown column 'user_name' in 'where clause'"
au mot a mot:
inconnu colonne 'user_name' dans 'where clause'

La table "user" ne contient pas de champ "user_name", verifis l'orthographe

EDIT: bon le temps que je resort mon dico d'anglais j'suis en retard :lol:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

28 déc. 2005, 12:32

"Unknown column 'user_name' in 'where clause'"
au mot a mot:
inconnu colonne 'user_name' dans 'where clause'

La table "user" ne contient pas de champ "user_name", verifis l'orthographe

EDIT: bon le temps que je resort mon dico d'anglais j'suis en retard :lol:
Effectivement, c pas user_name dans ma table, mais user tout court...
MERCI de vos réponses. c cool

Invité
Invité n'ayant pas de compte PHPfrance

28 déc. 2005, 12:40

"Unknown column 'user_name' in 'where clause'"
au mot a mot:
inconnu colonne 'user_name' dans 'where clause'

La table "user" ne contient pas de champ "user_name", verifis l'orthographe

EDIT: bon le temps que je resort mon dico d'anglais j'suis en retard :lol:
Effectivement, c pas user_name dans ma table, mais user tout court...
MERCI de vos réponses. c cool
Une question:

Lorse que je veux requeter une table "B" avec UserB1 et PassB2, je dois dabord me connecter a ma base avec userA1 et pass A2?, puis requeter B avec userB1 et passB2?

genre:

$dbhote = 'localhost';
$dbuser = 'root';
$dbpass = 'luky';
$dbbase = 'identif';
$link = mysql_connect($dbhote,$dbuser,$dbpass);
mysql_select_db($dbbase,$link);

// Création de la requête SQL
$nom_sql = mysql_real_escape_string($nom) ;
$pass_sql = mysql_real_escape_string($pass) ;
$sql ="SELECT * FROM user "
. " WHERE user='$nom_sql' AND password='$pass_sql'" ;

$dbbase c qui? c'est A ou B?, localhost veut dire que je m'authentifie a la bd A, puis a une table dépendante?? qui s'appele identif B ? du cou "user et password c pour B ou A?

Je suis désolé mais je peux pas m'exprimer autrement, je suis trop null mais jve apppprendre!!!!!!!

MERCI de vos réponses.

Petit nouveau ! | 9 Messages

28 déc. 2005, 12:59

au mot a mot:
inconnu colonne 'user_name' dans 'where clause'

La table "user" ne contient pas de champ "user_name", verifis l'orthographe

EDIT: bon le temps que je resort mon dico d'anglais j'suis en retard :lol:
Effectivement, c pas user_name dans ma table, mais user tout court...
MERCI de vos réponses. c cool
Une question:

Lorse que je veux requeter une table "B" avec UserB1 et PassB2, je dois dabord me connecter a ma base avec userA1 et pass A2?, puis requeter B avec userB1 et passB2?

genre:

$dbhote = 'localhost';
$dbuser = 'root';
$dbpass = 'luky';
$dbbase = 'identif';
$link = mysql_connect($dbhote,$dbuser,$dbpass);
mysql_select_db($dbbase,$link);

// Création de la requête SQL
$nom_sql = mysql_real_escape_string($nom) ;
$pass_sql = mysql_real_escape_string($pass) ;
$sql ="SELECT * FROM user "
. " WHERE user='$nom_sql' AND password='$pass_sql'" ;

$dbbase c qui? c'est A ou B?, localhost veut dire que je m'authentifie a la bd A, puis a une table dépendante?? qui s'appele identif B ? du cou "user et password c pour B ou A?

Je suis désolé mais je peux pas m'exprimer autrement, je suis trop null mais jve apppprendre!!!!!!!

MERCI de vos réponses.
J'ai trouvé, effectivement, dbbase, c la table B, et le user_name et password c bien pour B,"identif".

Apparement c bon, mais j'ai une autre question:

En fait je fais ca pour identifier un utilisateur, et ouvrir une cession.
J'arrive a identifier mainteneant, et je voudrais a ce moment la qu'il puisse acceder a certaines pages qui lui sont réservées, j'ai vu que je devais faire un include dans ces pages, c ok, mais comment fabriquer la page qui supportera les liens vers les pages securisées??
Genre il s'authentifie, apparait une page spécialement concu pour lui, et de la quelle il peut cliquer sur des liens pour acceder aux differentes sous parties.

Dois je mettre les liens de la premiere dans le base, champ page par ex, puis les liens aussi dans un colone lien??

Si oui, comment je crais cette page, en fait je sais pas afficher du contenu de la bdd dan une page html.

Peut etre qu'il y a plus simple aussi...j'attends vos lumieres s'il vous plait.

MERCI encore de vos réponses, c pas le cas de tout les forums, les nulls ont pas le droit d'apprendre, ou de déranger les pointures peut etre, et c pas le cas chez vous coooool.

Mammouth du PHP | 19672 Messages

28 déc. 2005, 13:58

Alors là, tu attaques un nouveau problème qui devrait faire partie d'un nouveau message qui aurait tout à fait sa place dans un des forums PHP. Le principe sommairement est cependant le suivant:
- Tu identifie l'internaute par le biais d'une requête;
- Si l'internaute est identifié, tu crées une variable de session avec une valeur, s'il ne l'est pas, tu peux toujours avoir la même variable de session avec une autre valeur.
- Au début de chaque page, tu testes la valeur de cette variable de session et selon cette valeur, tu affiches ou non certains liens vers des pages à accès restreint.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: