Problème avec la fonction mysql_num_rows

Fermé
Racho - 12 avril 2009 à 20:43
 le père - 14 avril 2009 à 00:58
Bonjour,
alors voila, j'ai un soucis avec la fonction mysql_num_rows, j'ai regardé et essayé les solutions données dans d'autres forum mais ca ne fonctionne toujours pa.
C'est pour mon projet de bac en GSI, j'ai créer une base de données avec une table représentant avec les champs nom et motDePasse, ceux-ci sont à insérer dans un formulaire de connexion qui doit donc, si l'identifiant (qui es le nom) et le mot de passe sont correct, renvoi un nouveau formaulaire avec des informations affichées automatiquement et une autre à insérer. je vous envoi le code en espérant que vous pourrez m'aider, c'est très important. Merci.

voila le scrit de la page de connexion :

<html>
<head>
<title>authentification</title>
</head>
<body bgcolor="orange">

<h1><center> Authentification</center></h1>
<form name="formulaire" method="post" action="traitement.php">

<fieldset><table>
<tr>
<td>Identifiant : </td>
<td><input type="text" name="identifiant" id="identifiant"
</tr>
<tr>
<td>Mot de passe : </td>
<td><input type="text" name="motDePasse" id="motDePasse"
</tr>
<input type="submit" name="button" id="button" value="connexion" />
</form>
</body>
</html>
</head>

et voici le script php :

<?

//connexion au serveur mysql

$con = mysql_connect("localhost", "root", "") ;

//selection de la base de données

$bool = mysql_select_db("festival", $con) ;

//récupération des données issus du formulaire

$login = $_POST["identifiant"];
$motDePasse = $_POST["motDePasse"];

//Création d'une requête mysql sous la forme d'une chaîne de caractères

$query = "select* from responsable, etablissement where etablissement.id=responsable.idEtab AND nom=$login and motDePasse=$motDePasse";

//Envoi d'une requête mysql avec la fonction mysql_query


$resultat = mysql_query($query,$con);
$num_rows = mysql_num_rows($resultat);
if ($num_rows== 1)
{

$enregistrement = mysql_fetch_array($resultat);
$numChefEtab=$enregistrement["idResponsable"];
header("Location : formulaire.php?num=$numChefEtab");
exit();

}

else

{

echo "L'indentifiant ou le mot de passe est incorrect. Veuillez réessayer. <a href = \"connexion.html\">retour<a/>";

}


?>
Encore merci de m'aider :):)
A voir également:

28 réponses

Bonjour

Il y a au moins un problème dans ta requête, il manque un espace entre SELECT et *
D'une manière générale, utilise die (mysql_error()) à chaque requête pour avoir des précisions sur le erreurs :
$resultat = mysql_query($query,$con) or die (mysql_error());
0
Merci du tuyau ;);) mais je ne vois pas quel est le problème, voila dans ma table resonsable, il y a le nomResponsable "Lefort" et le motDePasse "titi", lorsque que j'essai de me connecter avec ceux-ci et en utilisant le "or die (mysql_error())" voila ce qui s'affiche : "Champ 'Lefort' inconnu dans where clause"
0
Le message explique bien le problème. MySQL prend Lefort (et le mot de passe titi aussi d'ailleurs) pour des noms de champs parce qu'ils ne sont pas entourés d'apostrophes ou de double quotes. Modifie ta requête :
$query = "select* from responsable, etablissement where etablissement.id=responsable.idEtab AND nom='$login' and motDePasse='$motDePasse'";
0
merci :D seulement, un autre problème se pose, maintenant lorsque j'appui sur le boutton connexion, une page blanche, vide s'affiche :s:s
0

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

Posez votre question
Je pense (pas sûr) que ça vient de l'espace entre Location et :. Je crois qu'il n'en faut pas :
header("Location: formulaire.php?num=$numChefEtab");
0
nannnnnnnnnnnnnnnn ca ne fonctionne toujours paaaaaaaaas !!!! ça fait 3 jours que je suis dessus ça m'énerve !!! mais merci a toi le père de te donner du mal pour m'aider ;)
0
avant le header("Location... insère un
echo "coucou"; exit;

au moins, on sera sûr que tu passes par là.
Si tu y passes bien, enlève le et remets-en un au début de formulaire.php
0
c'est fait, maintenant voila ce que ça affiche lorsque j'appui sur connexion :
"coucou
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\festival\traitement.php:30) in c:\program files\easyphp1-8\www\festival\traitement.php on line 31"
0
Alors enlève le echo et le exit, et mets-les au début de formulaire.php pour voir que tu y vas bien
0
au fait j'avais pas mis le exit ; donc maintenant ca n'affiche que "coucou";
0
donc ça doit être le header qui ne fonctionne pas, voila la syntaxe :

$resultat = mysql_query($query,$con) or die (mysql_error());
$num_rows = mysql_num_rows($resultat) or die (mysql_error());
if ($num_rows==1)
{

$enregistrement = mysql_fetch_array($resultat);
$numChefEtab=$enregistrement["idResponsable"];

header("Location:formulaire.php?num='$numChefEtab'");
exit();

}

else

{

echo "L'indentifiant ou le mot de passe est incorrect. Veuillez réessayer. <a href = \"connexion.html\">retour<a/>";

}
0
En effet...
header("Location:formulaire.php?num='$numChefEtab'");
ça n'est pas ce que je t'avais dit au message 5
il ne faut pas d'espace entre le location et le : mais il en faut un entre le : et le formulaire.php
0
super maintenant ca m'envoi mon formulaire avec un message d'erreur avant, mais au moin j'ai mon formulaire !!
donc maintenant ca doit être des erreurs dans mon autre script php ;);)
0
Si ça ne te fait rien, je vais me coucher maintenant. À mon âge, il faut se ménager ;-)
À demain peut-être.
0
okii bonne nuit alors et a demain j'espere ;);)
0
Bonjour

Quel message d'erreur as-tu ? Dans quel script ?
0
Bonjour,
alors j'ai quelques petits problèmes :s, je vais les énumérer :
alors quand je saisi un nom avec le mot de passe qui correspond j'ai le fomulaire.php qui m'est retourné mais avec ce message d'erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\festival\formulaire.php on line 15
Erreur de syntaxe près de '1''' à la ligne 1. ( Donc erreur sur le script formulaire.php)

le second est que normalement des informations devraient être automatiquement générer dans certains champ de saisi ( tous a par un ) (erreur sur le script formulaire.php

le dernier ( pour le moment :p ) est que lorsque je saisi un mauvais nom ou un mauvais mot de passe une page blanche m'est retournée au lieu du message suivant : L'indentifiant ou le mot de passe est incorrect. Veuillez réessayer. retour (avec un lien pour revenir a la page de connexion ) (erreur sur le script traitement.php)

Voila !
0
Peux-tu donner le code de formulaire.php tel qu'il est maintenant ?
0
voila le code de formulaire.php

<?
$numChefEtab = $_GET["num"];

//connexion au serveur mysql

$con = mysql_connect("localhost", "root", "") ;

//selection de la base de données

$bool = mysql_select_db("festival", $con) ;

$query = "select * from responsable, etablissement where etablissement.id=responsable.idEtab AND idResponsable='$numChefEtab'";

$resultat = mysql_query($query,$con);
$enregistrement = mysql_fetch_array($resultat) or die (mysql_error());

?>

<html>
<head>
<title>formulaire festival Folklores du monde</title>
</head>
<body bgcolor="orange">

<h1><center> Hébergement des groupes</center></h1>
<form name="formulaire" method="post" action="">
<fieldset><table>
<tr>
<td>Nom* : </td>
<td><input type="text" name="nom" id="nom" disabled="disabled" <?PHP
echo "value".$enregistrement["nom"]; ?>/></td>
</tr>
<tr>
<td>Adresse* : </td>
<td><input type="text" name="adresse" id="adresse" disabled="disabled" <?PHP
echo "value".$enregistrement["adresseRue"]; ?>/></td>


<tr>
<td>Code postal* : </td>
<td><input type="text" name="codePostal" id="codePostal" disabled="disabled" <?PHP
echo "value".$enregistrement["codePostal"]; ?>/></td>

<tr>
<td>Ville* : </td>
<td><input type="text" name="ville" id="ville" disabled="disabled" <?PHP
echo "value".$enregistrement["ville"]; ?>/></td>

<tr>
<td>Téléphone* : </td>
<td><input type="text" name="telephone" id="telephone" disabled="disabled" <?PHP
echo "value".$enregistrement["tel"]; ?>/></td>

<tr>
<td>E-mail : </td>
<td><input type="text" name="mail" id="mail" disabled="disabled" <?PHP
echo "value".$enregistrement["adresseElectronique"]; ?>/></td>

<tr>
<td>Type* :</td>
<td><input type=radio name="radio" value="EtablissementScolaire"
<?

if ($enregistrement["type"]=="EtablissementScolaire")
{echo "selected";}
?>

> Etablissement scolaire</td>
<td><input type=radio name="radio" value="Autre"<?

if ($enregistrement["type"]=="Autre")
{echo "selected";}
?>

> Autre</td>
</table>
<h2>
Responsable :
</h2>
<table>
<tr>
<td>Civilité : </td>

<td><input type="text" name="civiliteResponsable" id="civiliteResponsable" disabled="disabled" <?PHP
echo "value".$enregistrement["civiliteResponsable"]; ?>/></td>

<td>Nom* :<td><input type="text" name="nomResponsable" id="nomResponsable" disabled="disabled" <?PHP
echo "value".$enregistrement["nomResponsable"]; ?>/></td>
<td>Prénom* :<td><input type="text" name="prenom" id="prenom" disabled="disabled" <?PHP
echo "value".$enregistrement["prenomResponsable"]; ?>"/></td>

<tr>
<td>Nombre chambres offertes* : </td>
<td><input type="text" name="nombre" id="nombre"/></td>

</table>
</fieldset>

<p>
<center>

<input type="submit" name="button" id="button" value="Envoyer" />

<input type="submit" name="button" id="button" value="Annuler" />
</center></p>
</form>
</body>
</html>
0
Le problème vient du header qu'on voit message 11. Ça n'est pas celui que je t'avais donné message 5. Non seulement il y avait un problème d'espaces, mais il y a aussi des ' en trop autour de $numChefEtab, je ne l'avais pas remarqué.
Il ne faut pas de ' dans le passage de variable par GET, cela n'a aucun rapport avec les ' qui permettent à mySQL de distinguer un nom de champ d'une valeur.
0