Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
716 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Trie par ordre alphabetique ligne fichier txt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trie par ordre alphabetique ligne fichier txt

n°2084248
quelu
Posté le 23-06-2011 à 14:42:42  profilanswer
 

Bonjour,
 
J'ai mis en place un site intranet ou il y a un fichier texte qui regroupe pas mal d'infos d'un formulaire...
J'aimerais le trier par ordre alphabétique au niveau des noms afin que l'affichage soit clair.

 

Chaque champ est séparé par un ;
Il se compose comme cela :

 

"nom prénom" le "date" ;produit;prix;remarque;
"nom prénom" le "date" ;produit;prix;remarque;  
 
Je ne vois pas du tout comment faire  :sweat:

 

Merci d'avance...


Message édité par quelu le 23-06-2011 à 14:43:24
mood
Publicité
Posté le 23-06-2011 à 14:42:42  profilanswer
 

n°2084274
olivthill
Posté le 23-06-2011 à 15:41:23  profilanswer
 

Par exemple :
 
- ouverture du fichier avec fopen()
- boucle pour remplir un tableau à 2 dimensions
  tant que lecture d'une ligne avec fgetcsv()
- fin de la boucle
- fermeture du fichier avec fclose()
- tri avec array_multisort()
 
Cela fait juste 4 fonctions à apprendre, en plus de la connaissance de base du PHP.
Bon courage !


Message édité par olivthill le 23-06-2011 à 15:41:58
n°2084279
quelu
Posté le 23-06-2011 à 15:47:57  profilanswer
 

j'arrive déjà a afficher le tableau :  

Code :
  1. <?php
  2. $handle = fopen('commandes.txt', 'r');
  3. $i = 0;
  4. while(($data = fgetcsv($handle, 1000, ';')) !== FALSE){
  5.  $colonne = count($data);
  6.  for($j = 0; $j < $colonne; $j++){
  7.    echo '<td width="20%" style="text-align: center;">'.$data[$j].'</td>';
  8.  }
  9.    echo '<td width="20%" style="text-align: center;"><input type="checkbox" name="checkbox[]" value="'.$i.'" ></td></tr><tr>';
  10.  $i++;
  11. }
  12. ?>


 
mais je voudrais classer celui-ci

n°2084312
olivthill
Posté le 23-06-2011 à 16:46:26  profilanswer
 

Voici une version modifiée que je n'ai pas testée, mais qui devrait marcher :

Code :
  1. <?php
  2. $handle = fopen('commandes.txt', 'r');
  3. $tb_nom = array();
  4. $tb_date = array();
  5. $tb_produit = array();
  6. $tb_prix = array();
  7. $tb_remarque = array();
  8. $i = 0;
  9. while(($data = fgetcsv($handle, 1000, ';')) !== FALSE){
  10.  $tb_nom[$i] = $data[0];
  11.  $tb_date[$i] = $data[1];
  12.  $tb_produit[$i] = $data[2];
  13.  $tb_prix[$i] = $data[3];
  14.  $tb_remarque[$i] = $data[4];
  15.  $i++;
  16. }
  17. $i_max = $i;
  18. fclose($handle);
  19. array_multisort($tb_nom, $tb_date, $tb_produit, $tb_prix, $tb_remarque);
  20.  
  21. echo "<table>";
  22. for($i = 0; $i < $i_max; $i++){
  23.  echo "<tr>";
  24.  echo '<td width="20%" style="text-align: center;">'.$tb_nom[$i].'</td>';
  25.  echo '<td width="20%" style="text-align: center;">'.$tb_date[$i].'</td>';
  26.  echo '<td width="20%" style="text-align: center;">'.$tb_produit[$i].'</td>';
  27.  echo '<td width="20%" style="text-align: center;">'.$tb_prix[$i].'</td>';
  28.  echo '<td width="20%" style="text-align: center;">'.$tb_remarque[$i].'</td>';
  29.  echo '<td width="20%" style="text-align: center;"><input type="checkbox" name="checkbox[]" value="'.$i.'" ></td>';
  30.  echo "</tr>";
  31. }
  32. echo "</table>";
  33. ?>


 

n°2085039
quelu
Posté le 27-06-2011 à 09:48:45  profilanswer
 

Super ce code fonctionne !

 

mais la fonction supprimer ligne via checkbox ne fonctionne plus ...

Code :
  1. if(isset($_POST['checkbox'])){
  2.  $nb = 0;
  3.  $tab = file('commandes.txt');
  4.  foreach($_POST['checkbox'] as $ligne){
  5.    if(isset($tab[$ligne])){
  6.      unset($tab[$ligne]);
  7.      $nb++;
  8.    }
  9.  }
  10.  file_put_contents('commandes.txt', $tab);
  11.  echo '<div>Vous avez effacé '.$nb.' commande(s).</div>';
  12. }
 

elle ne supprime plus la ligne sélectionné mais une autre , soit elle supprime plusieurs lignes soit rien .

 

merci


Message édité par quelu le 27-06-2011 à 09:56:11
n°2085199
quelu
Posté le 27-06-2011 à 14:47:02  profilanswer
 

Il faudrait que j'arrive a écrire le trie dans le fichier txt une fois celui -ci effectué

n°2085976
CyberDenix
Posté le 29-06-2011 à 23:21:32  profilanswer
 

file_put_contents() est ce qu'il te faut.
 
http://php.net/manual/fr/function. [...] ntents.php
 
// Ecraser puis écrire
file_put_contents($file, $data, LOCK_EX);
 
// Ajouter en fin de fichier
file_put_contents($file, $data, FILE_APPEND | LOCK_EX);


---------------
Directeur Technique (CTO)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Trie par ordre alphabetique ligne fichier txt

 

Sujets relatifs
Commande awk pour extraire des blocs d'un fichier + regexp sur lignesVBA, creer et ecrire un fichier text (.txt) depuis un macro
[Résolu]copier fichier qui se trouve dans dossier1 dans le dossier2vente de musique en ligne
Lire un fichier text et extraire les caracteres 25 a 37 de chaque lignprobelm de chargement de fichier dans plusieur textbox
Extraction du contenu d'une TEXTAREA vers fichier texteDéveloppement d'un outil de personnalisation en ligne
Extraire un mot d'une ligne suivant ce qui l'encadreScript recherche fichier photo
Plus de sujets relatifs à : Trie par ordre alphabetique ligne fichier txt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR