[RESOLU] Besoin d'aide: Récupération de données de fichier .cvs

Eléphant du PHP | 71 Messages

09 févr. 2015, 18:21

Bonjour à tous,

Je bloque actuellement sur quelque chose qui (je pense) pourrais être assez facile à régler mais je ne sais pas le faire donc je viens vers vous pour que vous me guidiez :priere:

J'ai un fichier .cvs dont voici le contenu :

id couleur
0 blanc
1 rouge
2 jaune
3 bleu
4 vert
5 marron
6 rose
7 orange
8 violet
9 noir
10 gris
11 saumon
12 pourpre
13 cyan
14 or
15 beige

Mon but est de créer une fonction qui récupererais ce contenu dans 2 tableau dont le nom serait le titre des colonnes (un tableau "id" qui contiendrais les id et un tableau "couleur" qui contiendrais.... les couleurs ! =D> )

J'avais déjà fait quelques recherches qui récupérerais les infos d'un fichier csv mais le soucis est qu'il mettais toutes les infos dans un seul tableau :(

En remerciant d'avance tous ceux qui m'aiderons je vous souhaite une bonne journée. :)

Mammouth du PHP | 688 Messages

09 févr. 2015, 19:21

non testé (ne fonctionne qu'avec des noms de couleur sans espace) :
<?php
$row = 0;
if (($handle = fopen("nomdemonfichiercsv.csv", "r")) !== FALSE) {
  $tabid = array();
  $tabcouleur = array();
  while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
    if($row == 0){
      $row++;
    }
    else{
      $tabid[] = $data[0];
      $tabcouleur[] = $data[1];
    }
  }
  fclose($handle);
}
?>

Eléphant du PHP | 71 Messages

09 févr. 2015, 19:35

non testé (ne fonctionne qu'avec des noms de couleur sans espace) :
<?php
$row = 0;
if (($handle = fopen("nomdemonfichiercsv.csv", "r")) !== FALSE) {
  $tabid = array();
  $tabcouleur = array();
  while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
    if($row == 0){
      $row++;
    }
    else{
      $tabid[] = $data[0];
      $tabcouleur[] = $data[1];
    }
  }
  fclose($handle);
}
?>
Merci pour ta réponse :)

J'ai testé ton code et j'ai une erreur à la ligne 12 :

"Undefined offset: 1 in C:\Users\..... on line 12"

ynx
Mammouth du PHP | 586 Messages

10 févr. 2015, 11:33

Salut,

Voici un autre début de piste :
// création du tableau des couleurs
$couleurs = array();

// récupération du contenu du fichier
$lines = file('couleurs.cvs');

// parcours du contenu
foreach ($lines as $line) {
	// on coupe la chaine en deux à partir de premier espace
	$parts = explode(' ', $line, 2);
	
	// on remplis le tableau des couleurs
	$couleurs[] = array('id' => $parts[0], 'couleur' => trim($parts[1]));
}

// test
echo '<pre>';
var_dump($couleurs);
echo '</pre>';
Bon développement

Eléphant du PHP | 71 Messages

11 févr. 2015, 19:21

Salut,

Voici un autre début de piste :
// création du tableau des couleurs
$couleurs = array();

// récupération du contenu du fichier
$lines = file('couleurs.cvs');

// parcours du contenu
foreach ($lines as $line) {
	// on coupe la chaine en deux à partir de premier espace
	$parts = explode(' ', $line, 2);
	
	// on remplis le tableau des couleurs
	$couleurs[] = array('id' => $parts[0], 'couleur' => trim($parts[1]));
}

// test
echo '<pre>';
var_dump($couleurs);
echo '</pre>';
Bon développement

Merci à toi :) j'ai un peu modifié le code et ca fonctionne niquel !
La seule question qu'il me reste à poser est comment faire pour appeler un élément du tableau ? par exemple la 5 ème couleur ?

Et encore une fois merci :priere:

ynx
Mammouth du PHP | 586 Messages

12 févr. 2015, 12:08

Le plus simple pour accéder directement aux couleurs du tableau via l'id est de construire ce tableau en utilisant l'id de la couleur comme clé du tableau :
// création du tableau des couleurs
$couleurs = array();

// récupération du contenu du fichier
$lines = file('couleurs.cvs');

// parcours du contenu
foreach ($lines as $line) {
        // on coupe la chaine en deux à partir de premier espace
        $parts = explode(' ', $line, 2);
       
        // on remplis le tableau des couleurs
        $couleurs[$parts[0]] = trim($parts[1]);
}

// test
echo '<pre>';
// couleur correspondant à l'id 5 :
var_dump($couleurs[5]);
echo '</pre>';

Eléphant du PHP | 71 Messages

12 févr. 2015, 15:47

Le plus simple pour accéder directement aux couleurs du tableau via l'id est de construire ce tableau en utilisant l'id de la couleur comme clé du tableau :
// création du tableau des couleurs
$couleurs = array();

// récupération du contenu du fichier
$lines = file('couleurs.cvs');

// parcours du contenu
foreach ($lines as $line) {
        // on coupe la chaine en deux à partir de premier espace
        $parts = explode(' ', $line, 2);
       
        // on remplis le tableau des couleurs
        $couleurs[$parts[0]] = trim($parts[1]);
}

// test
echo '<pre>';
// couleur correspondant à l'id 5 :
var_dump($couleurs[5]);
echo '</pre>';
Merci à toi, ça fonctionne niquel :)

Le sujet est résolu !