Valeurs ne rentrent pas dans la BDD
Résolu/Fermé
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
-
9 juil. 2017 à 18:19
jordane45 Messages postés 38324 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 - 10 juil. 2017 à 11:26
jordane45 Messages postés 38324 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 - 10 juil. 2017 à 11:26
A voir également:
- Valeurs ne rentrent pas dans la BDD
- Excel liste de valeurs - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. ✓ - Forum Excel
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Google Docs
- Quand on visite cette page, des messages sont échangés entre le navigateur et le site web. des extraits des messages échangés lors de la première connexion sont reproduits ci-dessous. des valeurs ont été remplacées par des numéros. retrouvez chacune de ces valeurs. - Forum Réseaux sociaux
- Recherchev ne renvoie pas la bonne valeur ✓ - Forum Excel
5 réponses
jordane45
Messages postés
38324
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 décembre 2024
4 710
Modifié le 10 juil. 2017 à 11:15
Modifié le 10 juil. 2017 à 11:15
Voici ton code corrigé avec la gestion des erreurs PDO
NB : Htmlspecialchar ne s'utilise qu'à l'affichage .... en aucun cas pour l'insertion en BDD !
NB² : Il est préférable d'écrire les IF/ELSE en suivant la norme PSR https://www.php-fig.org/psr/psr-2/#if-elseif-else
NB3 : On récupère PROPREMENT les variables avant de les utiliser (pour cela on se sert de l'écriture ternaire (sorte de if/else ) et de la fonction ISSET ou de !EMPTY
NB4 : On utilise de préférence && au lieu de AND ( c'est une question de priorité : https://www.php.net/manual/fr/language.operators.precedence.php )
Cordialement,
Jordane
<?php //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display-errors','on'); //connexion à la bdd try{ $bdd =new PDO('mysql:host=localhost; dbname=espace-membre; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //récupération propre des variables AVANT de les utiliser $pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $mail = !empty($_POST['mail']) ? $_POST['mail'] : NULL; $mail2 = !empty($_POST['mail2']) ? $_POST['mail2'] : NULL; $mdp = !empty($_POST['mdp']) ? $_POST['mdp'] : NULL; $mdp2 = !empty($_POST['mdp2']) ? $_POST['mdp2'] : NULL; //traitement du submit if(isset($_POST['Inscription'])){ if($pseudo && $mail && $mail2 && $mdp && $mdp2){ $pseudolength = strlen($pseudo); if($pseudolength <= 255) { if($mail == $mail2) { if($mdp == $mdp2) { //préparation de la requête et des variables $sql = "INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"; $datas = array($pseudo, $mail, $mdp); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : $erreur = " Erreur dans la requete ! ".$e->getMessage(); } } else { $erreur = "Vos mots de passe ne correspondent pas"; } } else { $erreur = "Vos adresses mails ne correspondent pas !!"; } } else { $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !!"; } } else { $erreur = "Tous les champs doivent êtres complétés"; } } ?> <!DOCTYPE html> <html> <head> <title>Inscription - TLW</title> <link rel="stylesheet" href="/css/style.css" type="text/css"/> <meta charset="utf-8" /> <meta name="language" content="fr"> <meta name="description" content="Page d'inscription à l'espace membre. TLW est une création CPM Tech."> <meta name="revisit after" content="2 days"> </head> <body bgcolor="#EEE"> <center> <br /> <br /> <?php include'../php/menu.php' ?> </center> <br /> <br /> <div style="width: 100%; height: auto; background-color: #AAA"> <center> <img src="/img/banniere.png" style="width: 98%; height: auto; margin-top: 10px; margin-bottom: 10px"> </center> </div> <center> <u> <h1>Publicité</h1> </u> </center> <div style="max-width: 773px; height: auto; background-color: #FFFFFF; margin: auto; box-shadow: 5px 5px 0px #AAA; font-size: 25px;"> <img src="/img/pubimage.php" alt="image aleatoire" /> </div> <br /> <br /> <div align="center"> <center> <h1><u>Inscription</u></h1> </center><br /><br /><br /> <form method="POST" action=""> <table> <td align="right"> <label>Pseudo :</label> </td> <td> <input type="text" name="pseudo" placeholder="Votre pseudo" id="pseudo"> </td></tr> <td align="right"> <label>Mail :</label> </td> <td> <input type="email" name="mail" placeholder="Votre adresse mail" id="mail"> </td></tr> <td align="right"> <label>Confirmation Mail :</label> </td> <td> <input type="email" name="mail2" placeholder="Confirmez votre adresse mail" id="mail2"> </td></tr> <td align="right"> <label>Mot de passe :</label> </td> <td> <input type="password" name="mdp" placeholder="Entrez votre mot de passe" id="mdp"> </td></tr> <td align="right"> <label>Confirmation Mot de passe :</label> </td> <td> <input type="password" name="mdp2" placeholder="Confirmez votre mot de passe" id="mdp2"> </td></tr> </table> <br /> <input type="submit" name="Inscription" value="Je m'inscris"> </form><br /> <?php if(isset($erreur)) { echo '<font color="red">'.$erreur."</font>"; } ?> <center><br /><br /> Vous avez déjà un compte ? <a href="connexion.php" rel="nofollow noopener noreferrer" target="_blank">Connectez-vous</a> </center> <br /> <br /> </div> <footer> <?php include('../php/footer.php') ?> </footer> </body> </html>
NB : Htmlspecialchar ne s'utilise qu'à l'affichage .... en aucun cas pour l'insertion en BDD !
NB² : Il est préférable d'écrire les IF/ELSE en suivant la norme PSR https://www.php-fig.org/psr/psr-2/#if-elseif-else
NB3 : On récupère PROPREMENT les variables avant de les utiliser (pour cela on se sert de l'écriture ternaire (sorte de if/else ) et de la fonction ISSET ou de !EMPTY
NB4 : On utilise de préférence && au lieu de AND ( c'est une question de priorité : https://www.php.net/manual/fr/language.operators.precedence.php )
Cordialement,
Jordane
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
10 juil. 2017 à 09:35
10 juil. 2017 à 09:35
Bonjour,
Ces deux lignes sont bancales.
Tu places directement les variables PHP lors de la préparation de la requête, qui seront donc remplacés par leur valeur (sans les guillemets, qui plus est), au lieu de mettre les jetons ADO.
Regarde la doc : https://www.php.net/manual/en/pdo.prepare.php
(Et tu as une faute de frappe à $peudo dans la deuxième ligne)
Quelque chose comme ça serait mieux :
Xavier
$insertmbr = $bdd->prepare("INSERT INTO membes(pseudo, mail, motdepasse) VALUES($pseudo, $mail, $mdp)"); $insertmbr->execute(array($peudo, $mail, $mdp));
Ces deux lignes sont bancales.
Tu places directement les variables PHP lors de la préparation de la requête, qui seront donc remplacés par leur valeur (sans les guillemets, qui plus est), au lieu de mettre les jetons ADO.
Regarde la doc : https://www.php.net/manual/en/pdo.prepare.php
(Et tu as une faute de frappe à $peudo dans la deuxième ligne)
Quelque chose comme ça serait mieux :
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"); $insertmbr->execute(array($pseudo, $mail, $mdp));
Xavier
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
10 juil. 2017 à 09:45
10 juil. 2017 à 09:45
Merci de m'avoir corrigé cette erreur !!
Je l'ai corrigé puis testée, mais cependant, aucune valeur dans la base de données.
Matancy
Je l'ai corrigé puis testée, mais cependant, aucune valeur dans la base de données.
Matancy
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
1 639
9 juil. 2017 à 18:23
9 juil. 2017 à 18:23
il manque un r à "membres" !
$insertmbr = $bdd->prepare("INSERT INTO membes(pseudo, mail, motdepasse) VALUES($pseudo, $mail, $mdp)");
$insertmbr = $bdd->prepare("INSERT INTO membes(pseudo, mail, motdepasse) VALUES($pseudo, $mail, $mdp)");
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
9 juil. 2017 à 18:45
9 juil. 2017 à 18:45
Merci beaucoup de m'avoir signalé cette erreur.
Mais malheureusement, après avoir modifié cette valeur, rien n'apparaît dans la BDD.
Matancy
Mais malheureusement, après avoir modifié cette valeur, rien n'apparaît dans la BDD.
Matancy
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
1 639
>
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
Modifié le 10 juil. 2017 à 01:08
Modifié le 10 juil. 2017 à 01:08
tu as encore des erreurs, même si elle ne sont pas la réponse !!!
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail']); ====mail2
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp']);====mdp2
sinon c'est forcement ==
if($mail == $mail2)
{
if($mdp == $mdp2)
{
je te conseille de faire le tour de tes noms de variable de ta table
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail']); ====mail2
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp']);====mdp2
sinon c'est forcement ==
if($mail == $mail2)
{
if($mdp == $mdp2)
{
je te conseille de faire le tour de tes noms de variable de ta table
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
>
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
10 juil. 2017 à 10:03
10 juil. 2017 à 10:03
Dans ma base de donnée, il n'y a pas de mdp2 ni de mail2, je les ai mis juste pour la vérification, pour éviter que l'utilisateur se trompe.
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
1 639
>
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
10 juil. 2017 à 10:06
10 juil. 2017 à 10:06
j'ai pas dis qu'ils manquaient, je dis que tu te plantes dans la récupération des POST.
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp2 = sha1($_POST['mdp2']);
sinon $mail à la même valeur que $mail2 vue que $mail2 est égal à $_POST['mail']
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp2 = sha1($_POST['mdp2']);
sinon $mail à la même valeur que $mail2 vue que $mail2 est égal à $_POST['mail']
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
>
astuces72
Messages postés
7762
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2024
10 juil. 2017 à 10:07
10 juil. 2017 à 10:07
Je corrige ça tout de suite :)
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
Modifié le 9 juil. 2017 à 22:14
Modifié le 9 juil. 2017 à 22:14
bonsoir, Je pense que tu te trompes quand tu écris "Je n'ai également pas d'erreur PHP ou autre. "
Ce qui se passe, c'est que tes erreurs restent invisibles. La preuve, c'est que tu n'avais pas de message d'erreur alors que tu avais l'erreur remarquée par astuces72.
Je pense donc que tu dois améliorer ton code pour détecter les erreurs mysql.
A titre d'exemple, la fonction "execute" retourne TRUE en cas de succès ou FALSE si une erreur survient.
Ce qui se passe, c'est que tes erreurs restent invisibles. La preuve, c'est que tu n'avais pas de message d'erreur alors que tu avais l'erreur remarquée par astuces72.
Je pense donc que tu dois améliorer ton code pour détecter les erreurs mysql.
A titre d'exemple, la fonction "execute" retourne TRUE en cas de succès ou FALSE si une erreur survient.
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
10 juil. 2017 à 08:38
10 juil. 2017 à 08:38
Merci beaucoup pour ton aide,
Je suis désolé je suis novice dans le php, je viens de commencer.
Pourrais tu me montrer que mettre dans le code pour qu'il affiche les erreurs ?
Merci :)
Je suis désolé je suis novice dans le php, je viens de commencer.
Pourrais tu me montrer que mettre dans le code pour qu'il affiche les erreurs ?
Merci :)
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
>
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
10 juil. 2017 à 08:59
10 juil. 2017 à 08:59
par exemple:
if ($insertmbr->execute(array($peudo, $mail, $mdp))) { $erreur = "Votre compte à bien été créer"; } else { $erreur="Erreur technique dans execute insert"; }
jordane45
Messages postés
38324
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 décembre 2024
4 710
>
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
10 juil. 2017 à 09:44
10 juil. 2017 à 09:44
Bonjour
Oui et pour commencer : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Oui et pour commencer : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
>
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
10 juil. 2017 à 10:01
10 juil. 2017 à 10:01
Je viens de le tester, et l'erreur technique s'affiche.
J'ai aussi activé l'affichage des erreurs PHP dans le fichier php.ini, puis j'ai redémarré mon serveur.
J'ai aussi activé l'affichage des erreurs PHP dans le fichier php.ini, puis j'ai redémarré mon serveur.
jordane45
Messages postés
38324
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 décembre 2024
4 710
>
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
10 juil. 2017 à 10:14
10 juil. 2017 à 10:14
Et donc.. quelle est l'erreur ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Matancy
Messages postés
696
Date d'inscription
dimanche 14 juin 2015
Statut
Membre
Dernière intervention
5 avril 2019
82
10 juil. 2017 à 10:11
10 juil. 2017 à 10:11
Après plusieurs erreurs trouvés puis corrigés, je re-poste le code pour que vous puissiez vous baser sur quelque chose de plus actuel.
Par contre les données ne vont toujours pas dans la BDD :(
Merci pour tous ceux qui m'aideront !!
Par contre les données ne vont toujours pas dans la BDD :(
<?php
$bdd = new PDO('mysql:host=192.168.1.77;mysqldbname=espace-membre', 'root', '');
if(isset($_POST['Inscription']))
{
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$pseudolength = strlen($pseudo);
if($pseudolength <= 255)
{
if($mail == $mail2)
{
if($mdp == $mdp2)
{
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
if($insertmbr->execute(array($pseudo, $mail, $mdp)))
{
$erreur = "Votre compte à bien été créer";
}
else
{
$erreur = "Erreur technique !!";
}
}
else
{
$erreur = "Vos mots de passe ne correspondent pas";
}
}
else
{
$erreur = "Vos adresses mails ne correspondent pas !!";
}
}
else
{
$erreur = "Votre pseudo ne doit pas dépasser 255 caractères !!";
}
}
else
{
$erreur = "Tous les champs doivent êtres complétés";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Inscription - TLW</title>
<link rel="stylesheet" href="/css/style.css" type="text/css"/>
<meta charset="utf-8" />
<meta name="language" content="fr">
<meta name="description" content="Page d'inscription à l'espace membre. TLW est une création CPM Tech.">
<meta name="revisit after" content="2 days">
</head>
<body bgcolor="#EEE">
<center>
<br />
<br />
<?php include'../php/menu.php' ?>
</center>
<br />
<br />
<div style="width: 100%; height: auto; background-color: #AAA">
<center>
<img src="/img/banniere.png" style="width: 98%; height: auto; margin-top: 10px; margin-bottom: 10px">
</center>
</div>
<center>
<u>
<h1>Publicité</h1>
</u>
</center>
<div style="max-width: 773px; height: auto; background-color: #FFFFFF; margin: auto; box-shadow: 5px 5px 0px #AAA; font-size: 25px;">
<img src="/img/pubimage.php" alt="image aleatoire" />
</div>
<br />
<br />
<div align="center">
<center>
<h1><u>Inscription</u></h1>
</center><br /><br /><br />
<form method="POST" action="">
<table>
<td align="right">
<label>Pseudo :</label>
</td>
<td>
<input type="text" name="pseudo" placeholder="Votre pseudo" id="pseudo">
</td></tr>
<td align="right">
<label>Mail :</label>
</td>
<td>
<input type="email" name="mail" placeholder="Votre adresse mail" id="mail">
</td></tr>
<td align="right">
<label>Confirmation Mail :</label>
</td>
<td>
<input type="email" name="mail2" placeholder="Confirmez votre adresse mail" id="mail2">
</td></tr>
<td align="right">
<label>Mot de passe :</label>
</td>
<td>
<input type="password" name="mdp" placeholder="Entrez votre mot de passe" id="mdp">
</td></tr>
<td align="right">
<label>Confirmation Mot de passe :</label>
</td>
<td>
<input type="password" name="mdp2" placeholder="Confirmez votre mot de passe" id="mdp2">
</td></tr>
</table>
<br />
<input type="submit" name="Inscription" value="Je m'inscris">
</form><br />
<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
?>
<center><br /><br />
Vous avez déjà un compte ? <a href="connexion.php" rel="nofollow noopener noreferrer" target="_blank">Connectez-vous</a>
</center>
<br />
<br />
</div>
<footer>
<?php include('../php/footer.php') ?>
</footer>
</body>
</html>
Merci pour tous ceux qui m'aideront !!
10 juil. 2017 à 11:24
Maintenant le code marche à merveille :)
Merci à tous ceux qui m'ont aidé.
Matancy
10 juil. 2017 à 11:26