[SQL] Problème mysqsl_num_rows....

Fermé
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010 - 14 avril 2007 à 14:12
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 16 avril 2007 à 18:50
bonjour à vous,

j'ai un petit soucis avec la fonction que voici qui dépend d'un formulaire de log :

function log_membres() {
// Si le formulaire est envoyé
if (isset($_POST['Submit_02'])) {
// Vérifier les champs de la table
$sql = mysql_query("SELECT Verif_pseudo FROM pirates WHERE Pseudo=='".$_POST['Log_02']."' && MotPass=='".$_POST['PWD_02']."'");
// Si le résultat de la vérif est à 1
if ($res=mysql_num_rows($sql)==1) { //erreur ligne 17
// Création de la variable de session pour les membres
$_SESSION['Log_02_membres']=$res;
echo 'Bienvenue "'.$_POST['Log_02'].'"';
}
// Sinon si le résutltat de la vérif est à 0
else if ($res=mysql_num_rows($sql)==0) { //ligne 23
// Création de la variable de session pour les abonnés
$_SESSION['Log_02_abonnes']=$res;
echo 'Bienvenue "'.$_POST['Log_02'].'"';
}
// Sinon ne pas connecter
else {
die ('Beurk ! t\'es pas beau et j\'te connais pas !');

}
}
}

lorsque je lance ma page, cela m'affiche :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\glorieux_php_02\includes\includes.inc.php on line 17

et j'ai la même erreur en ligne 23 ! qu'est-ce qui ne va pas ???
A voir également:

9 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
14 avril 2007 à 15:00
salut,

il faut exécuter ta requête pour exploiter le résultat.
je te propose un excellent cours, regarde page 78.
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
14 avril 2007 à 15:09
salut dalida !

je pense avoir exécuté ma requète... enfin si exécuter ma requête c'est bien ce que je pense :
cette fonction est sur une page externe ! je l'ai donc appelée avec un include de la page et un echo de la fonction, en l'occurence echo log_membre(); !

c'est bien ça exécuter une requête ????
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010 > nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
14 avril 2007 à 18:31
Ma question est-elle trop idiote pour qu'elle vaille la peine que l'on y réponde ?? loll
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2007 à 06:39
Help, please !

J'ai bien regardé le cours mais je ne vois pas trop ce qu'il faut que je fasse : je débute !

Le problème d'exécution vient-il du fait que je passe 2 paramètres dans le WHERE ou c'est parce que l'exploitation des résultat dans les "if" n'est pas bon ???
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
15 avril 2007 à 10:30
salut,

pour te montrer une connexion classique :
	<?php

connexion à la bdd avec tes paramètres de connexion

	$link = mysql_connect('serveur', 'id', 'mdp');

si la connexion a réussi
		if ($link) {

on définit la table visée
			mysql_select_db('bdd', $link);

définition de la requête
			$sql_query = "SELECT `champ` FROM `table` WHERE `condition`";

exécution de la requête
			$result = mysql_query($sql_query, $link);


maintenant un peut traiter le résultat			
			if (mysql_num_rows($result) >0) {
			
IL Y A DES RESULTATS

			}
			else{

IL N'Y A PAS DE RESULTATS

			}

on oublie pas de fermer la porte en partant
			mysql_close();
		}

si la connexion a échoué
		else{
			$error = mysql_error;
		}
?>

est-ce que l'on est d'accord sur ça ?
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2007 à 10:52
Salut Dalida !

Je suis tout à fait d'accord avec toi, d'ailleurs pour ce qui est de la connexion à la bdd, j'ai une fonction que j'appelle avant :

function connect_bdd() {
$link = mysql_connect('localhost', 'root', '')
    or die("Impossible de se connecter : " . mysql_error());
mysql_select_db('fiches_pirates',$link);


Si ça peut complèter le truc afin que je sache ce qui fait crier mon navigateur... ???
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
15 avril 2007 à 14:13
salut,

je crois que si j'ouvrais les yeux je te ferai gagner du temps...

essai d'écrire ta condition comme ça :
 if (mysql_num_rows($sql)==1) {}
ça doit juste être l'asignation ('=') qui le démange il attend que des égalités ('==') !
si c'est ça j'ai honte...
0

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

Posez votre question
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2007 à 14:35
Dalida, tu n'as aucune honte à avoir : ça ne vient pas de ça !

En fait, on dirait que la fonction log_membres ne lit pas les champs de la base de donnée car quand je tape n'importe quoi comme pseudo et comme mot de passe, il me logue quand même et me souhaite la bienvenue ! Et le même message d'erreur apparait au-dessus...

c'est lassant ce truc ! lolll
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2007 à 14:44
Je viens de voir que tu voulais que j'enlève aussi ma variable $res de la ligne, ce que j'ai fait et j'ai un message qui me dit que la variable de session est undifined en ligne 25 :-(

Je vais devenir chèvre !!! mdr
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
15 avril 2007 à 15:06
 else {
$res=mysql_num_rows($sql);
if ($res==0) { //ligne 23
// Création de la variable de session pour les abonnés
$_SESSION['Log_02_abonnes']=0;
echo 'Bienvenue "'.$_POST['Log_02'].'"';
} 
}

ça bricole, ça bricole...
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
15 avril 2007 à 16:15
Bon... ça s'améliore un peu, je n'ai plus l'erreur en ligne 25 ! Cool !!

Je te redonne mon code car il a évolué depuis, tu t'en doutes... :

// Connexion à la base de données ***
function connect_bdd() {
$link = mysql_connect('localhost', 'root', '')
    or die("Impossible de se connecter : " . mysql_error());
mysql_select_db('fiches_pirates',$link);
} // Fin de fonction ***

// fnoction de log des membres ***
function log_membres()  {
	
	// Si le formulaire est envoyé
	if (isset($_POST['Submit_02'])) {
	
	// Vérifier les champs de la table
	$sql = mysql_query("SELECT Verif_pseudo FROM pirates WHERE Pseudo == '".$_POST['Log_02']."' && MotPass=='".$_POST['PWD_02']."'");
		
		// Si le résultat de la vérif est à 1
		if ($res=mysql_num_rows($sql)==1) {
		
		// Création de la variable de session pour les membres
		$_SESSION['Log_02_membres']=1;
		echo 'Bienvenue '.$_POST['Log_02'].'';
		}
			// Sinon si le résutltat de la vérif est à 0
			else {
			$res=mysql_num_rows($sql);
			if ($res==0) {
			// Création de la variable de session pour les abonnés
			$_SESSION['Log_02_abonnes']=0;
			echo 'Bienvenue '.$_POST['Log_02'].'';
			}
			}
				// Sinon ne pas connecter
				/*else {
				die ('Beurk ! t\'es pas beau et j\'te connais pas !');
				}*/
	}
}


Mais saches qu'il n'aime toujours pas ma fonction mysql_num_rows qu'il considère toujours comme :
mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\...

Je dois avoir un problème de connection à ma bdd, mais lequel ??? Tous les paramètes sont écrits comme il faut : casse respectée et tout le toutim !!!

Sinon, ça t'intéresse que je mette ma page d'affichage en code ??? (celle que je te laisse depuis le début de la conversation, c'est celle qui contient mes fonctions !
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
16 avril 2007 à 10:34
Si une bonne âme peut m'aider, ça serait cool car je galère depuis le début du week-end et ça me saoule !!!

Merci d'avance !
0
nanti Messages postés 59 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 2 avril 2010
16 avril 2007 à 14:18
Bon... j'ai trouvé une partie de la solution :
Il fallait utilise AND et non && dans la partie sql ! lol

Par contre, quand je me logge sous quelqu'un qui devrait être abonné, il me logge comme membre !

Il ne logge les abonnés que s'ils ne sont pas dans la bdd !

Je pense que j'ai dû mal configurer mon champ de bdd, puisqu'il n'en tient pas compte. Normalement 0, c'est un abonné et 1, c'est un membre.

J'espère avoir été assez clair ?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
16 avril 2007 à 18:50
LOL, j'avais même pas lu la requête !
tu peux aussi enlever le double '=='.
0