Mes données ne s'enregistre pas dans ma base de données

Résolu
ir -  
ir_1997 Messages postés 102 Statut Membre -
Bonjour,

mes données ne s'enregistre pas dans ma base de donnees

<!DOCTYPE html>
<html>
<head>
<title>upload</title>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="">
<br><input type="title" name="article" id="article" placeholder="article" required></br>
<br><input type="file" name="image" id="image" placeholder="image" required></br>
<br><input type="text" name="description" id="description" placeholder="description de l'article" required></br>
<br><input type="text" name="prix" id="prix" placeholder="prix" required></br>
<br><input type="text" name="contacte" id="contacte" placeholder="contacte" required></br>
<br><input type="submit" name="formsend" id="formsend" value="publier">
<?php
required_once("up.php")
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
if (isset($_POST['formsend'])) {

$article = (isset($_POST['article']))? $_POST['article'] :"" ;
$image = (isset ($_file['image']))? $_file['image'] :"" ;
$description = (isset($_POST['description']))? $_POST['description']:"";
$prix = (isset($_POST['prix']))? $_POST['prix']:"";
$contacte = (isset($_POST['contacte']))?$_POST['contacte']:"";

}
$stmt = $bdd->prepare("INSERT INTO articles (article , image , description , prix , contacte ) VALUES('article', 'image' , 'description', 'prix', 'contacte')");
$stmt->execute(array($article, $image, $description, $prix, $contacte));
echo "donnee inserer";
?>
</form>

</body>
</html>

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
     
    Bonjour,

    Ton code est faux...

    Soit tu écris :
    $sql = "INSERT INTO articles (article , image , description , prix , contacte ) 
            VALUES(:article, :image , :description, :prix, :contacte)";
    
    $datas = array(
    ':article'=>$article
    , ':image'=>$image
    , ':description'=>$description
    , ':prix'=>$prix
    , ':contacte'=>$contacte
    );
    
    $stmt = $bdd->prepare($sql);
    $stmt->execute($datas);
    


    Soit tu le fais comme ça
    $sql = "INSERT INTO articles (article , image , description , prix , contacte ) 
            VALUES(?,?,?,?,?)";
    
    $datas = array($article, $image, $description, $prix, $contacte)
    
    $stmt = $bdd->prepare($sql);
    $stmt->execute($datas)
    


    Moi j'ai une grosse préférence pour la première solution.

    Et comme le dit Yg_be... pense à appliquer les conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Ainsi que celles la :
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    PS: A l'avenir, pense à préciser le LANGAGE dans les balises de code afin d'avoir la coloration syntaxique.
    Explications ( à lire entièrement ! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

    .

    0
    1. ir
       
      merci bcp sa commence a marcher
      mais seul l'image ne rentre pas dans la bdd maina

      <!DOCTYPE html>
      <html>
      <head>
      <title>upload</title>
      <meta charset="utf-8">
      </head>
      <body>
      <form method="post" action="upload.php" method="POST" enctype="multipart/form-data">
      <br><input type="title" name="article" id="article" placeholder="article" required></br>
      <br><input type="file" name="image" id="image" placeholder="image" required></br>
      <br><input type="text" name="description" id="description" placeholder="description de l'article" required></br>
      <br><input type="text" name="prix" id="prix" placeholder="prix" required></br>
      <br><input type="text" name="contacte" id="contacte" placeholder="contacte" required></br>
      <br><input type="submit" name="formsend" id="formsend" value="publier">
      <?php

      $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
      if (isset($_POST['formsend'])) {

      $article = (isset($_POST['article']))? $_POST['article'] :"" ;
      $image = (isset ($_POST['image']))? $_POST['image'] :"" ;
      $description = (isset($_POST['description']))? $_POST['description']:"";
      $prix = (isset($_POST['prix']))? $_POST['prix']:"";
      $contacte = (isset($_POST['contacte']))?$_POST['contacte']:"";

      }
      $sql = "INSERT INTO articles (article , image , description , prix , contacte )
      VALUES(:article, :image , :description, :prix, :contacte)";

      $datas = array(
      ':article'=>$article
      , ':image'=>$image
      , ':description'=>$description
      , ':prix'=>$prix
      , ':contacte'=>$contacte
      );

      $stmt = $bdd->prepare($sql);
      $stmt->execute($datas);
      ?>
      </form>


      </body>
      </html>
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833 > ir
         
        Déjà... on t'a donné des liens à lire....
        Visiblement tu ne l'as pas fait !

        Ensuite, une image ne se stocke pas directement en BDD ( il faut éviter ! )
        A la place, on enregistre l'image sur le serveur et on stocke en BDD uniquement le chemin vers celle-ci.

        A savoir qu'un fichier n'est pas dans les variables POST ... mais FILES
        https://www.php.net/manual/fr/reserved.variables.files.php

        Je t'invite à trouver des tutos sur le net qui expliquent comment uploader des fichiers sur le serveur.


        Et surtout... va relire les liens qu'on t'a donné et appliques les conseils ( consignes ! ) qui s'y trouvent !!
        0
      2. ir_1997 Messages postés 102 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        d'accord merci beaucoup
        0