Problème avec my SQL

Fermé
tacospower Messages postés 51 Date d'inscription dimanche 9 avril 2017 Statut Membre Dernière intervention 2 décembre 2022 - Modifié le 16 mai 2017 à 21:06
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 17 mai 2017 à 03:08
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.
A voir également:

2 réponses

tacospower Messages postés 51 Date d'inscription dimanche 9 avril 2017 Statut Membre Dernière intervention 2 décembre 2022
16 mai 2017 à 21:01
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
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
16 mai 2017 à 21:07
Petit rappel, l'extension mysql est obsolète
0
tacospower Messages postés 51 Date d'inscription dimanche 9 avril 2017 Statut Membre Dernière intervention 2 décembre 2022
16 mai 2017 à 21:09
j'ai changé, la même erreur:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
16 mai 2017 à 22:53
Quel est ton code désormais ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
17 mai 2017 à 03:08
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.....


0