Csv into mysql

Résolu
Bonjour,

Salut salut, j'ai un fichier csv et j'aimerais récupérer mes valeurs 4 par 4 et mettre ses groupes de valeurs dans des tableau différents par exemple :

tableau 1 = array(
[0] => valeur 1
[1] => valeur 2
[2] => valeur 3
etc...

tableau 2 = array (
...

Alors j'ai réussi à récup mes valeurs et les mettres une par une dans un tableaux et maintenant j'aimerai sparer le tableau tout les quatres index :

$file = "chaussures.csv";
$openfile = fopen($file, "r");
$cont = fread($openfile, filesize($file));

$tab=[];
$val="";
$tab_into=[];
for ($i=0; $i < strlen($cont); $i++) {
    
    if ($cont[$i] != ";" AND $cont[$i] != "\n") {
        $val .= $cont[$i];
    } else {
        $tab[] .= $val;
        $val="";
    }
}
print_r($tab);


ce qui me retourne :
Array
(
    [0] => nom
    [1] => categorie
    [2] => taille
    [3] => couleur
    [4] => filup
    [5] => basket
    [6] => 39
    [7] => rouge
    [8] => comid
    [9] => pantoufle
    [10] => 35
    [11] => blanc
    [12] => ouvail
    [13] => basket
    [14] => 42
    [15] => noir
    [16] => tuni
    [17] => bottines
    [18] => 39
    [19] => noir
    [20] => brudal
    [21] => pantoufle
    [22] => 42
    [23] => rouge
)


Configuration: Windows / Chrome 101.0.4951.54

2 réponses

  1. Modérateur
    tu comprends que data est juste un array qui correspond à la ligne dans laquelle se trouve ta boucle .... ??
    ( tu sais ce qu'est une boucle hein ? )

    Si tu veux en faire un array manipulable, il faut remplacer mes print_r ( et les echo.. ) par l'ajout dans un array des variables...
    Ce n'était qu'un exemple.. à toi de remplacer l'intérieur de la boucle par ce que tu veux en faire...
    1. Oui, merci je l'ai compris un peu tard xp
      C'est bon grâce à ton exemple j'ai pu éxtraire ce que je voulais de mon csv ;)

      $handle = fopen('chaussures.csv','r');
      $data = fgetcsv($handle,null,";");
      $tab=[];
      while ( ( $data = fgetcsv($handle,null,";") ) !== FALSE ) {
        array_push($tab, $data);
      }
      
      see($tab);
      
      function see($tab){
          echo "<pre>";
          print_r($tab);
          echo "</pre>";
      }
      

      Bon au final sa affiche la même chose mais au moins je peux le manipuler grâce à $tab merci encore.
  2. Modérateur
    Bonjour,
    Ton code semble bancale ...

    Déjà .. il faudrait nous donner un exempe de ton CSV
    Ensuite, pourquoi n'utilises tu pas les fonctions php prévues à ça ??
    A commencer par : https://www.php.net/manual/fr/function.fgetcsv.php

    1. parceque de base c'est encore pire !
      voila de base ce que j'avais :
      $file = "chaussures.csv";
      $openfile = fopen($file, "r");
      $cont = fread($openfile, filesize($file));
      echo $cont;
      

      c'est une chaine de caractère :
      nom;categorie;taille;couleur
      filup;basket;39;rouge        
      comid;pantoufle;35;blanc     
      ouvail;basket;42;noir        
      tuni;bottines;39;noir        
      brudal;pantoufle;42;rouge 
      

      voila mon csv :
    2. Modérateur
      @anthonyr_25Je ne vois pas en quoi ça pourrait être pire ...
      SI tu nous montrait plutôt ce que tu avais essayé ... et en nous montrant le résultat obtenu ??

      enfin bon.. perso je n'ai aucun souci.. ça fonctionne parfaitement
      $handle = fopen('chaussures.csv','r');
      
      while ( ($data = fgetcsv($handle,null,";") ) !== FALSE ) {
        echo "<pre>";
        print_r($data);
        echo "</pre>";
      }
      
      

      Résultat :
      Array
      (
          [0] => nom
          [1] => categorie
          [2] => taille
          [3] => couleur
      )
      Array
      (
          [0] => filup
          [1] => basket
          [2] => 39
          [3] => rouge        
      )
      Array
      (
          [0] => comid
          [1] => pantoufle
          [2] => 35
          [3] => blanc     
      )
      Array
      (
          [0] => ouvail
          [1] => basket
          [2] => 42
          [3] => noir        
      )
      Array
      (
          [0] => tuni
          [1] => bottines
          [2] => 39
          [3] => noir        
      )
      Array
      (
          [0] => brudal
          [1] => pantoufle
          [2] => 42
          [3] => rouge 
      )
      
    3. @jordane45bha c'était pire parceque c'était sous forme de string, mais super ta solution marche à merveille ... bha merci beaucoup ^^ Jordane
    4. @jordane45par contre je n'arrive pas à selectionner mes valeurs une par une pour les remettre dans des tables ?
      j'ai essayer
      echo $data[0][0]
      mêm print_r($data[0]) ne marche pas ..