[RESOLU] Erreur : mysql_fetch_array()

Petit nouveau ! | 3 Messages

15 sept. 2013, 12:05

Bonjour à tous !

Alors je vous explique mon problème, j'ai creer un sytème d'espace membre et j'ai ce message d'erreur:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/116/sda/5/0/universdeyacine/register.php on line 15

Voilà la page:
<?php session_start();
mysql_connect('*****', '*****', '*****');
mysql_select_db('*****');

if(isset($_POST['envoyer'])){
if(isset($_POST['pseudo']) AND !empty($_POST['pseudo']) AND isset($_POST['motdepasse']) AND !empty($_POST['motdepasse']) AND isset($_POST['motdepasse2']) AND !empty($_POST['motdepasse2']) AND isset($_POST['email']) AND !empty($_POST['email']) AND isset($_POST['presentation']) AND !empty($_POST['presentation'])){
//Tous les champs ont été remplis:
$pseudo = mysql_escape_string($_POST["pseudo"]);
$presentation = mysql_escape_string($_POST["presentation"]);
$motdepasse = mysql_escape_string(md5($_POST['motdepasse']));
$motdepasse2 = mysql_escape_string(md5($_POST['motdepasse2']));
$email = mysql_escape_string($_POST['email']);

$req = mysql_query('SELECT * FROM membre WHERE pseudo = "'.$pseudo.'"');
$donnee = mysql_fetch_array($req);
if(!isset($donnee['pseudo']))
{
//Vérifie longueur pseudo
$longueur_pseudo = strlen($_POST['pseudo']);

if($longueur_pseudo <= 30){
//le pseudo a une taille conforme:

if($motdepasse == $motdepasse2){

//le deux mot de passe sont les mêmes:


	$req = mysql_query('INSERT INTO membre(pseudo, motdepasse, presentation, email, date_inscription) VALUES("'.$pseudo.'", "'.$motdepasse.'", "'.$presentation.'", "'.$email.'", CURDATE())');
	$success = "Votre compte à correctement été créer, vous pouvez vous connecter en cliquant <a href='login.php' alt='Liens'>ici</a> ";
}
else{

$erreur = 'Erreur: Le mot de passe et le mot de passe de confirmation sont différents !' ;
}



}
else{

	$erreur = 'Erreur: Le pseudo est trop long, (Maximum 30 caracteres)';
}

}
else{

$erreur = 'Ce pseudo existe déjà !';
}
}
else{

	$erreur = 'Erreur: Tous les champs doivent etre remplis !';
}


}

?>

<h1>Inscription</h1>
<div style=" color: red">
<?php if(isset($erreur)) {echo $erreur;}?>
<?php if(isset($success)) {echo $success;}?>
</div>
<hr />
<form action="register.php" method="post">
<p>
Pseudo:<input type="text" name="pseudo" value="<?php if(isset($_POST['pseudo'])){ echo $_POST['pseudo'];}?>"/><br />
Mot de passe:<input  type="password" name="motdepasse" value="<?php if(isset($_POST['motdepasse'])){ echo $_POST['motdepasse'];}?>"/><br />
Confirmation mot de passe:<input type="password" name="motdepasse2" value="<?php if(isset($_POST['motdepasse2'])){ echo $_POST['motdepasse2'];}?>"/><br />
Email:<input type="text" name="email" value="<?php if(isset($_POST['email'])){ echo $_POST['email'];}?>"/><br />
Presentation:(quelques mots sur vous, vos passion ect...)<input type="text" name="presentation" value="<?php if(isset($_POST['presentation'])){ echo $_POST['presentation'];}?>"/><br />
<input type="submit" name="envoyer" value="S'inscrire"/><br />
</p>
</form>




<p><a href='index.php' title="Si tu veux retourner à l'accueil clique ici ;)">Retour accueil</a></p>
Habituellement, j'arrive à trouver mes erreur, mais la j'ai beau chercher, je ne trouve pas :(
Est-ce que vous pouvez m'aider ?

Merci d'avance !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2013, 13:45

Salut,

mysql_query retourne false donc mysql_fetch_array râle :mrgreen:
Affiche la requête et test la dans un client sql.

Il faut toujours vérifier le retour de mysql_query afin d'afficher un message d'erreur (ou l'enregistrer mis en dev afficher c'est pratique) avec mysql_error().

Tu peux t'orienter vers l'extension mysqli afin de moderniser ton code et le préparer a la suppression de l'extension mysql (aujourd'hui dépréciée).

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

15 sept. 2013, 14:57

Merci de ta reponse !
Si j'ai bien compris je dois rajouter mysql_error() comme ça?
$donnee = mysql_fetch_array($req) or die mysql_error();

ViPHP
xTG
ViPHP | 7331 Messages

15 sept. 2013, 18:25

$req= mysql_query(...) or die(mysql_error());

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 sept. 2013, 20:52

Ou alors faire quelque chose de propre avec un if / else afin de ne pas rester sur une page vide avec un message d'erreur c'est pas terrible.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

16 sept. 2013, 17:34

Salut, merci à tous les deux !
Enfaite j'avais plusieurs base de données et je mettait embrouiller avec elles ...
Maintenant ça marche merci encore !