Probleme Warning: mysql_num_rows(): supplied argument is not a v

Fermé
THEPIXADE Messages postés 25 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 17 novembre 2013 - 8 avril 2013 à 23:02
 Utilisateur anonyme - 9 avril 2013 à 22:57
Bonjour,

j'ai une erreur comme vvvvvvvvvvvv
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

Mon code
<?php

session_start();

$BDD = mysql_connect("******","*****","********");
mysql_select_db("database");

?>

<?php

// On met les variables utilisé dans le code PHP à FALSE (C'est-à-dire les désactiver pour le moment).
$error = FALSE;
$registerOK = FALSE;

    // On regarde si l'utilisateur est bien passé par le module d'inscription
    if(isset($_POST["register"])){
        
        // On regarde si tout les champs sont remplis, sinon, on affiche un message à l'utilisateur.
        if($_POST["login"] == NULL OR $_POST["pass"] == NULL OR $_POST["pass2"] == NULL){
            
            // On met la variable $error à TRUE pour que par la suite le navigateur sache qu'il y'a une erreur à afficher.
            $error = TRUE;
            
            // On écrit le message à afficher :
            $errorMSG = "Tout les champs doivent être remplis !";
                
        }
        
        // Sinon, si les deux mots de passes correspondent :
        elseif($_POST["pass"] == $_POST["pass2"]){
            
            // On regarde si le mot de passe et le nom de compte n'est pas le même
            if($_POST["login"] != $_POST["pass"]){
                
                // Si c'est bon on regarde dans la base de donnée si le nom de compte est déjà utilisé :
                $sql = "SELECT login FROM users WHERE login = '".$_POST["login"]."' ";
                $sql = mysql_query($users);
            // On compte combien de valeur à pour nom de compte celui tapé par l'utilisateur.
            $sql = mysql_num_rows($users);
            
               // Si $sql est égal à 0 (c'est-à-dire qu'il n'y a pas de nom de compte avec la valeur tapé par l'utilisateur
               if($sql == 0){
               
                  // Si tout va bien on regarde si le mot de passe n'exède pas 60 caractères.
                  if(strlen($_POST["pass"] < 60)){
                  
                     // Si tout va bien on regarde si le nom de compte n'exède pas 60 caractères.
                     if(strlen($_POST["login"] < 60)){
                     
                        // Si le nom de compte et le mot de passe sont différent :
                        if($_POST["login"] != $_POST["pass"]){
                     
                           // Si tout ce passe correctement, on peut maintenant l'inscrire dans la base de données :
                           $sql = "INSERT INTO users (login,pass) VALUES ('".$_POST["login"]."','".$_POST["pass"]."')";
                           $sql = mysql_query($sql);
                           
                           // Si la requête s'est bien effectué :
                           if($sql){
                           
                              // On met la variable $registerOK à TRUE pour que l'inscription soit finalisé
                              $registerOK = TRUE;
                              // On l'affiche un message pour le dire que l'inscription c'est bien déroulé :
                              $registerMSG = "Inscription réussie ! Vous êtes maintenant membre du site.";
                              
                              // On le met des variables de session pour stocker le nom de compte et le mot de passe :
                              $_SESSION["login"] = $_POST["login"];
                              $_SESSION["pass"] = $_POST["pass"];
                              
                              // Comme un utilisateur est différent, on crée des variables de sessions pour "varier" l'utilisateur comme ceci :
                              // echo $_SESSION["login"]; (bien entendu avec les balises PHP, sinons cela ne marchera pas.
                           
                           }
                           
                           // Sinon on l'affiche un message d'erreur (généralement pour vous quand vous testez vos scripts PHP)
                           else{
                           
                              $error = TRUE;
                              
                              $errorMSG = "Erreur dans la requête SQL<br/>".$sql."<br/>";
                           
                           }
                        
                        }
                        
                        // Sinon on fais savoir à l'utilisateur qu'il a mis un nom de compte trop long.
                        else{
                        
                           $error = TRUE;
                           
                           $errorMSG = "Votre nom compte ne doit pas dépasser <strong>60 caractères</strong> !";
                           
                           $login = NULL;
                           
                           $pass = $_POST["pass"];
                        
                        }
                     
                     }
                  
                  }
                  
                  // Si le mot de passe dépasse 60 caractères on le fait savoir
                  else{
                  
                     $error = TRUE;
                     
                     $errorMSG = "Votre mot de passe ne doit pas dépasser <strong>60 caractères</strong> !";
                     
                     $login = $_POST["login"];
                     
                     $pass = NULL;
                  
                  }
               
               }
               
               // Sinon on affiche un message d'erreur lui disant que ce nom de compte est déjà utilisé.
               else{
               
                  $error = TRUE;
                  
                  $errorMSG = "Le nom de compte <strong>".$_POST["login"]."</strong> est déjà utilisé !";
                  
                  $login = NULL;
                  
                  $pass = $_POST["pass"];
               
               }
            }
            
            // Sinon on fais savoir à l'utilisateur qu'il doit changer le mot de passe ou le nom de compte
            else{
                
                $error = TRUE;
                
                $errorMSG = "Le nom de compte et le mot de passe doivent êtres différents !";
                
            }
            
        }
      
      // Sinon si les deux mots de passes sont différents :      
      elseif($_POST["pass"] != $_POST["pass2"]){
      
         $error = TRUE;
         
         $errorMSG = "Les deux mots de passes sont différents !";
         
         $login = $_POST["login"];
         
         $pass = NULL;
      
      }
      
      // Sinon si le nom de compte et le mot de passe ont la même valeur :
      elseif($_POST["login"] == $_POST["pass"]){
      
         $error = TRUE;
         
         $errorMSG = "Le nom de compte et le mot de passe doivent être différents !";
      
      }
        
    }

?>

<?php

   mysql_close($BDD);

?>

<?php // On affiche les erreurs :
if($error == TRUE){ echo "<p align='center' style='color:red;'>".$errorMSG."</p>"; }
?>
<?php // Si l'inscription s'est bien déroulée on affiche le succès :
if($registerOK == TRUE){ echo "<p align='center' style='color:green;'><strong>".$registerMSG."</strong></p>"; }
?>
<html>

    <head>
    
        <title>Création d'un formulaire d'inscription en HTML</title>
    
    </head>
    
    <body>
    
        <form action="inscription.php" method="post">
        
            <table>
            
            <tr>
            
            <td><label for="login"><strong>Nom de compte :</strong></label></td>
            <td><input type="text" name="login" id="login"/></td>
            
            </tr>
            
            <tr>
            
            <td><label for="pass"><strong>Mot de passe :</strong></label></td>
            <td><input type="password" name="pass" id="pass"/></td>
            
            </tr>
            
            <tr>
            
            <td><label for="pass2"><strong>Confirmez le mot de passe :</strong></label></td>
            <td><input type="password" name="pass2" id="pass2"/></td>
            
            </table>
        
        <input type="submit" name="register" value="S'inscrire"/>
        
        </form>
    
    </body>

</html>



Je sais pas pourquoi ça me fait ça

Merci The_Pixade

3 réponses

Utilisateur anonyme
9 avril 2013 à 09:01
Bonjour

Je n'ai pas regardé plus loin, mais ton problème s'explique déjà ici :

 $sql = "SELECT login FROM users WHERE login = '".$_POST["login"]."' ";
 $sql = mysql_query($users);

Tu as inversé $sql et $users
0
THEPIXADE Messages postés 25 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 17 novembre 2013
9 avril 2013 à 17:06
Enfait je pence que ça vien du SQL

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/filer-6/web/web440/htdocs/inscription.php on line 40
Erreur dans la requête SQL

Merci The_Pixade
(je sais pas comment regle ça)
0
Utilisateur anonyme
9 avril 2013 à 17:48
Enfait je pence que ça vien du SQL
C'est bien ce que je t'ai dit

je sais pas comment regle ça
Comment régler quoi ? J'ai expliqué et souligné l'erreur.
0
THEPIXADE Messages postés 25 Date d'inscription samedi 10 novembre 2012 Statut Membre Dernière intervention 17 novembre 2013
9 avril 2013 à 19:08
Donc je doit mettre
$sql = mysql_query($users);<code>

A la place de users je mets SQL ?
0
Utilisateur anonyme
9 avril 2013 à 22:57
J'ai écrit "Tu as inversé $sql et $users"
Je suis désolé, Il n'y a pas de balise "rouge clignotant".
0