Problème base de donnée my sql
Serveur: localhost:8889 »Base de données: espace_menbre »Table: membre
cordialement
le php
<!DOCTYPE html>
<?php
$bdd = new PDO('mysql:host=localhost:8889;dbname=espace_menbre', 'root','root'); //connection a la base de donnée
if (isset($_POST['forminscription']))
$pseudo = htmlspecialchars($_POST['speudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']); //protection java
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
{
if (!empty($_POST['speudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
{
$speudolength = strlen($pseudo);
if ($speudolength <= 255)
{
if ($mail == $mail2)
{
if (filter_var($mail, FILTER_VALIDATE_EMAIL))
{
if ($mdp == $mdp2)
{
$insertmbr = $bdd->prepare("INSERT INTO membre (pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
$erreur = "Votre compte a bien été enregistré!";
header('index.php');
}
else
{
$erreur = "le mot de passe ne conrespond pas!";
}
}
else
{
$erreur = "Votre adresse email n'est pas valide!";
}
}
else
{
$erreur = "l'adresse email ne conrespond pas!";
}
}
else
{
$erreur = "Votre speudo est tro long";
}
}
else
{
$erreur = "Tous les champs doivent être conpleter!";
}
}
?>
<html>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css">
<head>
<?php
include('title.php');
?>
</head>
<body>
<div id="conteneur">
<?php
include('titre.php');
?>
<!--debut menu-->
<?php
include('menu.php');
?>
<!--fin menu-->
<!--debut contenue-->
<section id="contenu">
<article>
<h1>Inscription</h1>
<form method="post" action="">
<?php
if (isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
?>
<fieldset style="margin-right: 20px;">
<center>
<label for="speudo">speudo: </label>
<input type="speudo" name="speudo" placeholder="Ex: Votre speudo" value="<?php if (isset($speudo)){ echo $speudo;} ?>"/><br><br>
<label for="mail">email: </label>
<input type="email" name="mail" placeholder="Votre Email" id="mail" value="<?php if (isset($mail)){ echo $mail;} ?>"/><br><br>
<label for="mail2">Confirmation du mail: </label>
<input type="email" name="mail2" placeholder="Confirmer votre email:" id="mail2" value="<?php if (isset($mail2)){ echo $mail2;} ?>" /><br><br>
<label for="mdp">Mot de passe: </label>
<input type="password" name="mdp" placeholder="Votre mot de passe:" id="mdp" /><br><br>
<label for="mdp2">Confirmation du mot de passe: </label>
<input type="password" name="mdp2" placeholder="Confirmer votre mot de passe:" id="mdp2" /><br><br>
<input type="submit" name="forminscription" value="m'inscrire"/><br>
</center>
</fieldset>
</form>
</article>
</section>
<!--fin contenue-->
<!-- debut aside -->
<?php
include('sidebar.php');
?>
</body>
</html>
EDIT : Ajout du langage dans les balises de code
3 réponses
Un formulaire d'inscription ne parvient pas à enregistrer un nouvel utilisateur dans la base de données lors d'un test avec MAMP (localhost:8889, espace_menbre, table membre). Les échanges suggèrent d'afficher les erreurs, d'encapsuler l'insertion en BDD dans un bloc try/catch et de valider les données (pseudo, mail, mot de passe) avant d'exécuter la requête INSERT. La meilleure réponse recommande d'insérer le code d'insertion dans le traitement du formulaire et d'utiliser une requête préparée PDO avec gestion des erreurs pour voir précisément les messages d'échec. Des explications complémentaires recommandent d'activer error_reporting, vérifier le nom des champs et le chemin du fichier, et de tester la sortie POST afin d'identifier les valeurs reçues.
-
-
-
-
-
Modérateur@Utilisateur anonymeEt as tu mis des valeurs dans tes champs ?
Car là ... ça t'affiche ce que ton formulaire envoie au serveur.....
Si tu n'as rien rempli .. c'est normal que l'array ne contienne rien. -
ModérateurEt pour info .. c'est lié à ce bout de code que je t'ai rajouté (comme l'indique le commentaire.....) le temps des tests :
//----------------------------------------------// // le temps des tests : //----------------------------------------------// echo "<br>Variables POST =<br>"; echo "<pre>"; print_r($_POST); echo "</pre>";
-
-
ModérateurBon...
reprenons tout depuis le début.....
1 - Tu créés un fichier qui contiendra le code de connexion à ta BDD.
Ce fichier, nomme le : cnxBDD.php et tu y mets le code suivant:<?php //Fichier cnxBDD.php // connexion à la base de données $host = "localhost"; $dbname = "espace_menbre"; $user = "root"; $pwd = "root"; try { $bdd = new PDO("mysql:host=$host;dbname=$dbname", $user, $pwd); } catch (PDOException $e) { echo "<br>".$e."<br>"; printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e)); exit('Impossible de se connecter à la base de données.'); } ?>
Ensuite, dans ton fichier inscription.php tu places le code suivant :<?php //----------------------------------------------// //en cas d'erreurs php: //----------------------------------------------// error_reporting(E_ALL); //----------------------------------------------// //connexion à la BDD //----------------------------------------------// require_once "cnxBDD.php"; //----------------------------------------------// // le temps des tests : //----------------------------------------------// echo "<br>Variables POST =<br>"; echo "<pre>"; print_r($_POST); echo "</pre>"; //----------------------------------------------// //récupération PROPRE des variables : //----------------------------------------------// $pseudo = !empty($_POST['speudo']) ? htmlspecialchars($_POST['speudo']) : NULL; $mail = !empty($_POST['mail']) ? htmlspecialchars($_POST['mail']) : NULL; $mail2 = !empty($_POST['mail2']) ? htmlspecialchars($_POST['mail2']) : NULL; $mdp = !empty($_POST['mdp']) ? sha1($_POST['mdp']) : NULL; $mdp2 = !empty($_POST['mdp2']) ? sha1($_POST['mdp2']) : NULL; //----------------------------------------------// //Traitement du submit : //----------------------------------------------// if(isset($_POST['forminscription'])){ if ($pseudo && $mail && $mail2 && $mdp && $mdp2) { if ($strlen($pseudo) <= 255){ if ($mail == $mail2) { if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { if ($mdp != $mdp2) { $erreur = "le mot de passe ne conrespond pas!"; } }else{ $erreur = "Votre adresse email n'est pas valide!"; } }else{ $erreur = "l'adresse email ne conrespond pas!"; } }else{ $erreur = "Votre pseudo est trop long"; } }else { $erreur = "Tous les champs doivent être conpletés !"; } } //----------------------------------------------// // Fin du code PHP //----------------------------------------------// ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <?php include('title.php'); ?> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="conteneur"> <?php include('titre.php'); ?> <!--debut menu--> <?php include('menu.php'); ?> <!--fin menu--> <!--debut contenue--> <section id="contenu"> <article> <h1>Inscription</h1> <?php if (!empty($erreur)){ echo '<font color="red">'.$erreur."</font>"; } ?> <form method="post" action=""> <fieldset style="margin-right: 20px;"> <center> <label for="speudo">speudo: </label> <input type="speudo" name="speudo" placeholder="Ex: Votre speudo" value="<?php echo $speudo; ?>"/><br><br> <label for="mail">email: </label> <input type="email" name="mail" placeholder="Votre Email" id="mail" value="<?php echo $mail; ?>"/><br><br> <label for="mail2">Confirmation du mail: </label> <input type="email" name="mail2" placeholder="Confirmer votre email:" id="mail2" value="<?php echo $mail2; ?>" /><br><br> <label for="mdp">Mot de passe: </label> <input type="password" name="mdp" placeholder="Votre mot de passe:" id="mdp" /><br><br> <label for="mdp2">Confirmation du mot de passe: </label> <input type="password" name="mdp2" placeholder="Confirmer votre mot de passe:" id="mdp2" /><br><br> <input type="submit" name="forminscription" value="m'inscrire"/><br> </center> </fieldset> </form> </article> </section> <!--fin contenue--> <!-- debut aside --> <?php include('sidebar.php'); ?> </div> <!-- Fin DIV conteneur --> </body> </html>
Au passage .. j'ai corigé des erreurs de "placements" de balises html...
et supprimé certains choses superflues.
-
merci mais quand je souhaite allez sur la page inscription.php sa me dit ceci
PDOException: SQLSTATE[HY000] [1049] Unknown database 'espace_menbre' in /Applications/MAMP/htdocs/cnxBDD.php:9 Stack trace: #0 /Applications/MAMP/htdocs/cnxBDD.php(9): PDO->__construct('mysql:host=loca...', 'root', 'root') #1 /Applications/MAMP/htdocs/inscription.php(10): require_once('/Applications/M...') #2 {main}
/Applications/MAMP/htdocs/cnxBDD.php:9 SQLSTATE[HY000] [1049] Unknown database 'espace_menbre' (1049) [PDOException] Impossible de se connecter à la base de données. -
-
-
ModérateurBonjour,
Commence par désactiver la redirection pour pouvoir voir les éventuelles erreurs.
Ensuite, places le code de ta requête dans un bloc TRY/CATCHtry{ $sql = "INSERT INTO membre (pseudo, mail, motdepasse) VALUES(:pseudo, :mail, :motdepasse)"; $variables = array(":pseudo"=>$pseudo,":mail"=>$mail,":mdp"=>$mdp); $insertmbr = $bdd->prepare($sql); $insertmbr->execute($variables); $erreur = "Votre compte a bien été enregistré!"; // header('index.php'); On le desactive durant les tests }catch(Exception as $e){ // En cas de soucis dans la requête echo "<br>Erreur !<br> ".$e->getMessage(); echo "<br>Dans la requête :<br>".$sql; echo "<br> Avec les variables :<br>"; print_r($variables); }
Ajoutes également la ligne suivante au début de ton code phperror_reporting(E_ALL);
-
-
Modérateur@Utilisateur anonymeQuestion.... Tu passes bien par le LOCALHOST ?
Quelle est l'URL présente dans ton navigateur lorsque tu affiches cette page ? -
-
-
-
