Csv into mysql

Résolu/Fermé
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 - 9 mai 2022 à 14:16
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 - 9 mai 2022 à 17:37
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
9 mai 2022 à 14:26
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
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6
Modifié le 9 mai 2022 à 14:40
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 :
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022
9 mai 2022 à 14:45
Je 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 
)
1
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
9 mai 2022 à 14:52
bha c'était pire parceque c'était sous forme de string, mais super ta solution marche à merveille ... bha merci beaucoup ^^ Jordane
0
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
9 mai 2022 à 15:25
par 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 ..
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
9 mai 2022 à 15:58
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
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6
Modifié le 9 mai 2022 à 17:38
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.
0