Probleme PHP sur page connexion avec mysql_fetch_array()

Fermé
S504 - 5 mai 2015 à 16:45
jordane45 Messages postés 38456 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 mars 2025 - 5 mai 2015 à 17:40
Bonjour,

J'obtiens cette erreur quand on veut se connecter sur mon site web en developpement.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in

J'aimerai savoir pourquoi j'obtiens cette erreur. Qu'est qui faut que je change pour ne plus avoir cette erreur.

Voici mon code!
 <form method="post" action="connexion.php">
<fieldset>
	<legend>Connexion</legend>
		<p>
			<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
			<label for="mdp">Mot de Passe :</label><input type="mdp" name="mdp" id="mdp" />
		</p>
</fieldset>
		<p><input type="submit" value="Connexion" /></p>
</form>

<?php

	if(!empty($_POST['pseudo']) and isset($_POST['mdp']))
	{
	        $pseudo = $_POST['pseudo'];

		$mdp = $_POST['mdp'];

		mysql_connect('localhost','root','');

		mysql_select_db('bd_brunomercille');

		$requete  = "SELECT peusdo, mdp ";
		$requete .= "FROM tbl_admin ";
		$requete .= "WHERE pseudo='".$pseudo."' AND mdp = '".$mdp."' ";						
		$sql = mysql_query($requete); 

		while($ligne = mysql_fetch_array($sql))
		{

		       if($ligne['pseudo'] == $pseudo and $ligne['mdp']== $mdp)
		       {
			        session_start(); // on ouvre une session

				$_SESSION['pseudo'] = $ligne['pseudo'];

				$_SESSION['mdp'] = $ligne['mdp'];

				echo "vous vous êtes bien connectés";
							
			}

			else
			{ 

			echo "Vous avez fait une erreur lors de la saisie du pseudo et                    du mot de passe, recommencez:";

			} 

		}

	}
	else
        { 
		echo "Vous n'avez pas remplis un des champs, recommencez";

	} 


A voir également:

1 réponse

jordane45 Messages postés 38456 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 mars 2025 4 740
Modifié par jordane45 le 5/05/2015 à 17:40
Bonjour,

Déjà.. il serait bien de placer la connexion à ta BDD dans un fichier à part .. que tu inclueras uniquement lorsque tu en as besoin...
Cela t'évitera de devoir te retaper toutes la pages de ton site une par une.. au cas où tu aurais besoin de changer les infos de connexion à ta BDD...

Fichier : connexion_bdd.php
$host = "localhost";
$user = "root";
$pwd = "";
$base = "bd_brunomercille";

 mysql_connect($host,$user,$pwd)  or die('Connexion impossible : ' . mysql_error());
 mysql_select_db($bdd) or die ('Impossible de sélectionner la base de données : ' . mysql_error());;
?>



Ensuite.. dans ton code :

- Pas besoin de faire des $requête .= "..." .. tu peux tout écrire dans un seul et faire des retours à la ligne...

- Ajout de "or DIE" pour gérer les erreurs

- On regarde le Nb lignes retournées par la requête ... et donc.. si résultat il y a.. alors on peut se connecter... pas besoin de while...

require_once "connexion_bdd.php";

$sql= "SELECT peusdo
                     , mdp 
         FROM tbl_admin
         WHERE pseudo='$pseudo' 
            AND mdp = '$mdp' ";

$result= mysql_query($requete) or die ("<br>Erreur dans la requête : " . mysql_error() . " <br> Requete: ".$sql); 

$num_rows = mysql_num_rows($result);
 if($num_rows == 1){
  $_SESSION['pseudo'] = $ligne['pseudo'];
 $_SESSION['mdp'] = $ligne['mdp'];
 echo "vous vous êtes bien connectés";
       
}else { 
 echo "Vous avez fait une erreur lors de la saisie du pseudo et                    du mot de passe, recommencez:";

 } //fin du if $num_rows



NB : Le session_start est à placer TOUT EN HAUT de ton script .. avant même que quoi que ce soit ne soit affiché !!

NB2 : Tu utilises l'ancienne extension Mysql .. attention.. elle est considérée comme Oblsolète.
Je t'invite à lire ceci ( puis à passer à la PDO ! )
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

.


Cordialement,
Jordane
0