listage de fichier .csv

listage de fichier .csv - PHP - Programmation

Marsh Posté le 22-06-2005 à 13:50:30    

Bonjour à tous,  
 
J'ai un fichier .csv contenant pas mal d'informations. Je les trie et a partir de la je remplis des listes déroulantes.
 
Par contre j'ai des colonnes qui comprennent plusieurs fois la meme valeur et je souhaite afficher dans le menu qu'une seule occurence:
 
Exemple :  
 
Paris
Paris
Paris
Paris
Rennes
Rennes
Rennes
 
Je ne connais pas le nom de toute les villes. Donc il me faut un moyen pour que chaque nom ne resorte qu'une seule fois.
 
Merci de votre aide..

Reply

Marsh Posté le 22-06-2005 à 13:50:30   

Reply

Marsh Posté le 22-06-2005 à 13:53:45    

Tu place le resultat de ton trie dans un tableau. Et apres il me semble (Regarder la doc). Qu'il y a une fonction qui permet de retirer les doublons. Si elle n'existe pas il faut faire une petite manipulation.
Tu transvases chaque élément de ton premier tableau dans le second en testant la presence de la valeur via la fonction array_in ou in_array (je m'en rappelle plus).

Reply

Marsh Posté le 22-06-2005 à 13:54:26    

une méthode parmis d'autres :
tu crées un tableau $villes, puis

Code :
  1. if (!isset($villes[$ville]))
  2. {
  3.   // ajout dans la liste
  4.   // ...
  5.   $villes[$ville] = 1;
  6. }

Reply

Marsh Posté le 22-06-2005 à 14:10:39    

pkoi tu bosses pas avec une BDD ?? ca serait bien plus simple...

Reply

Marsh Posté le 22-06-2005 à 14:13:23    

Berceker United a écrit :

Tu place le resultat de ton trie dans un tableau. Et apres il me semble (Regarder la doc). Qu'il y a une fonction qui permet de retirer les doublons. Si elle n'existe pas il faut faire une petite manipulation.
Tu transvases chaque élément de ton premier tableau dans le second en testant la presence de la valeur via la fonction array_in ou in_array (je m'en rappelle plus).


c'est celle-ci: http://fr.php.net/manual/fr/function.array-unique.php :)

Reply

Marsh Posté le 22-06-2005 à 14:22:23    

ok merci  
 
Je bosse pas a partir d'une base de donnée car j'ai pas le choix
je dois travailler à partir d'un fichier .csv
 
Je vais tester array_unique  
 
Merci

Reply

Marsh Posté le 22-06-2005 à 14:35:43    

erwan551 a écrit :

Je vais tester array_unique

jpense que ma solution est plus simple :D

Reply

Marsh Posté le 22-06-2005 à 15:22:38    

c vrai que la tienne est pas mal Soju.
 
Je vais peut etre même l'utiliser. Array_unique est bien mais bizarre.

Reply

Marsh Posté le 22-06-2005 à 16:38:55    

moi j'utilise ca :

Code :
  1. if(array_search($array[$subcol],$buffer) !== false) continue;
  2. $buffer[] = $array[$subcol];


 
 
au final ca reviens au meme :)

Reply

Marsh Posté le 22-06-2005 à 16:42:27    

oui ok c bien array_unique mais ca retourne un tableau avec " des trous"
 
Moi apres je fais ca pour remplir mes formulaires :
 
for ($i=1; $i < count($f); $i++)
{
echo "<OPTION VALUE=\"$i\">$result[$i]</OPTION>";
}
 
mais ca me génere des erreurs vue que certaines cases du tableau n'existe pas ou ne sont pas visbles !!

Reply

Marsh Posté le 22-06-2005 à 16:42:27   

Reply

Marsh Posté le 22-06-2005 à 16:49:51    

je retire ce que j'ai dit precedemment,
en fait vu que t'as déjà le tableau, array_unique est plus simple
par contre au lieu de faire un for, fais un foreach et tu n'auras pas de problèmes de "trous"
 
EDIT : fôtes


Message édité par soju le 22-06-2005 à 16:52:50
Reply

Marsh Posté le 23-06-2005 à 10:09:01    

ca me mets ca comme errreur par exemple :
 
Undefined offset: 2  

Reply

Marsh Posté le 23-06-2005 à 13:43:50    

tu n'auras plus d'erreur avec foreach : http://fr.php.net/foreach

Reply

Marsh Posté le 23-06-2005 à 15:43:58    

oui merci soju
 
ca marche

Reply

Marsh Posté le 28-06-2005 à 11:57:02    

ca marche j'ai ca  
 
<?php
$input = array ("rennes", "rennes", "rennes", "brest", "brest" );
$result = array_unique ($input);
foreach ($result as $moi)
{
print_r ($moi);
}
?>  
 
mais je voudrais récupérer la position de chaque occurence pour pouvoir la traiter ?
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed