Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/09/2011, 00h18   #1
Invité de passage
 
Inscription : avril 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 16
Points : 1
Points : 1
Par défaut [CSV] Affichage par ordre alphabétique

Bonsoir les forumeurs, forumeuses,

Je voulais savoir s'il est possible de trier un fichier csv via PHP.

Je m'explique,
J'ai un fichier csv de type : Titre; Éditeur; Développeur; ... (10 champs en tout)
J'ai créé un formulaire sur le site qui permet d'ajouter des données au fichier CSV, donc ces dernières se mettent à la suite des autres, et donc ne sont pas rangées par ordre alphabétique.

Sur une page du site j'affiche les titres du fichiers CSV :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Ouverture du fichier CSV
$fichier="fichier.csv";
$findme="ludo";
 
//Lecture du fichier CSV
if (($handle = fopen($fichier, "rb")) !== FALSE) {
    while (($data = fgetcsv($handle, 1024, ";")) !== FALSE) {
 
		if (($data[1]==$plateforme) && (strpos($data[6],$findme) !== FALSE)){
 
 
			//Affichage du titre
			echo '<p><a href="jeu.php?jeu='.$data[0].'">'.$data[0].'</a><br></p>';	
 
		}
    }
    fclose($handle);
}
Comment faire pour qu'ils soient triés par ordre alphabétique ?
J'ai bien vu qu'il existait une fonction sort() ou array_multisort() mais je n'arrive pas à l'appliquer...

Merci de votre aide,
ptitelolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 07h30   #2
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Met tes valeur en premier dans un array puis utilise la fonction sort() ou array_multisort() ensuite ton traitement.
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 21h10   #3
Invité de passage
 
Inscription : avril 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 16
Points : 1
Points : 1
Je ne comprends pas justement car $data c'est déjà un array? fgetcsv découpe déjà en tableau?

J'avais bêtement fait un sort($data[0]) mais évidemment ça ne fonctionne pas.
ptitelolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 20h32   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
un peu de lecture de la doc aurait suffit pour que tu y arrives seule.
-> sort() : tri du plus petit au plus grand
-> array_multisort() : trier simultanément plusieurs tableaux
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//Ouverture du fichier CSV
$fichier = 'fichier.csv';
$findme = 'ludo';
//Lecture du fichier CSV
if (($handle = fopen($fichier, "rb")) !== FALSE) {
	// recuperation des lignes dans un array
	while (($ligne = fgetcsv($handle, 1024, ";")) !== FALSE) {
		$lignes[] = $ligne;
	}
	// tri du plus petit au plus grand
	sort($lignes);
	// affichage
	foreach ($lignes as $data) {
		if (($data[1]==$plateforme) && (strpos($data[6],$findme) !== FALSE)){
		// titre
		echo '<p><a href="jeu.php?jeu='.$data[0].'">'.$data[0].'</a></p>'."\n";	
		}
	}
	fclose($handle);
}
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/09/2011, 18h53   #5
Invité de passage
 
Inscription : avril 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 16
Points : 1
Points : 1
Parfait !

J'essaierais de m'en inspirer pour d'autres tris que je dois faire.

Merci de votre aide
ptitelolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h18.


 
 
 
 
Partenaires

Hébergement Web