Formulaire dans bdd

Résolu/Fermé
Busima Messages postés 55 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 29 janvier 2021 - Modifié le 20 sept. 2018 à 18:51
Busima Messages postés 55 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 29 janvier 2021 - 23 sept. 2018 à 00:55
Bonjour, j'ai un soucis avec mon code que je ne scinde pas d'abord:

    <?php REQUIRE_ONCE('config_bd_etopaf.php');?>
 <?php
     error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
  
     if(isset($_POST['envoyer']))
  {
   $nom=$_POST['nom'];
   $email=$_POST['email'];
   $contact=$_POST['contact'];
   $sujet=$_POST['sujet'];
   $message=$_POST['message'];
  
      echo '<h2><u>INFORMATIONS SAISIES</u></h2> </br>';
      echo 'Votre nom:'.$nom.' </br> Email:'.$email.' </br> Contacts:'.$contact.'</br>Sujet: '.$sujet.'</br> Message: '.$message.'</br></br>
      
   <form method="POST" action="contact_trait.php" />
       <input type="hidden" name="nom2" value="'.$nom.'" />
    <input type="hidden" name="email2" value="'.$email.'" />
    <input type="hidden" name="contact2" value="'.$contact.'" />
    <input type="hidden" name="sujet2" value="'.$sujet.'" />
    <input type="hidden" name="message2" value="'.$message.'" />
    <input type="submit" name="annuler" value="Annuler" />
    <input type="submit" name="enregistrer" value="Enregistrer" />
   </form>';
  } 
 ?>
 <?php
         if(isset($_POST['enregistrer']))
   {
    $nom2=isset($_POST['nom2']) ? $_POST['nom2'] : '';
    $email2=isset($_POST['email2']) ? $_POST['email2'] : '';
    $contact2=isset($_POST['contact2']) ? $_POST['contact2'] : '';
    $sujet2=isset($_POST['sujet2']) ? $_POST['sujet2'] : '';
    $message2=isset($_POST['message2'])? $_POST['message2'] :'';
           
     //préparation de la requête et des variables
       $req = "INSERT INTO Clients(nom, email, contact, sujet, message) VALUES (:nom2, :email2, :contact2 :sujet2, :message2)";
       $datas = array(
         ':nom2'=>$nom2, 
      ':email2'=>$email2,
      ':contact2'=>$contact2,
      ':sujet2'=>$sujet2,
      ':message2'=>$message2);
       //Execution de la requete
      try
      {
       $requete = $bdd->prepare($req);
       $requete->execute($datas);
      }
      catch (Exception $e)
      {
          // en cas d'erreur :
                            echo "Erreur !" .$e->getMessage();
                            echo "Les datas : ";
                            print_r($datas);       
      }
                //$req->execute($param) or die (print_r($req->errorInfo()));
    $requete->closeCursor();
            }
 ?> 


Voici le message d'erreur: "Erreur !SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1Les datas : Array ( [:nom2] => Ira [:email2] => ira@gmail.com [:contact2] => 09675432 [:sujet2] => Essai page contact [:message2] => Bonjour, juste un salut! ) "

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
21 sept. 2018 à 21:55
Bonjour,

Le message est pourtant clair...
La liste des variables dans la requête
 (:nom2, :email2, :contact2 :sujet2, :message2)

Ne contient pas le même nom que les variables dans $datas
(
         ':nom2'=>$nom2, 
      ':email2'=>$email2,
      ':contact2'=>$contact2,
      ':sujet2'=>$sujet2,
      ':message2'=>$message2);

Si tu regardes bien ta requête... tu devrais voir qu'il manque un petit truc....(si si.. regarde bien... en plein milieu... )
ici :
:contact2 :sujet2


Je zoom encore un peu...
act2 :suj


là.. à la place du X :-)

act2X:suj

0
Busima Messages postés 55 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 29 janvier 2021 1
23 sept. 2018 à 00:55
Ok merci Jordane45.
0