Trie par ordre alphabetique ligne fichier txt

Trie par ordre alphabetique ligne fichier txt - PHP - Programmation

Marsh Posté le 23-06-2011 à 14:42:42    

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
Reply

Marsh Posté le 23-06-2011 à 14:42:42   

Reply

Marsh Posté le 23-06-2011 à 15:41:23    

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
Reply

Marsh Posté le 23-06-2011 à 15:47:57    

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

Reply

Marsh Posté le 23-06-2011 à 16:46:26    

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. ?>


 

Reply

Marsh Posté le 27-06-2011 à 09:48:45    

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
Reply

Marsh Posté le 27-06-2011 à 14:47:02    

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

Reply

Marsh Posté le 29-06-2011 à 23:21:32    

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)
Reply

Sujets relatifs:

Leave a Replay

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