Formulaire

Résolu
je t'aime 19962 -  
 je t'aime 19962 -
salut!..j'ai un problème de récupération de données dans ma base de données..Je veux que les données soient insérer dans une seule lignes mais chaque données s'insère dans une ligne..S'il vous plaît monter moi l'erreur ou est elle...:( !!

<head>

<meta charset="utf-8"/>

</head>

<?php

try{

$db=new PDO("mysql:host=localhost;dbname=php;charset=utf8",'root','');

$zone4=$_POST['date'];

$rej=$db->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'journal';");

$k=0;

$i=0;

$zone=0;

while ( $donne[$k]=$rej->fetchColumn()){

$loi[$i++]=$donne[$k];

$k++;

}

for ($l=0; $l<count($loi) ; $l++) {

$zone=$_POST[$l];

$db->exec("INSERT INTO journal SET $loi[$l]=$_POST[$l], ',' ");

echo $loi[$l];

echo $zone;

$j++;}

?>

<br>

<?php

}catch(PDOException $e)

{

echo"$e";

die();

}

?>

3 réponses

  1. Utilisateur anonyme
     
    Bon déjà 2-3 petits trucs, entoure ton code avec les balises code car sinon c'est dur de le lire. Ensuite pour afficher un <br> tu peux faire ça:

    echo "<br>";

    // Au lieu de ça:

    ?>
    <br>
    <?php


    Après il y a aussi le header:

    <?php
    header('Content-Type: text/html; charset=utf-8');
    ...

    // Au lieu de ça:
    <head>
    <meta charset="utf-8"/>
    </head>
    <?php
    ...


    Ensuite ici tu peux changer aussi:


    $loi[$i++]=$donne[$k];
    $k++;

    // Par:

    $loi[]=$donne[$k++];


    Car si tu met rien [] ça incrémente seul, et quand tu incrémente $k++ la valeur actuelle est retournée, donc tu peux oublier le $i=0.

    Et à quoi sert ton $zone4=$_POST['date']; car tu le réutilises pas ensuite.

    Après je ne comprend pas trop bien ce que tu veux dire par les données s'insèrent en plusieurs ligne et non une seule? Tu veux dire au niveau du INSERT INTO, pourquoi il y a plusieurs lignes dans la bases de données?
    0
    1. je t'aime 19962
       
      Bon j'ai fait des petits changement dans mon code au niveau des tables utilisées en essayant de faire des relations entres les tables avec des clés étrangères...mais j'ai encore un problème au niveau de la saisie dans la tabe "journal":

      <!DOCTYPE html>
      <html>
      
      <?php
      header('Content-Type: text/html; charset=utf-8');
      
      try{
      
      
      $db=new PDO("mysql:host=localhost;dbname=php;charset=utf8",'root','');
      
      
      $red=$db->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'journal';");
      $rej=$db->query("SELECT nom_elem FROM element ");
      
      
      $k=0;
      $zone=0;
      $p=0;
      
      
      while ( $donne[$k]=$red->fetchColumn()){ 
      $loi[]=$donne[$k++]; 
       
      }
      
      
      while ( $don[$p]=$rej->fetch()){ 
      $lo[]=$don[$p++]; 
       
      }
      
      
      
      $moi=$db->exec("INSERT INTO `date` (id_date,`date`) VALUES ('','$_POST[date]')" );
       
      for ($l=0; $l <count($lo); $l++) { 
      
      $zone=$_POST[$l];
        
      $db->exec("INSERT INTO  `journal` (id, id_aal, id_date, id_elem, valeur) VALUES ('','','','','$zone') ");
      echo $zone;
      echo "<br/>";
      }
      
      
      
      
      }catch(PDOException $e)
      {
      echo"$e";
      die();
      
      }  
      
      ?>
      
      </html>
      
      
      
      0
  2. Utilisateur anonyme
     
    Que veux tu dire par problème d'insertion, car sans ta BDD et ton formulaire on comprend pas vraiment le résultat que tu obtiens et celui que tu espères donc soit plus precis

    --
    0
    1. je t'aime 19962
       
      j'ai fait des captures d'écran à mon code pour que vous arriviez mieux a comprendre le problème..mais c'est impossible de les envoyées ici :(( !!
      0
      1. Utilisateur anonyme > je t'aime 19962
         
        Il faut les héberger sur un site comme ici: http://www.noelshack.com/ et copier le lien dans le forum. Après si tu peux montre la structure complète de ta BDD, ton formulaire, et expliquer le résultat que tu veux, on pourra t'aider.
        0
    2. je t'aime 19962
       
      http://image.noelshack.com/fichiers/2016/33/1471344528-img-6287.jpg
      http://image.noelshack.com/fichiers/2016/33/1471344506-capture1.png
      http://image.noelshack.com/fichiers/2016/33/1471344513-capture.png
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Déjà, commence par mettre la connexion à ta BDD dans un fichier à part que tu n'auras inclure
    dans les pages où tu en as besoin.
    Pense aussi à y activer les erreurs PDO (option désactivée par défaut).
    Comme ceci :
    <?php
    //Connexion à la BDD : Fichier cnxbdd.php
    try{
      $db=new PDO("mysql:host=localhost;dbname=php;charset=utf8",'root','');
      //activation des erreurs PDO
    	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    }catch(PDOException $e){
     echo $e->getMessage();
     die();
    }
    ?>
    


    Ensuite, dans ton code :

    <?php
    //On met le header en utf8
    header('Content-Type: text/html; charset=utf-8');
    
    
    //Connexion à la BDD
    require_once "cnxbdd.php";
    
    //initialisation des variables
    $k=0;
    $i=0;
    $zone=0;
    
    //Récupération "propre" des variables de ton formulaire : 
    $zone4=!empty($_POST['date']) ? $_POST['date'] : NULL ;
    
    
    //...le reste de ton code
    ?>
    


    Ensuite, au lieu de faire des boucles sur tes résultats (via des fetch...) pourquoi n'utilises-tu pas un fetchAll() ?

    Pour finir, je t'invite fortement à lire ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
    Puis à utiliser les requêtes préparées.
    NB : Pour mettre à jour une ligne dans ta table .... il faut utiliser un UPDATE et non un INSERT.

    PS: Pour poster des images sur le forum il suffit d'utiliser le bouton REPONDRE (au lieu de passer par les commentaires...) un bouton permettant l'ajout d'images est alors présent.

    0
    1. je t'aime 19962
       
      Je vous remercie beaucoup pour votre aide..L'erreur s'est affiché et je l'ai résolu ..Et ce qui concerne le UPDATE je vais pas l'utiliser à la place de INSERT INTO car je veux insérer, pas modifier...et à propos de :
      
      //Premiere expression;
      $loi[]=$donne[$k];
      $k++;
      
      //Deuxieme expression:
      
      $loi[]=$donne[$k++];

      c'est pas vraiment la même chose..j'obtient pas le même résultats.

      Et encore une fois mercii beaucoup pour ton aide...=D !!
      0