Mes données ne s'affichent pas dans phpmyadmin

Par Berenger, il y a 1 an


Base de données MySQL

Bonjour cher tous. Je suis entrain de suivre un tuto php sur udemy que j'applique au fur et à mesure, mais j'ai un problème.

La connexion à la base données est bonne, tout est bien (je crois parce que pas d'erreur en retour), et après avoir renseigné le formulaire d'inscription le message disant que le compte a été crée avec succès s'affiche, mais le problème est quand je me rend sur localhost/phpmyadmin les données ne ce sont pas insérées. Je galère dessus. J'ai besoin de votre aide. Voici le code :

bdd.php

<?php $dsn = 'mysql:dbname = sgn-daara; host=localhost'; $user = 'root'; $password = ''; try { $bdd = new PDO($dsn, $user, $password); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if($bdd){ echo "Vous êtes connecté à la base de données !" ; } } catch (PDOException $e) { echo "Echec lors de la connexion : " .$e->getMessage() ; } ?>

register.php

<?php if (isset($_POST['inscription'])) { if(empty($_POST['nom']) || !ctype_alpha($_POST['nom'])){ $erreur_message = "Votre nom doit être une chaine de caractères alphabétiques !" ; }elseif(empty($_POST['prenom']) || !preg_match('#[^ <> *+/]#', $_POST['prenom'])){ $erreur_message = "Votre prenom doit être une chaine de caractères alphabétiques !" ; }elseif(empty($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){ $erreur_message = "Rentrez une adresse email valide !"; }elseif(empty($_POST['password']) || $_POST['password'] != $_POST['confirm_password']){ $erreur_message = "Rentrer un mot de passe valide !" ; }elseif(empty($_POST['username']) || !ctype_alnum($_POST['username'])){ $erreur_message = "Votre nom d'utilisateur doit être une chaine de caractères alphanumériques !" ; }else{ require_once "includes/bdd.php"; $requete = $bdd->prepare('INSERT INTO utilisateurs(nom_utilisateur, prenom_utilisateur, email_utilisateur, password_utilisateur, username, photo_utilisateur, token_utilisateur) VALUES(:nom, :prenom, :email, :password, :username, :photo_profil, :token'); $requete->bindvalue(':nom', $_POST['nom']); $requete->bindvalue(':prenom', $_POST['prenom']); $requete->bindvalue(':email', $_POST['email']); $requete->bindvalue(':password', $_POST['password']); $requete->bindvalue(':username', $_POST['username']); $requete->bindvalue(':token', "aaaa"); $valid_message = "Votre compte a été crée avec succès !"; if(empty($_FILES['photo_profil']['name'])){ $photo_profil = 'avatar_defaut.png'; $requete->bindValue(':photo_profil', $photo_profil); }else{ if(preg_match("#jpeg|png|jpg#", $_FILES['photo_profil']['type'])){ $path = "uploader/photo_profil/"; move_uploaded_file($_FILES["photo_profil"]["tmp_name"], $path.$_FILES["photo_profil"]["tmp_name"]); }else{ $erreur_message = "La photo de profil doit être de type jpeg, jpg ou png"; } $requete->bindValue(':photo_profil', $_FILES['photo_profil']['name']); $requete->execute(); } } } ?>

8 réponses

Berenger, il y a 1 an

Non le problème n'est pas encore résolu. Désolé, j'ai appuyer sur valider sans me rendre compte

Carouge10, il y a 1 an

Bonjour,
Il nous manque du code car je ne vois pas le echo de "$valid_message", ni le formulaire
Vous avez activé l'affichage des erreurs de php ?
Eviter les espaces dans DSN
la méthode est bindValue et non bindvalue
Il manque une ) à la fin de la requête INSERT

Berenger, il y a 1 an
<?php require_once 'includes/header_register.php'; ?> <?php if (isset($_POST['inscription'])) { if(empty($_POST['nom']) || !ctype_alpha($_POST['nom'])){ $erreur_message = "Votre nom doit être une chaine de caractères alphabétiques !" ; }elseif(empty($_POST['prenom']) || !preg_match('#[^ <> *+/]#', $_POST['prenom'])){ $erreur_message = "Votre prenom doit être une chaine de caractères alphabétiques !" ; }elseif(empty($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)){ $erreur_message = "Rentrez une adresse email valide !"; }elseif(empty($_POST['password']) || $_POST['password'] != $_POST['confirm_password']){ $erreur_message = "Rentrer un mot de passe valide !" ; }elseif(empty($_POST['username']) || !ctype_alnum($_POST['username'])){ $erreur_message = "Votre nom d'utilisateur doit être une chaine de caractères alphanumériques !" ; }else{ require_once "includes/bdd.php"; $requete = $bdd->prepare('INSERT INTO utilisateurs(nom_utilisateur, prenom_utilisateur, email_utilisateur, password_utilisateur, username, token_utilisateur, photo_utilisateur) VALUES(:nom, :prenom, :email, :password, :username, :token, :photo_profil)'); $requete->bindValue(':nom', $_POST['nom']); $requete->bindValue(':prenom', $_POST['prenom']); $requete->bindValue(':email', $_POST['email']); $requete->bindValue(':password', $_POST['password']); $requete->bindValue(':username', $_POST['username']); $requete->bindValue(':token', "aaaa"); $valid_message = "Votre compte a été crée avec succès !"; if(empty($_FILES['photo_profil']['name'])){ $photo_profil = 'avatar_defaut.png'; $requete->bindValue(':photo_profil', $photo_profil); }else{ if(preg_match("#jpeg|png|jpg#", $_FILES['photo_profil']['type'])){ $path = "uploader/photo_profil/"; move_uploaded_file($_FILES["photo_profil"]["tmp_name"], $path.$_FILES["photo_profil"]["tmp_name"]); }else{ $erreur_message = "La photo de profil doit être de type jpeg, jpg ou png"; } $requete->bindValue(':photo_profil', $_FILES['photo_profil']['name']); $requete->execute(); } } } ?> <!-- End Logo --> <div class="card mb-3"> <div class="card-body"> <div class="pt-4 pb-2"> <div role="alert"> <?php if(isset($erreur_message)) { ?> <div class="alert alert-danger alert-dismissible fade show"> <i class="bi bi-exclamation-octagon me-1"></i> <?php echo $erreur_message; ?> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div> <?php } elseif(isset($valid_message)) { ?> <div class="alert alert-success alert-dismissible fade show" > <i class="bi bi-check-circle me-1"></i> <?php echo $valid_message; ?> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div> <?php } ?> </div> <h5 class="card-title text-center pb-0 fs-4">Créer un compte</h5> <p class="text-center small">Renseignez vos données personnelles pour créer un compte</p> </div> <form action = "register.php" method = "POST" enctype = "multipart/form-data" class="row g-3 needs-validation" novalidate> <div class="col-12"> <label for="nom" class="form-label">Votre nom</label> <input type="text" name="nom" class="form-control" id="nom" required> <div class="invalid-feedback">Veuillez saisir votre prénom !</div> </div> <div class="col-12"> <label for="prenom" class="form-label">Votre prénom</label> <input type="text" name="prenom" class="form-control" id="prenom" required> <div class="invalid-feedback">Veuillez saisir votre prénom !</div> </div> <div class="col-12"> <label for="email" class="form-label">Votre adresse email</label> <input type="email" name="email" class="form-control" id="email" required> <div class="invalid-feedback">Veuillez saisir une adresse mail valide !</div> </div> <div class="col-12"> <label for="yourPassword" class="form-label">Mot de passe</label> <input type="password" name="password" class="form-control" id="yourPassword" required> <div class="invalid-feedback">Veuillez saisir votre mot de passe !</div> </div> <div class="col-12"> <label for="yourPassword" class="form-label">Confirmez votre mot de passe</label> <input type="password" name="confirm_password" class="form-control" id="yourPassword" required> <div class="invalid-feedback">Veuillez confirmez votre nmot de passe !</div> </div> <div class="col-12"> <label for="yourUsername" class="form-label">Nom d'utilisateur</label> <div class="input-group has-validation"> <span class="input-group-text" id="inputGroupPrepend">@</span> <input type="text" name="username" class="form-control" id="yourUsername" required> <div class="invalid-feedback">Veuillez saisir votre nom d'utilisateur !</div> </div> </div> <div class="col-12"> <label for="photo" class="form-label">Photo de profil</label> <div class="input-group has-validation"> <input type="hidden" name="MAX_FILE_SIZE" value = "1000000" class="form-control"> <input type="file" name = "photo_profil" class="form-control" id="photo"> </div> </div> <div class="col-12"> <div class="form-check"> <input class="form-check-input" name="terms" type="checkbox" value="" id="acceptTerms" required> <label class="form-check-label" for="acceptTerms">J'accepte les <a href="#">termes & conditions</a></label> <div class="invalid-feedback">Vous devez agréer avant de créer votre compte.</div> </div> </div> <div class="col-12"> <button class="btn btn-primary w-100" type="submit" name = "inscription">Créer votre compte</button> </div> <div class="col-12"> <p class="small mb-0">Avez-vous déjà un compte ? <a href="login.php">Connectez-vous</a></p> </div> </form> </div> </div> <?php require_once 'includes/footer_register.php'; ?>

Voici le code complet (register.php)

Berenger, il y a 1 an

C'est quoi DSN ?

Carouge10, il y a 1 an

la première ligne de code. ce qui permet à PDO de savoir où se connecter.
Puisque vous avez résolu votre problème, il serait bien d'indiquer au autre où se situais le problème.

Berenger, il y a 1 an

Bonjour à tous ! ouf enfin j'ai galéré. Mes données s'insère parfaitement dans phpmyadmin. Voici comment j'ai procédé : J'ai fait remonté ce bout de code $requete->bindValue(':photo_profil', $_FILES["photo_profil"]["name"]); à la suite de move_uploaded_file($_FILES["photo_profil"]["tmp_name"], $path.$_FILES["photo_profil"]["tmp_name"]);

Pour que ça soit plus claire voici le code :

if(empty($_FILES['photo_profil']['name'])){ $photo_profil = 'avatar_defaut.png'; $requete->bindValue(':photo_profil', $photo_profil); }else{ if(preg_match("#jpeg|png|jpg#", $_FILES["photo_profil"]["type"])){ $path = "uploader/photo_profil/"; move_uploaded_file($_FILES["photo_profil"]["tmp_name"], $path.$_FILES["photo_profil"]["tmp_name"]); $requete->bindValue(':photo_profil', $_FILES["photo_profil"]["name"]); }else{ $erreur_message = "La photo de profil doit être de type jpeg, jpg, ou png"; } } $requete->execute();
Berenger, il y a 1 an

Voici l'ancien bout de code :

if(empty($_FILES['photo_profil']['name'])){ $photo_profil = 'avatar_defaut.png'; $requete->bindValue(':photo_profil', $photo_profil); }else{ if(preg_match("#jpeg|png|jpg#", $_FILES['photo_profil']['type'])){ $path = "uploader/photo_profil/"; move_uploaded_file($_FILES["photo_profil"]["tmp_name"], $path.$_FILES["photo_profil"]["tmp_name"]); }else{ $erreur_message = "La photo de profil doit être de type jpeg, jpg ou png"; } $requete->bindValue(':photo_profil', $_FILES['photo_profil']['name']); $requete->execute();

Maintenant mon challenge est d'uploader la photo de profil. Je vais éssayer moi-même et vous faire un retour en cas de succès ou d'échec. Encore merci

Berenger, il y a 1 an

Et j'allais oublié la connexion à la base de données :

<?php $dsn = 'mysql:dbname=sgn;host=localhost'; $user = 'root'; $password = ''; try { $bdd = new PDO($dsn, $user, $password); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //if($bdd){ echo "Vous êtes connecté à la base de données !" ; } } catch (PDOException $e) { echo "Echec lors de la connexion : " .$e->getMessage() ; } ?>

Comme le problème a été réglé, je mets tout ce que j'ai fait et vos recommandations pour que celà aide aussi une autre personne.