Je me tourne aujourd'hui vers vous car je rencontre actuellement un petit problème d'insertion dans ma base de données SQL via la commande PHP (INSERT INTO avec les paramètres) et cela n’insère malheureusement rien dans la base de données, elle reste aussi vide qu'auparavant :).
J'ai par ailleurs déjà essayé de rentrer la commande dans l'onglet SQL de la BDD et celle-ci ne me renvoi aucune erreur et cela fonctionne parfaitement.
Je vous joint ci-contre la capture d'écran de la base de données et le code PHP de la page qui doit insérer les valeurs dans la base de données :
Capture d'écran de la BDD :
Ligne de code de la page PHP (index.php) :
<?php
$email = $pass = $pseudo = "";
$emailError = $passError = $pseudoError = $pass2Error = "";
$isSuccess = false;
function verifyInput($var){
$var = trim($var);
$var = stripslashes($var);
$var = htmlspecialchars($var);
return $var;
}
function isEmail($var){
return filter_var($var, FILTER_VALIDATE_EMAIL);
}
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$email = verifyInput($_POST['email']);
$pseudo = verifyInput($_POST['pseudo']);
$pass = verifyInput($_POST['pass']);
$pass2 = verifyInput($_POST['pass2']);
$isSuccess = true;
if(!isEmail($email)){
$emailError = "L'email que vous avez rentrer n'est pas au bon format ou vous n'avez pas rentré d'email";
$isSuccess = false;
}
if(empty($pseudo)){
$pseudoError = "Veuillez vérifier que vous avez bien rentrer un pseudo";
$isSuccess = false;
}
if(empty($pass)){
$passError = "Veuillez vérifier que vous avez bien rentrer un mot de passe";
$isSuccess = false;
}
if(empty($pass2)){
$pass2Error = "Veuillez vérifier que vous avez bien retapé votre mot de passe";
$isSuccess = false;
}
else{
try
{
$bdd = new PDO('mysql:host=localhost;dbname=*********', '*******', '*********');
}
catch (exception $e)
{
die('Erreur: ' .$e->getMessage());
}
$hash = md5($_POST['pass']);
$score = 0;
$reponse = $bdd->query("INSERT INTO membres(email, pass, pseudo, score) VALUES ('$email', '$hash', '$pseudo', '$score')");
header('Location: accueil.php');
}
}
?>
<! DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="device=device-width, initial-scale=1">
<link rel="stylesheet" href="style4.css" />
<title>Inscription</title>
</head>
<body>
<div class="container">
<div class="row">
<h1 class="m12">Bienvenue sur la page pour vous inscire sur le site internet</h1>
<p>Votre inscription sur le site dès votre arrivée, vous permettra ainsi de sauvegarder votre score et de l'afficher dans votre profil. Dans le futur, bien d'autres fonctionnalitées liés à votre compte apparaîtront sur le site...</p>
<form action ="index.php" method="post" role="form" id="inscription-form">
<div class="row">
<div class="col-md-6">
<label for="email">Email :</label>
<input type="text" name="email" id="email" placeholder="Votre e-mail" class="form-control"/> </br>
<p class="comments"><?php echo $emailError; ?></p>
</div>
<div class="col-md-6">
<label for="username">Nom d'utilisateur :</label>
<input type="text" name="pseudo" id="pseudo" placeholder="Votre pseudo" class="form-control" /> </br>
<p class="comments"><?php echo $pseudoError; ?></p>
</div>
<div class="col-md-6">
<label for="pass">Mot de passe :</label>
<input type="password" name="pass" id="pass" placeholder="Mot de passe" class="form-control" /> </br>
<p class="comments"><?php echo $passError; ?></p>
</div>
<div class="col-md-6">
<label for="repeat_pass">Rétaper votre mot de passe:</label>
<input type="password" name="pass2" id="pass" placeholder="Retaper votre mot de passe" class="form-control"/> </br>
<p class="comments"><?php echo $pass2Error; ?></p>
</div>
<br />
<input type="submit" class="button" value="Valider" />
Si vous vous êtes déjà inscrit, veuillez cliquer <a href="connexion.php" class="connexion">ici</a>
</div>
</div>
</div>
</form>
</body>
</html>
je tiens par ailleurs aussi à vous préciser que l'insertion se réalisait parfaitement avant que j'intègre la variable score à insérée dans la BDD.
Si quelqu'un aurait une solution pour résoudre mon problème ?
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Pour modifier votre titre, éditez le premier message de votre sujet.
(titre originel : Problème entre PHP et MYSQL)
ÉDIT : MySql n'est pas un titre acceptable, j'ai modifier le titre avec ton sous titre => "Aucune insertion ne se réalise dans la base".
J'ai modifier votre message en supprimant les identifiants et mot de passe, il n'est pas prudent de les donner sur un forum public.
Ca fonctionne sur phpmyadmin quand tu entres ta requête car tu n'utilises pas la bonne fonction pour l'exécuter dans ton code. (exec pour modifier la db et query pour les SELECT)
Oui mais si c'est vraiment un problème où il me manque la fonction pour exécuter, normalement il ne devrait pas pouvoir insérer les précédentes valeurs (email, mot de passe hashe et pseudo) alors qu'il les insérer très bien sans exécution ?
Effectivement je viens d'essayer, ça fonctionne donc j'ai enlevé cette partie de mon commentaire, sorry mais du coup je ne comprends pas pourquoi ça ne fonctionne pas... as-tu activé les erreurs PDO comme conseillé par philodick ? ça dit quoi ?
Effectivement je viens d'essayer, ça fonctionne donc j'ai enlevé cette partie de mon commentaire, sorry mais du coup je ne comprends pas pourquoi ça ne fonctionne pas... as-tu activé les erreurs PDO comme conseillé par philodick ? ça dit quoi ?
Désolé d'avoir solicité ce sujet pour rien, j'ai trouvé la solution, je n'avais pas envoyé le fichier en ligne sachant que je testais l'insertion avec les site en ligne. Ce problème est donc résolu. Cependant, je me permets de vous demander votre aide sur un autre problème, j'ai des bordures rouges qui apparaissent en permanence comme sur la photo ci-contre dans ma page web :
Alors que ces bordures sont d'après mon code CSS et PHP censé s'affichée d'une couleur différente selon la réponse de l'utilisateur. Je vous mets donc ci-contre les lignes de codes des pages PHP et CSS :
Code de la page PHP :
<?php
require_once 'config1.php';
$reussite = $echec = "";
$reponse = $bdd->query('SELECT * FROM automobile WHERE id="1"');
?>
<?php
$reponse = $bdd->query('SELECT * FROM automobile WHERE id="1"');
while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
{
$question = htmlspecialchars($donnees['question']);
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (!empty($_POST['reponse'])){
$score = 0;
$bonne_reponse = $donnees['reponse'];
$reponses = $_POST['reponse'];
$savoir = $donnees['connaissance'];
if($reponses == $bonne_reponse){
$reussite = "Félicitations, vous avez trouvé la bonne réponse.";
echo "<section>";
$newscore = $score + 1;
echo '<p class="resultat">'."Votre score actuel est de $newscore".'</p>';
echo "</section>";
$bdd->query('INSERT INTO membres (score) VALUES ('$newscore') WHERE pseudo = $_SESSION['pseudo']');
}
else{
$echec = "Dommage, vous n'avez pas trouvé la bonne reponse. Celle_ci est '$bonne_reponse'";
}
}
}
}
$reponse->closeCursor();
?>
Je pense que c'est tout bête pour que les bordures ne s'affichent pas en permanence mais là, je ne vois vraiment pas, je ne pense pas que ce soit aussi bête que mon problème d'insertion précédent :).
Merci d'avance.
Quentin
- Edité par QuentinGiraud5 21 juin 2018 à 21:08:24
Aucune insertion ne se réalise dans la base
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.