Enregistrer les donnees dans la base de donnees via formulaire

Fermé
QBASIC - Modifié par jordane45 le 2/06/2015 à 09:19
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 2 juin 2015 à 09:36
bonjour,j,essaye d'inserer les donnees dans la table de ma base de donnees apartir d'un formulaire mais rien ne s'enregistre dans la table alors que j'ai connecte ma base de donnees par PDO et je fait une requette prepare dont voici le code

// Connexion à la base de données
   try
   {
   $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
   $bdd = new PDO('mysql:host=localhost;dbname=isp', 'root', '',
   $pdo_options);
   
   
   $prenom= $_POST['preno'];
   $nom= $_POST['nom'];
    $postnom=  $_POST['post'];
    $pseudo= $_POST['pseud'];
   $email= $_POST['email'];
   $mot_de_passe= $_POST['pawd1'];
    $sexe= $_POST['sex'];

    
    // Insertion du candidat à l'aide d'une requête préparée
    $req = $bdd ->prepare('INSERT INTO enregistre (nom,postnom,Prenom,Sexe,pseudo,email,mot_de_passe,date_naiss) 
    VALUES ("nom","postnom","Prenom","Sexe","pseudo","email","mot_de_passe","date_naiss")');
    $req ->execute(array(
   $_POST['nom'],
   $_POST['post'],
   $_POST['preno'],
   $_POST['sex'],
   $_POST['pseud'],
    $_POST['email'],
    $_POST['pawd1']
    ));
    
    }  
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    ?>

les resultats donnent que les values et non les informations du formulaire par $_POST, s'il vous plait aide-moi

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 2/06/2015 à 09:36
Bonjour,


1 - .. tu récupères les variables dans ton code
   
   $prenom= $_POST['preno'];
   $nom= $_POST['nom'];
    $postnom=  $_POST['post'];
    $pseudo= $_POST['pseud'];
   $email= $_POST['email'];
   $mot_de_passe= $_POST['pawd1'];
    $sexe= $_POST['sex'];


Alors pourquoi réutiliser les variables $_POST .. directement dans ta requête ??

==>> Sachant qu'il faut vérifier avec ISSET que tes variables existent AVANT de les utiliser !
Tu peux faire de la façon suivante :
$prenom= isset($_POST['preno'])?$_POST['preno']:'';



2 - Dans ta requête, il faut écrire les variables que tu "prepare" en y mettant des ":" devant.
 $req = $bdd ->prepare('INSERT INTO enregistre (nom,postnom,Prenom,Sexe,pseudo,email,mot_de_passe,date_naiss) 
    VALUES (":nom",":postnom",":Prenom",":Sexe",":pseudo","email",":mot_de_passe",":date_naiss")');


3 - Dans ton exectue.. l'array ne précise pas sur quels champs faire le remplacement des variables....

4 - Le date_naissance ... ne fait pas partit des champs que tu récupères dans POST ??


5 - Places la connexion à ta BDD dans un fichier à part dont tu feras l'include lorsque tu en auras besoin
// Fichier cnxBDD.php
// Connexion à la base de données
  try{
   $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
   $bdd = new PDO('mysql:host=localhost;dbname=isp', 'root', '',
   $pdo_options);
  }catch(Exception $e){
    die('Erreur de connexion a la BDD: '.$e->getMessage());
  }
 



Voici à quoi pourrait (devrait) ressembler le code complet modifié :
<?php

// Connexion à la base de données
require_once "cnxBDD.php";
 
 
// récupération des variables POST: 
  $prenom= isset($_POST['preno'])?$_POST['preno']:'';
  $nom= isset($_POST['nom'])?$_POST['nom']:'';
  $postnom=  isset($_POST['post'])?$_POST['post']:'';
  $pseudo= isset($_POST['pseud'])?$_POST['pseud']:'';
  $email= isset($_POST['email'])?$_POST['email']:'';
  $mot_de_passe= isset($_POST['pawd1'])?$_POST['pawd1']:'';
  $sexe= isset($_POST['sex'])?$_POST['sex']:'';
  $date_naiss = isset($_POST['date_naiss'])?$_POST['date_naiss'] : NULL;
   
// Requete :  
  try{
   //préparation de la requete
  $sql = 'INSERT INTO enregistre (nom,postnom,Prenom,Sexe,pseudo,email,mot_de_passe,date_naiss) 
                            VALUES (":nom",":postnom",":Prenom",":Sexe",":pseudo","email",":mot_de_passe",":date_naiss")';
  $params = array( ":nom"=>$nom
                   ,":postnom"=>$postnom
                  ,":Prenom"=>$prenom
          ,":Sexe"=>$sexe
          ,":pseudo"=>$pseudo
          ,":email"=>$email
          ,":mot_de_passe"=>$mot_de_passe
          ,":date_naiss"=>$date_naiss
          );
  //execution de la requete 
  $req = $bdd ->prepare($sql);
   $req ->execute($params);
 }catch(Exception $e){
   echo "<br>-------------------<br> ERREUR ! <br>";
    print_r($params);
    die('<br>Requete Erreur !: '.$e->getMessage());
  
  }
    
 ?>




Cordialement,
Jordane
0