Problème avec my SQL

Salut à tous,
je rencontre quelque problèmes avec php et mySQ, quand j'essaye de savoir si un pseudo est déjà utilisé je rencontre énormèment d'erreur je vous met mon code:
auth-creer-compte.php:
<!DOCTYPE [/contents/498-html-langage html] PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
            <meta http-equiv="Content-Language" content="fr" />
            <title>Créer un compte</title>
            <link rel="stylesheet" href="auth-style-index.css" type="text/css" media="screen" />
        </head>
            
        <body>
 
            <div id="centre">
 
                <h1>Créer un compte</h1>
                
                <form method="POST" action="#">
                    <label for="pseudo">Pseudo : </label><input type="text" name="pseudo" maxlength="20" value="<?php if (!empty($_POST["pseudo"])) { echo stripcslashes(htmlspecialchars($_POST["pseudo"],ENT_QUOTES)); } ?>" /><br/>
                    
                    <label for="pass">Mot de Passe : </label><input type="password" name="motdepass" maxlength="20" value="<?php if (!empty($_POST["motdepass"])) { echo stripcslashes(htmlspecialchars($_POST["motdepass"],ENT_QUOTES)); } ?>" /><br/>

                    <label for="email">Email : </label><input type="text" name="email" maxlength="50" value="<?php if (!empty($_POST["email"])) { echo stripcslashes(htmlspecialchars($_POST["email"],ENT_QUOTES)); } ?>" /><br/>

                    <label for="action">Action : </label><input type="submit" name="Envoyer" value="Envoyer" />

                    <input name="Effacer" value="Effacer" type="reset" />
                </form>
                <br/>
 
                <?php
                    if(isset($_POST['Envoyer'])){
                        //si pseudo vide
                    if(empty($_POST['pseudo'])){
                    echo '<div id="erreur">Veuillez saisir un pseudo!</div>';
                    }
                        //si mot de passe vide
                    else if(empty($_POST['motdepass'])){
                    echo '<div id="erreur">Veuillez saisir un mot de passe!</div>';
                    }
                        //si l'email vide
                    else if(empty($_POST['email'])){
                    echo '<div id="erreur">Veuillez saisir un email!</div>';
                    }
                        //si l'email est invalide
                    else if (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST['email'])){
                    echo '<div id="erreur">Veuillez saisir un email valide!</div>';
                    }
                        //c'est ok
                    else{
                        $link = mysqli_connect('localhost','root','azerty');
                        include("auth-data_bd.php");
                        connexion_bd();
                        //On vérifie si le pseudo existe en bd
                        $pseudo = mysqli_query($link, "SELECT pseudo FROM LOGIN WHERE pseudo='".mysqli_real_escape_string($link, $_POST['pseudo']."'") or die ('Erreur:'.mysql_error()));
                        if(mysql_num_rows($pseudo) != 0)
                        {
                        echo '<div id="erreur">Ce pseudo est déjà utilisé!</div>'; return false;
                        }
                        //on vérifie si le mail existe en bd
                        $email = mysqli_query("SELECT email FROM LOGIN WHERE email='".mysqli_real_escape_string(stripcslashes($_POST['email']))."'") or die ('Erreur :'.mysql_error());
                        if(mysql_num_rows($email) != 0)
                        {
                            echo '<div id="erreur">Cet email est déjà utilisé!</div>'; return false;
                        }   
                    
                           //tout est ok  
              else{
                    //date du jour
                $date=date("Y-m-d");
                // on enregistre les données
                $insert = mysql_query("INSERT INTO LOGIN VALUES ( '', '".mysqli_real_escape_string(stripcslashes(utf8_decode($_POST['pseudo'])))."', '".mysqli_real_escape_string(stripcslashes(utf8_decode($_POST['motdepass'])))."', '".mysqli_real_escape_string(stripcslashes($_POST['email']))."', '".mysql_real_escape_string('0')."',  '".mysqli_real_escape_string('0')."', '".mysql_real_escape_string($date)."' ) ");
                //Si il y a une erreur
                if (!$insert) {
                die('Requête invalide : ' . mysql_error());
                }
                    
                   
                            //pas d'erreur d'enregistrement, on envoie un mail de confirmation
            else {
                //email de celui qui envoie
            $webmaster = $email_webmaster;
                //email de celui qui reçoit
            $a_qui_j_envoie = $_POST['email'];
                //sujet
            $subject = "Valider votre inscription";
                //message   
            $msg  = "Bonjour ".stripcslashes($_POST['pseudo'])."<br/><br/>";
            $msg .= "Veuillez confirmer votre inscription en cliquant sur le lien ci-joint <a href=\"http://".$_SERVER['HTTP_HOST']."/authentification/auth-confirmation.php?pseudo=".stripcslashes($_POST['pseudo'])."&email=".$_POST['email']."\">Confirmation</a><br/>";
            $msg .= "Cordialement";
                //permet de savoir qui envoie le mail et d'y répondre
            $mailheaders = "From: $webmaster\n";
            $mailheaders .= "MIME-version: 1.0\n";
            $mailheaders .= "Content-type: text/html; charset= iso-8859-1\n";
                //on envoie l'email
            mail($a_qui_j_envoie, $subject, $msg, $mailheaders);
                      
                            //confirmation et redirection
                        echo '<div id="ok">Inscription réussit. Un message vous a été envoyé sur votre boîte email pour valider votre inscription.</div>                         <script type="text/javascript"> window.setTimeout("location=(\'cible.php.php?conf=ok\');",3000) </script>';
                        }      
                    }               
                    close_bd();   
                    }
                    }   
                    ?>
                
                <p id="lien"><a href="cible.php" rel="nofollow noopener noreferrer" target="_blank">Connexion</a> | <a href="auth-creer-compte.php" rel="nofollow noopener noreferrer" target="_blank">Créer un compte</a> | <a href="auth-identifiant-perdu.php" rel="nofollow noopener noreferrer" target="_blank">Identifiant perdu?</a></p>

                      
                      </div>
 
            <noscript><div id="erreur"><b>Votre navigateur ne prend pas en charge JavaScript!</b> Veuillez activer JavaScript afin de profiter pleinement du site.</div></noscript>
 
        </body>
</html>

et auth-data_bd:
<?php
//fonction de connexion à la bd
    function connexion_bd(){
 
        $nom_du_serveur ="localhost";
        $nom_de_la_base ="projet";
        $nom_utilisateur ="root";
        $passe ="azerty";
 
        $link = mysqli_connect('localhost','root','azerty') or die ('Erreur : '.mysql_error());
        mysqli_select_db($link,"projet") or die ('Erreur:'.mysql_error());
        if (!$link) {
        die('Connexion impossible : ' . mysql_error() . "<br/>");
        }
    }
    
    function close_bd()
    {
    mysql_close();
    }
    
//email du webmaster
    $email_webmaster = 'boissieux.38.remy@gmail.com';
?>

Voila merci de me répondre au plus vite c'est pour mon projet de sin

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

  1. Modérateur
    Bonjour,

    Lorsque je vois ton code .. j'ai peu...
    par exemple tu as écrit :
                            $link = mysqli_connect('localhost','root','azerty');
                            include("auth-data_bd.php");
                            connexion_bd();
    


    Donc.. tu fais une connexion (à la première ligne...)
    Ensuite tu fais un include d'un fichier qui... vu le nom... contiendrait bien une connexion à la bdd...
    Et pour finir .. tu fais appel à une fonction connexion_bd .. qui là encore fait une connexion à ta bdd...
    Du grand cafouillage .....

    Donc... commence par remettre de l'ordre dans ton code.
    1 - On place le maximum de code PHP AVANT le html (la connexion à la bdd... la récupération des variable post.... )

    2 - On effectue la connexion mysqli PROPREMENT.
    C'est à dire .. en suivant cet exemple :
    $link=mysqli_connect("localhost","my_user","my_password","my_db");
    // Check connection
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      exit();
    }
    


    3 - Lorsque tu fais tes requêtes.. tu les fais en te basant sur cet exemple :
    if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) {
    
        /* Détermine le nombre de lignes du jeu de résultats */
        $row_cnt = mysqli_num_rows($result);
    
    
    }else{
     echo("Error description: " . mysqli_error($link));
    }
    


    4 - On récupère PROPREMENT les variables POST .. AVANT de les utiliser. Pour cela on peut utiliser l'écriture TERNAIRE et les fonctions ISSET ou !EMPTY
    Par exemple :
    $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
    

    et si tu veux mettre du mysqli_real_escape_string.. tu peux le faire comme ça :
    $pseudo = !empty($_POST['pseudo']) ? mysqli_real_escape_string($link, $_POST['pseudo']) : NULL; 
    


    5 - (et c'est le plus important !! ) ... on NE MELANGE PAS des instruction mysql et des instruction mysqli !

    refais ton code en tenant compte de toutes ces remarques puis montre le nous.
    Normalement ça devrait mieux fonctionne si tu suis bien tous ces conseils.....

    1. et les erreurs que j'ai: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Site\auth-creer-compte.php on line 54

      Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\wamp\www\Site\auth-creer-compte.php on line 59

      Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\Site\auth-creer-compte.php on line 59
      1. Modérateur
        Petit rappel, l'extension mysql est obsolète
      2. j'ai changé, la même erreur:
        Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in
      3. Modérateur
        Quel est ton code désormais ?