Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur import csv

requête sql

Sujet résolu
    6 février 2024 à 11:03:25

    Bonjour,

    je souhaite importer un fichier csv dans une table.

    dans le csv j'ai 38 colonnes mais seul les colonnes 15 et 25 m'intéresse.

    quand j'exécute ma requête les colonnes 15 et 25 restes vides les autre null

    ma requête :

    <?php
    
    while (($column = fgetcsv($file, 10000, ",")) !== FALSE) {
            $sql = "INSERT  INTO `csv`( `COL 15`, `COL 25`)  
    		values ('" . $column[15] . "','" . $column[25] . "')";
            $result = mysqli_query($conn, $sql);
    
    
    ?>

    je pense que ma requête n'est pas bonne...

    merci



    -
    Edité par OlivierOxii 6 février 2024 à 19:38:41

    • Partager sur Facebook
    • Partager sur Twitter
      6 février 2024 à 11:14:52

      Elles ont quoi comme valeur dans le CSV ?

      Quel type ?

      Ne pas oublier qu'un tableau PHP commence à l'indice 0 : col 15 reçoit la 16e valeur et col 25 la 26e valeur du tableau.

      PS : il n'y a pas d'échappement/la requête n'est pas préparée une ' et ça plante

      -
      Edité par julp 6 février 2024 à 11:19:50

      • Partager sur Facebook
      • Partager sur Twitter
        6 février 2024 à 11:27:12

        Bonjour,

        Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
        Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

        Pour plus d'informations, nous vous invitons à lire les règles générales du forum

        Mauvais titre

        Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

        Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

        De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

        Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

        Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.

        (titre originel : import csv)

        • Partager sur Facebook
        • Partager sur Twitter

        Pas d'aide concernant le code par MP, le forum est là pour ça :)

          6 février 2024 à 11:43:50

          Bonjour,

          j'ai trouvé mon erreur

          ($file, 10000, ",") en ($file, 10000, ";")

          j'ai bien les colonnes que je désire, par contre je n'arrive pas a ne pas afficher la première ligne sur mon résultat.

          j'affiche comme ceci :

              <?php
                // Connect to database
                include("db_connect.php");
                      $sql = "SELECT * FROM csv";
                      $result = mysqli_query($conn, $sql);
                      if (mysqli_num_rows($result) > 0) {
              ?>
                  <table>
                      
                      <?php while ($row = mysqli_fetch_array($result)) { ?>
                          <tbody>
                              <tr>
          					    
                                  <td> <?php  echo $row['COL 14']; ?> </td>
          						<td> BATCH </td>
                                  <td> <?php  echo $row['COL 24']; ?> </td>
                              </tr>
                      <?php } ?>
                          </tbody>
                  </table>
                  <?php } ?>

          et sur ma table j'ai :

          je ne veux pas afficher la première  ligne (VIN - GLOBAL RESULT) ou alors la masquer dans le résultat.

          merci

          • Partager sur Facebook
          • Partager sur Twitter
            6 février 2024 à 12:00:20

            Tu mets une clause WHERE pour l'écarter selon ces valeurs, un LIMIT (+ ORDER) si vraiment c'est par position. Enfin, je ne vois pas le problème, c'est du SQL basique.

            Même idée pour la masquer sauf que ce même test est à faire en PHP au lieu de SQL pour mettre un display: none (avec du JS pour la réafficher ?).

            -
            Edité par julp 6 février 2024 à 12:02:23

            • Partager sur Facebook
            • Partager sur Twitter
              6 février 2024 à 17:46:41

              merci,

              j'ai fais comme ca et ca fonctionne.

              $sql = "SELECT * FROM `".$csv."` LIMIT 1,50";

              • Partager sur Facebook
              • Partager sur Twitter

              erreur import csv

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown