Je n'arrive pas a un faire un INSERT INTO

Résolu
Youn_3451 Messages postés 39 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, ca fait 1 semaine je suis bloque parce que je n'arrive pas a faire un insert dans ma bdd, j'ai essaye tout les solutions , mais aucun résultat je suis a bout.
Aider moi svp ...

Voici l'erreur que ca m'affiche :

( ! ) Fatal error: Uncaught PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\ltr\vertical-menu-template-semi-dark\php\insert.php on line 65

( ! ) PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\ltr\vertical-menu-template-semi-dark\php\insert.php on line 65
Call Stack
# Time Memory Function Location
1 0.0035 418160 {main}( ) ...\insert.php:0
2 0.0056 472496 execute ( ) ...\insert.php:65

et voici mon code php :

<?php
    
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


    try{
        $bdd =new PDO('mysql:host=localhost;
        dbname=u243663731_; 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());
}
    if(isset($_GET['dte'])){    
        
            $numerosdevis = htmlspecialchars($_GET['numerosdevis']);
            $dte = htmlspecialchars($_GET['dte']);
            $dateecheance = htmlspecialchars($_GET['dateecheance']);
            $nomproduit = htmlspecialchars($_GET['nomproduit']);
            $devispour = htmlspecialchars($_GET['devispour']);
            $adresse = htmlspecialchars($_GET['adresse']);
            $email = htmlspecialchars($_GET['email']);
            $tel = htmlspecialchars($_GET['tel']);
            $departement = htmlspecialchars($_GET['departement']);
            $article = htmlspecialchars($_GET['article']);
            $referencearticle = htmlspecialchars($_GET['referencearticle']);
            $cout = htmlspecialchars($_GET['cout']);
            $quantite = htmlspecialchars($_GET['quantite']);
            $remise = htmlspecialchars($_GET['remise']);
            $tax1 = htmlspecialchars($_GET['tax1']);
            $tax2 = htmlspecialchars($_GET['tax2']);
            $modalite = htmlspecialchars($_GET['modalite']);
            $monnaie = htmlspecialchars($_GET['monnaie']);
            $note = htmlspecialchars($_GET['note']);
            $statut = htmlspecialchars($_GET['statut']);
            $etiquette = htmlspecialchars($_GET['etiquette']);


            $statement = $bdd->prepare("INSERT INTO devis (numerosdevis, dte, dateecheance, nomproduit, devispour, adresse, email, tel, departement, article, referencearticle, cout, quantite, remise, tax1, tax2, modalite, monnaie, note, statut, etiquette) VALUES (':numerosdevis, :dte, :dateecheance, :nomproduit, :devispour, :adresse, :email, :tel, :departement, :article, :referencearticle, :cout, :quantite, :remise, :tax1, :tax2, :modalite, :monnaie, :note, :statut :etiquette')");
            $statement->execute([
                "numerosdevis" => "$numerosdevis",
                "dte" => $dte,
                "dateecheance" => "$dateecheance",
                "nomproduit" => "$nomproduit",
                "devispour" => "$devispour",
                "adresse" => "$adresse",
                "email" => "$email",
                "tel" => "$tel",
                "departement" => "$departement",
                "article" => "$article",
                "referencearticle" => "$referencearticle",
                "cout" => "$cout",
                "quantite" => "$quantite",
                "remise" => "$remise",
                "tax1" => "$tax1",
                "tax2" => "$tax2",
                "modalite" => "$modalite",
                "monnaie" => "$monnaie",
                "note" => "$note",
                "statut" => "$statut",
                "etiquette" => "$etiquette"
    ]);

    echo"ok";
            }
    
?>


Voici aussi les données de la barre de navigation :

insert.php?numerosdevis=002&dte=10%2F11%2F2020&dateecheance=10%2F22%2F2020&nomproduit=Decoration&devispour=Deco.com&adresse=blablabla&departement=93000&email=Monentreprise%40gmail.com&tel=06.06.07.07.00&article=OBJT1&cout=1&quantite=1&referencearticle=E132134F&remise=50&tax1=18%25&tax2=18%25&modalite=CB&monnaie=€&note=Petit+cadeau&statut=NON+PAYE&etiquette=Décoration&insert=Sauvegarder

et pour finir la table de ma bdd :



S'il vous plais aider moi je suis meme pret a payer ...

4 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Déjà... htmlspecialchar ne s'uitilise QUE pour l'affichage ... pas pour faire de l'insertion en BDD

    Ensuite, si tu regardes ta requête,
    INSERT INTO devis (numerosdevis, dte, dateecheance, nomproduit, devispour, adresse, email, tel, departement, article, referencearticle, cout, quantite, remise, tax1, tax2, modalite, monnaie, note, statut, etiquette) VALUES (':numerosdevis, :dte, :dateecheance, :nomproduit, :devispour, :adresse, :email, :tel, :departement, :article, :referencearticle, :cout, :quantite, :remise, :tax1, :tax2, :modalite, :monnaie, :note, :statut :etiquette')
    

    tu as des quotes en trop ... et tu as oublié une virgule devant la dernière variable

    Au passage, n'éhsites pas à mettre des retours à la lignes .. ça rend la requête plus lisible
    par exemple ( toujours avec les erreurs que je ne t'ai pas corrigé )
    INSERT INTO devis (
                numerosdevis
              , dte
              , dateecheance
              , nomproduit
              , devispour
              , adresse
              , email
              , tel
              , departement
              , article
              , referencearticle
              , cout
              , quantite
              , remise
              , tax1
              , tax2
              , modalite
              , monnaie
              , note
              , statut
              , etiquette
    ) VALUES (
              ':numerosdevis
              , :dte
              , :dateecheance
              , :nomproduit
              , :devispour
              , :adresse
              , :email
              , :tel
              , :departement
              , :article
              , :referencearticle
              , :cout
              , :quantite
              , :remise
              , :tax1
              , :tax2
              , :modalite
              , :monnaie
              , :note
              , :statut :etiquette'
    )
    
    

    0
  2. Youn_3451 Messages postés 39 Statut Membre
     
    que voulez vous dire par trop de quotes et j'ai remarque pour la vigule , mais ca n'a toujours pas changer l'erreur.

    ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\coqpix\php\insert.php on line 108
    ( ! ) PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in C:\wamp64\www\html\coqpix\php\insert.php on line 108
    Call Stack
    # Time Memory Function Location
    1 0.0313 417616 {main}( ) ...\insert.php:0
    2 0.0337 469680 execute ( ) ...\insert.php:108

    mon code avec les modifications :

    <?php
        
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    
        try{
            $bdd =new PDO('mysql:host=localhost;
            dbname=u243663731_; 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());
    }
        if(isset($_GET['dte'])){    
            
                $numerosdevis = ($_GET['numerosdevis']);
                $dte = ($_GET['dte']);
                $dateecheance = ($_GET['dateecheance']);
                $nomproduit = ($_GET['nomproduit']);
                $devispour = ($_GET['devispour']);
                $adresse = ($_GET['adresse']);
                $email = ($_GET['email']);
                $tel = ($_GET['tel']);
                $departement = ($_GET['departement']);
                $article = ($_GET['article']);
                $referencearticle = ($_GET['referencearticle']);
                $cout = ($_GET['cout']);
                $quantite = ($_GET['quantite']);
                $remise = ($_GET['remise']);
                $tax1 = ($_GET['tax1']);
                $tax2 = ($_GET['tax2']);
                $modalite = ($_GET['modalite']);
                $monnaie = ($_GET['monnaie']);
                $note = ($_GET['note']);
                $statut = ($_GET['statut']);
                $etiquette = ($_GET['etiquette']);
    
    
                $statement = $bdd->prepare("INSERT INTO devis (numerosdevis,
                dte,
                dateecheance,
                nomproduit,
                devispour,
                adresse,
                email,
                tel,
                departement,
                article,
                referencearticle,
                cout,
                quantite,
                remise,
                tax1,
                tax2,
                modalite,
                monnaie,
                note,
                statut,
                etiquette) VALUES ('
                :numerosdevis,
                :dte,
                :dateecheance,
                :nomproduit,
                :devispour,
                :adresse,
                :email,
                :tel,
                :departement,
                :article,
                :referencearticle,
                :cout,
                :quantite,
                :remise,
                :tax1,
                :tax2,
                :modalite,
                :monnaie,
                 :note,
                :statut,
                :etiquette')");
    
                $statement->execute([
    
                "numerosdevis" => "$numerosdevis",
                "dte" => $dte,
                "dateecheance" => "$dateecheance",
                "nomproduit" => "$nomproduit",
                "devispour" => "$devispour",
                "adresse" => "$adresse",
                "email" => "$email",
                "tel" => "$tel",
                "departement" => "$departement",
                "article" => "$article",
                "referencearticle" => "$referencearticle",
                "cout" => "$cout",
                "quantite" => "$quantite",
                "remise" => "$remise",
                "tax1" => "$tax1",
                "tax2" => "$tax2",
                "modalite" => "$modalite",
                "monnaie" => "$monnaie",
                "note" => "$note",
                "statut" => "$statut",
                "etiquette" => "$etiquette"
        ]);
    
        echo"ok";
                }
        
    ?>
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      VALUES (
                  :numerosdevis,
                  :dte,
                  :dateecheance,
                  :nomproduit,
                  :devispour,
                  :adresse,
                  :email,
                  :tel,
                  :departement,
                  :article,
                  :referencearticle,
                  :cout,
                  :quantite,
                  :remise,
                  :tax1,
                  :tax2,
                  :modalite,
                  :monnaie,
                   :note,
                  :statut,
                  :etiquette)");
      
      0
  3. Youn_3451 Messages postés 39 Statut Membre
     
    Quel sont les changements ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ben... j'ai retiré les quotes ( quotes = apostrophe )
      0
  4. Youn_3451 Messages postés 39 Statut Membre
     
    A oui autant pour moi, mais ca n'a rien changer ^^ toujours la même erreur ...
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu as vraiment
      "numerosdevis" => "$numerosdevis"
      ?
      peux-tu partager ton code adapté et le texte du message d'erreur?
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Modifie également ton array de datas en ajoutant les ":" devant le nom des variables et retires les guillement autour des variables php
      
      $statement->execute([
          ":numerosdevis" => $numerosdevis
          ":dte" => $dte,
          ":dateecheance" => $dateecheance
          ":nomproduit" => $nomproduit
          ":devispour" => $devispour
          ":adresse" => $adresse
          ":email" => $email
          ":tel" => $tel
          ":departement" => $departement
          ":article" => $article
          ":referencearticle" => $referencearticle
          ":cout" => $cout
          ":quantite" => $quantite
          ":remise" => $remise
          ":tax1" => $tax1
          ":tax2" => $tax2
          ":modalite" => $modalite
          ":monnaie" => $monnaie
          ":note" => $note
          ":statut" => $statut
          ":etiquette" => $etiquette
          
      ]);
      


      et si ton souci persiste, montre nous le code modifié
      0