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

Bon j'ai fais ce que tu m'as dit, cela a réglé le problème du message d'erreur et je t'en remerci, mais reste les deux autres problèmes à savoir le fait que lorsque je saisi un mauvais identifiant ou un mauvais mot de passe le système me renvoi la page traitement.php mais celle-ci est blanche.
L'autre problème est que normalement des données devraient êtres générer automatiquement et ce n'est pas le cas :s:s
0
Pour les valeurs qui ne sont pas initialisées, c'est normal, regarde ton code. Par exemple la ligne
<input type="text" name="adresse" id="adresse" disabled="disabled" <?PHP echo "value".$enregistrement["adresseRue"]; ?>/>
Elle génère <input type="text" name="adresse" id="adresse" disabled="disabled" valuerue machin/>
Alors qu'il faudrait obtenir <input type="text" name="adresse" id="adresse" disabled="disabled" value="rue machin" />

Donc ta ligne aurait dû être (pour chaque champ input)
<input type="text" name="adresse" id="adresse" disabled="disabled" value="<?PHP echo $enregistrement["adresseRue"] ?>" />

Pour le message "L'indentifiant ou le mot de passe est incorrect...." je ne vois pas encore de raison. Tu es sûr qu'il ne s'affche pas ?
0
merci c'est bon pour les infos initialisées merci encore !!
et non je suis sur que ca s'affiche pas lol l'url me dit que c'est la page traitement.php mais elle est vierge
0
dans traitement.php, après le
$num_rows = mysql_num_rows($resultat);
peux-tu ajouter
echo "nombre de réponses : ",$num_rows ; exit();

et refaire l'essai avec un mauvais nom d'utilisateur mot de passe
0

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

Posez votre question
cela me fait toujours la même chose :s
0
Donc ça n'affiche même pas "nombre de réponses "???? pas possible ! m'enfin...
Peux-tu redonner le code de traitement.php ?
0
cela m'affiche le nombre de réponse seulement lorsque le nom et le mot de passe sont corrects, et ce nombre est donc évidemment "1".
Voila le code :
<?

//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 nomResponsable='$login' and motDePasse='$motDePasse'";

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


$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/>";
exit();

}


?>
0
Si le if n'est pas exécuté, ni le else, ça veut dire que le programme plante avant. Et comme tu n'as pas de message d'erreur, il ne plante pas non plus.
Je ne vois pas pour l'instant. Je vais me coucher, je me lève tôt demain.
0