Envoyer des données d'un formulaire vers une base de données

Lenny
Invité n'ayant pas de compte PHPfrance

28 févr. 2020, 21:03

Bonjour à tous, je m'appelle Lenny et je débute en programmation. Je voudrais créer un site mais tout d'abord, il faut que je crée un formulaire d'inscription. J'ai donc écrit ce code:

Code : Tout sélectionner

<?php $bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', ''); if(isset($_POST['forminscription'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) { $pseudolength = strlen($pseudo); if($pseudolength <= 255) { if($mail == $mail2) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { if($mdp == $mdp2) { $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"); $insertmbr->execute(array($pseudo, $mail, $mdp)); $erreur = "Votre compte a bien été crée."; } else { $erreur = "Vos mots de passe ne correspondent pas."; } } else { $erreur = "Votre adresse e-mail n'est pas valide."; } } else { $erreur = "Vos adresses e-mail ne correspondent pas."; } } else { $erreur = "Votre pseudo ne doit pas dépasser 255 caractères."; } } else { $erreur = "Tous les champs doivent être complétés."; } } ?> <html> <head> <title>TUTO PHP</title> <meta charset="utf-8"> </head> <body> <div align="center"> <h2><u>S'inscrire</u></h2> <br> <form method="POST" action=""> <table> <tr> <td align="right"> <label for="pseudo"><u>Pseudo:</u></label> </td> <td> <input type="text" placeholder="Entrez un pseudo" name="pseudo" id="pseudo" size="11" value="<?php if(isset($pseudo)) { echo $pseudo; }?>"> </td> </tr> <tr> <td align="right"> <label for="mail"><u>Mail:</u></label> </td> <td> <input type="email" placeholder="Entrez une adresse e-mail" name="mail" id="mail" size="19" value="<?php if(isset($mail)) { echo $mail; }?>"> </td> </tr> <tr> <td align="right"> <label for="mail2"><u>Confirmation du Mail:</u></label> </td> <td> <input type="email" placeholder="Confirmez votre adresse e-mail" name="mail2" id="mail2" size="23" value="<?php if(isset($mail2)) { echo $mail2; }?>"> </td> </tr> <tr> <td align="right"> <label for="mdp"><u>Mot de passe:</u></label> </td> <td> <input type="password" placeholder="Entrez un mot de passe" name="mdp" id="mdp" size="16"> </td> </tr> <tr> <td align="right"> <label for="mdp2"><u>Confirmation du Mot de passe:</u></label> </td> <td> <input type="password" placeholder="Confirmez votre mot de passe" name="mdp2" id="mdp2" size="22"> </td> </tr> <tr> <td></td> <td> <br> <input type="submit" value="Valider" name="forminscription"> </td> </tr> </table> </form> <?php if(isset($erreur)) { echo '<font color="red">'.$erreur."</font>"; } ?> </div> </body> </html>
Mais quand j'appuis sur Valider, ça n'envoi pas les données dans ma base de donnée. Merci d'avance.

Mammouth du PHP | 1341 Messages

28 févr. 2020, 21:14

un message d'erreur s'affiche ? si oui, lequel ?

Lenny
Invité n'ayant pas de compte PHPfrance

28 févr. 2020, 22:01

Non ça m'écris simplement: Votre compte a bien été crée. Mais rien n’apparaît dans la base de donnée..
https://cdn.discordapp.com/attachments/ ... nknown.png
https://cdn.discordapp.com/attachments/ ... rreur1.PNG

Mammouth du PHP | 1341 Messages

28 févr. 2020, 22:07

il faut afficher les erreurs pour debuguer :
https://www.php.net/manual/fr/pdostatem ... orinfo.php

quelle est la structure de la table membres ?

Lenny
Invité n'ayant pas de compte PHPfrance

28 févr. 2020, 22:10

Il y a id, pseudo, mail et motdepasse.
Je ne comprends pas comment afficher les erreurs, désolé je débute..

Lenny
Invité n'ayant pas de compte PHPfrance

28 févr. 2020, 22:12


Eléphanteau du PHP | 11 Messages

29 févr. 2020, 18:33

bon je suis super vrai débutant aussi et j'ai vu ton post qui est un peu aprés le mien , je travaille sur le même problème car avec php 7 il faut utiliser mysqli
le lien interessant est ici
https://www.linuxtricks.fr/wiki/php-pas ... es-de-base

euh sous toutes réserves (je bidouilles c'est pas mon job :!: )
" Contrôler cela n'est pas forcement maîtriser ! "
"ce qui est facile pour les uns peut être difficile pour les autres ! " copyright Thuillier-charmet

Loi 92-597 1992-07-01 annexe JORF 3 juillet 1992
Toute représentation ou reproduction intégrale ou partielle faite sans le consentement de l'auteur ou de ses ayants droit ou ayants cause est illicite. Il en est de même pour la traduction, l'adaptation ou la transformation, l'arrangement ou la reproduction par un art ou un procédé quelconque.

Eléphanteau du PHP | 34 Messages

01 mars 2020, 03:56

Salut thuillier-charmet

Il y a un tutoriel sur phpfrance qui ne te contredit pas mais ajoute une précision importante.
post446278.html#p446278 ,
Dans ce tutoriel il est spécifié:
A partir de PHP 7, seuls MySQLi et PDO_MySQL sont disponibles.

D'après moi Lenny se sert de PDO_MySQL, ce qui est autorisé.
Moi aussi je me sers de PDO_MySQL et quand j'essaie son code il fonctionne parfaitement. Le blocage est ailleurs.

Je suis aussi un débutant. Je me prononce ici en toute humilité, en attendant l'opinion d'un expert qui pourra trancher. Pour ma part je me suis habitué à la syntaxe de PDO_MYSQL et ça ne me tente pas du tout d'apprendre MySQLi, que je trouve bizarre.
a+
Pourquoi faire simple quand on peut faire compliqué ?

Avatar du membre
Mammouth du PHP | 1204 Messages

01 mars 2020, 14:01

Le mail en int(255) y a comme un problème non ?
Je ne comprends pas comment afficher les erreurs, désolé je débute..
As tu consulté le lien fournis par or 1 ? car les exemples de la page sont tout de même assez explicites.
https://www.php.net/manual/fr/pdostatem ... orinfo.php
<?php
/* Provoque une erreur -- la table BONES n'existe pas */
$sth = $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

echo "\nPDOStatement::errorInfo():\n";
$arr = $sth->errorInfo();
print_r($arr);
?>
L'exemple ci-dessus va afficher :
PDOStatement::errorInfo():
Array
(
    [0] => 42S02
    [1] => -204
    [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N  "DANIELS.BONES" is an undefined name.  SQLSTATE=42704
)
J'édite souvent mon message après avoir répondu pour le corriger où y apporter des informations complémentaires alors n'hésitez pas à y jeter un nouveau coup d'oeil ^^