Bonjour,

J'ai un petit problème avec mon code php.
Je m'explique. J'ai créer avec des amis un site html dans lequel nous présentons nos développements etc... Je suis le seul qui sait coder en html5/css3 et un peu en php de l'équipe. Je souhaite ajouter à mon site un moyen de s'inscrire, j'ai donc écris le code ci-dessous et je souhaite envoyer ses informations à ma base de donnée MySQL. J'ai donc créé une base de donnée phpmembre avec une table "inscription" (dans cette table inscription il y a : id, username, password).
Cependant lorsque je teste le programme et que je m'inscris, le message "Merci {pseudo} ! Votre inscription à été prise en compte" apparait mais aucune information n'est enregistrer dans ma base de donnée...
Je pense que le problème vient de la requète. Qu'en pensez vous ?
<meta charset="utf-8">

<meta charset="utf-8">

<?php
    If(isset($_POST['submit']))
    {
        $username = htmlspecialchars(trim($_POST['username']));
        $password = htmlspecialchars(trim($_POST['password']));
        $repeatpassword = htmlspecialchars(trim($_POST['repeatpassword']));

        if ($username&&$password&&$repeatpassword)
        {
            if (strlen($username)>=5) 
            {
                if (strlen($password)>=5) 
                {
                    if ($password==$repeatpassword) 
                    {

                        $password = md5($password);

                        $bdd = new PDO('mysql:host=localhost;dbname=phpmembre;charset=utf8', 'root', 'root');

                        $req = $bdd->prepare('INSERT INTO inscription(username,password) VALUES (:username, :password');
                        $req->execute(array(
                            'username' => $username,
                            'password' => $password));

                    echo 'Merci ' . $username . ' ! Votre inscritpion à été prise en compte !';
                    }else echo "Les mots de passe ne sont pas identiques !";                    
                }else echo "Votre mot de passe est trop court ! Il doit contenir au moins 5 caractères !";              
            }else echo "Votre nom d'utilisateur est trop court ! Il doit contenir au moins 5 caractères !";
        }else echo "Veuillez saisir tous les champs !";

    }

?>

<h1>Inscription</h1>
<form method="post" action="register.php">
<p>Votre nom d'utilisateur</p>
<input type="text" name="username">
<p>Votre mot de passe</p>
<input type="password" name="password">
<p>Répetez votre mot de passe</p>
<input type="password" name="repeatpassword"><br />
<input type="submit" name="submit" value="Valider">
</form>

7 réponses


Lartak
Réponse acceptée

Essaies ceci.

SI tu veux comprendre dans quel cas et pourquoi utiliser try catch, il te suffit par exemple de regarder le tutoriel vidéo qu'avait réalisé Grafikart : Les Exceptions.

Bonjour.
Pourrais tu nous expliquer la structure exacte de ta table inscription ?
C'est peut-être tout simplement dù au fait que tu n'as pas correctement implémenté la structure de ta table.
Au passage, tu devrais par exemple entourer la connexion à la base de données avec un try catch de manière à avoir un retour des erreurs dans le cas où il y en est.
Exemple :

try {
    $bdd = new PDO('mysql:host=localhost;dbname=phpmembre;charset=utf8', 'root', 'root');
} catch (PDOException $e) {
    die($e->getMessage());
}

Tu pourrais accessoirement le faire aussi pour ta requête, tout du moins le temps de faire tes tests.

Bonsoir,
Voilà la structure ma table inscription :

Pourrait tu me renseigner un peu sur le code try catch ? Je dois implanter le code try catch où dans mon code ?

il manque la parenthèse fermante de VALUES

Merci Lartak !
Ton code fonctionne ! Je vais juste l'examiner pour le comprendre.
Je m'en vais regarder ton tuto ! Merci beaucoup c'est super sympa !

Tu me copieras 20 fois "je dois fermer mes parenthèses avant de poster sur le forum"
c'est compris ?

Huggy, oui je le ferais :x (c'est grave quand même xD)