Php

Bonsoir

Je suis a tenter de faire un espace membre pour mon site web et je recois ce message

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:wampwwwtestssign_up.php on line 43

Voici le contenu de mon fichier sign_up.php

<?php include('config.php'); ?> Inscription
Espace Membre
<?php //On verifie que le formulaire a ete envoye if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='') { //On enleve lechappement si get_magic_quotes_gpc est active if(get_magic_quotes_gpc()) { $_POST['username'] = stripslashes($_POST['username']); $_POST['password'] = stripslashes($_POST['password']); $_POST['passverif'] = stripslashes($_POST['passverif']); $_POST['email'] = stripslashes($_POST['email']); $_POST['avatar'] = stripslashes($_POST['avatar']); } //On verifie si le mot de passe et celui de la verification sont identiques if($_POST['password']==$_POST['passverif']) { //On verifie si le mot de passe a 6 caracteres ou plus if(strlen($_POST['password'])>=6) { //On verifie si lemail est valide if(preg_match('#^(([a-z0-9!#$%&\'*+/=?^_`{|}~-]+.?)*[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+.?)*[a-z0-9-_]+).[a-z]{2,}$#i',$_POST['email'])) { //On echape les variables pour pouvoir les mettre dans une requette SQL $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $email = mysql_real_escape_string($_POST['email']); $avatar = mysql_real_escape_string($_POST['avatar']); //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis $dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"')); if($dn==0) { //On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel $dn2 = mysql_num_rows(mysql_query('select id from users')); $id = $dn2+1; //On enregistre les informations dans la base de donnee if(mysql_query('insert into users(id, username, password, email, avatar, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.time().'")')) { //Si ca a fonctionne, on naffiche pas le formulaire $form = false; ?>
Vous avez bien été inscrit. Vous pouvez dorénavant vous connecter.
Se connecter
<?php } else { //Sinon on dit quil y a eu une erreur $form = true; $message = 'Une erreur est survenue lors de l'inscription.'; } } else { //Sinon, on dit que le pseudo voulu est deja pris $form = true; $message = 'Un autre utilisateur utilise déjà le nom d'utilisateur que vous désirez utiliser.'; } } else { //Sinon, on dit que lemail nest pas valide $form = true; $message = 'L'email que vous avez entré n'est pas valide.'; } } else { //Sinon, on dit que le mot de passe nest pas assez long $form = true; $message = 'Le mot de passe que vous avez entré contien moins de 6 caractères.'; } } else { //Sinon, on dit que les mots de passes ne sont pas identiques $form = true; $message = 'Les mots de passe que vous avez entré ne sont pas identiques.'; } } else { $form = true; } if($form) { //On affiche un message sil y a lieu if(isset($message)) { echo '
'.$message.'
'; } //On affiche le formulaire ?>
Veuillez remplir ce formulaire pour vous inscrire:
Nom d'utilisateur
Mot de passe(6 caractères min.)
Mot de passe(vérification)
Email
Image perso(facultatif)
<?php } ?>
Retour à l'accueil - Support du Web

merci à l’avance

tu es sûr que ton mysql_query() ne retourne pas false ?

Le mieux est d’utiliser la fonction ‘mysql_error’ pour avoir plus d’infos…

$rep=mysql_query(‘select id from users where username="’.$username.’"’) or die (mysql_error());
$dn = mysql_num_rows($rep);

Avec une erreur complète ca sera déjà plus clair…

Au passage, as tu vérifier ta structure de table ?