Problème avec ma base sql

Bonjour,

vois-ci mon code :

<?php

if ($_POST['pass'] == $_POST['verif'])
{ 

try
{
	$bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
}
catch (Exception $e)
{
	die('Erreur : ' . $e->getMessage());
}

$bdd->exec('INSERT INTO matable(pseudo, pass) VALUES($_POST[\'pseudo\'], $_POST[\'pass\'])');

echo "Votre compte a bien été créé !!!<br /><br /> Vous allez être redirigé vers le formulaire de candidature...
";
}
else {echo "Les mots de passe ne corresponde pas !!!
<script language=\"javascript\">
	function gotoUrl() {
		window.location='index.php';
	}
	setTimeout('gotoUrl()', 3000);
</script>";
}

?>


tous fonctionne, il n'y a aucun message d'erreur mais mais la commande ne s'effectue pas ! rien est ajouté à la table de ma base de donnée !

Quelqu'un pourrais me dire ce qui cloche ? merci !

4 réponses

  1. si tu fais une redirection qd l'enr dans la BDD est ok tu ne verra pas le message echo "Votre compte a bien....
    ni celui du else

    et dans ton else pour rediriger pas besoin de javascript

    tu fais:

    else{
    header('Location:href=index.php?erreur=diff_passwd');
    }
    

    plus simple non ? par contre il ne faut pas qu'il y ait du code html avant

    et dans ta page index.php il suffit de capter cette erreur pour afficher le message

    //a l'endroit ou tu veux que le mesage d'erreur s'affiche tu mets:
    if(isset($_GET['erreur']) AND $_GET['erreur']=="diff_passwd"){
       echo '<font color="red">Les mots de passe ne corresponde pas !!!</font>';
    }
    
    1. Tu vois ton echo "Votre compte a bien été créé !!!<br /><br /> Vous allez être redirigé vers le formulaire de candidature...
      "; lors de l'execution?
      1. comment ça lors de l'exécution ? la redirection ? ou c'est normale je compte mettre le même que celui du else mais pour tester la page correctement je l'ai enlever ! c'est fait exprès ! Moi le soucis c'est que la comme de s'exécute pas ! il n'y a aucune entrée dans ma table de ma BBD !
    2. Je me suis mal exprimé, je suppose que avant le code que tu as posté tu as un formulaire.
      Ce que je souhaitais savoir c'est : est ce que lors de la soumission du formulaire le echo à la fin du if($_POST['pass'] == $_POST['verif']) apparait sur ta page? Autrement dit , es tu sûr que le programme entre dans le if?
      1. Oui je crois qu'il en manque un bout ...
      2. Non tout fonction je dit ! le message comme quoi le compté est crée s'affiche il n'y a aucun message d'erreur et le soucis n'est pas dans la redirection mais dans l'enregistrement dans la base donnée !
    3. essaies comme ça:

      <?php
      
      if ($_POST['pass'] == $_POST['verif'])
      { 
      
      try
      {
      	$bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
      	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      }
      catch (Exception $e)
      {
      	die('Echec connexion : ' . $e->getMessage());
      }
      //preparation de la requette
      $requete_prepare_1 = $bdd->prepare("INSERT INTO matable(pseudo, pass) VALUES($_POST['pseudo'], $_POST['pass'])");
      //ci dessus je pense que les \' gênaient 
      //ça c'est pour voir les erreurs
      if (!$requete_prepare_1) {
      	   echo "<br />PDO::errorInfo():<br />";
      	   print_r($dbh->errorInfo());
      
      }
      ///
      	$requete_prepare_1->execute();
      
      echo "Votre compte a bien été créé !!!<br /><br /> Vous allez être redirigé vers le formulaire de candidature...";
      //etc....
      
      }