IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher un fichier csv sous forme de tableau


Sujet :

Langage PHP

  1. #21
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Aertys, voici un code testé et qui tourne impeccable.
    J'ai enlevé ta feuille de style... tu verras ça après.
    J'ai employé les fonctions dédiées à CSV, tant qu'à faire, fgetcsv etc...
    Et tu as une pagination par 10 -ou 12 ou 100 paramétrable...

    Voilà, j'ai mis pas mal de commentaires didactiques, mais si tu as des questions, n'hésite pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    $delimiteur=';';//en CSV, pour les séparateurs, la convention française cest le ;, la convention internationale, cest la ,
     
    $compteur_lignes=1;//initialisation du compteur de lignes
    $compteur_pages=1;//initialisation du compteur de pages
    $nb_lignes_par_page=10;//après tout, tu auras peut-être envie de configurer ça facilement...
     
    if (isset($_GET['page'])) {//on a cliqué sur changer de page
      $page_demandee = (int)$_GET['page'];
    } 
    else{//on arrive
      $page_demandee=1;
    }    
    echo '<div>
    <table>
    <caption>csv</caption>
    <tr><th>compteur</th><th>id</th><th>lettre</th><th>nom</th><th>gps_lat</th><th>gps_long</th><th>debut</th></tr>';
     
    if (($handle = fopen('toto.csv', 'r')) !== FALSE) {
      while (($data = fgetcsv($handle, 1000, $delimiteur)) !== FALSE) {
        if( $compteur_lignes>1 && ($compteur_lignes % $nb_lignes_par_page==1) ){//cela sappelle un modulo et cela repère les changements de page
          $compteur_pages++;//on passe à la page suivante
        }
        if($compteur_pages==$page_demandee){
          echo '<tr>';
          echo '<td>'.$compteur_lignes.'</td>';
          for ($c=0; $c < count($data); $c++) {
            echo '<td>'.$data[$c].'</td>';
          }//boucle des cellules
          echo '</tr>'; 
        }
        $compteur_lignes++;    
      }
      fclose($handle);
    }
    $der_page=$compteur_pages;//en sortie de boucle, la dernière page est la dernière valeur de compteur_pages
    echo '</table>
    <div>';
    if($page_demandee>1){//si on affiche page 1, il ne faut pas de lien page précédente
      echo '<span><a href ="stylus.php?page='.($page_demandee-1).'" title="Page Précédente" >Précédente</a></span>';
    }
    if($page_demandee<$der_page){//si on affiche dernière page, il ne faut pas de lien page suivante
      echo '<span><a href = "stylus.php?page='.($page_demandee+1).'" title="Page Suivante"> Suivante </a></span>';
    }
    echo '</div></div>';
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  2. #22
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Et comme te le disait Célira, vérifier toujours à la fin que le code source HTML produit est tout propre !
    La CSS, tu vois ça en dernier, quand tout le reste est nickel.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <div>
      <table>
        <caption>csv</caption>
        <tr><th>compteur</th><th>id</th><th>lettre</th><th>nom</th><th>gps_lat</th><th>gps_long</th><th>debut</th></tr>
        <tr><td>21</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>22</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>23</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>24</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>25</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>26</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>27</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>28</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>29</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
        <tr><td>30</td><td>2</td><td>O</td><td>ZAZIE</td><td>58.8416</td><td>2.503</td><td>1950-01-01</td></tr>
      </table>
      <div>
        <span><a href ="stylus.php?page=1" title="Page Précédente" >Précédente</a></span>
        <span><a href = "stylus.php?page=3" title="Page Suivante"> Suivante </a></span>
      </div>
    </div>
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #23
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Une petite amélioration, importante si tu as un fichier de dizaines de milliers de lignes !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
    $delimiteur=';';//en CSV, pour les séparateurs, la convention française cest le ;, la convention internationale, cest la ,
     
    $compteur_lignes=1;//initialisation du compteur de lignes
    $compteur_pages=1;//initialisation du compteur de pages
    $nb_lignes_par_page=20;//après tout, tu auras peut-être envie de configurer ça facilement...
     
    if (isset($_GET['page'])) {//on a cliqué sur changer de page
      $page_demandee = (int)$_GET['page'];
    } 
    else{//on arrive
      $page_demandee=1;
    }    
    echo '<div>
    <table>
    <caption>csv</caption>
    <tr><th>compteur</th><th>id</th><th>lettre</th><th>nom</th><th>gps_lat</th><th>gps_long</th><th>debut</th></tr>';
     
    if (($handle = fopen('toto.csv', 'r')) !== FALSE) {
      while (($data = fgetcsv($handle, 1000, $delimiteur)) !== FALSE) {
        if( $compteur_lignes>1 && ($compteur_lignes % $nb_lignes_par_page==1) ){//cela sappelle un modulo et cela repère les changements de page
          $compteur_pages++;//on passe à la page suivante
        }
        if($compteur_pages==$page_demandee){//les n cas où l'on affiche la ligne
          echo '<tr>';
          echo '<td>'.$compteur_lignes.'</td>';
          for ($c=0; $c < count($data); $c++) {
            echo '<td>'.$data[$c].'</td>';
          }//boucle des cellules
          echo '</tr>'; 
        }
        elseif($compteur_pages>$page_demandee){//si tu as un fichier de 10 000 lignes, ça serait bien qu'il s'arrête quand tu as affiché la page que tu souhaites !
          break;
        }
        $compteur_lignes++;    
      }//boucle des lignes
      fclose($handle);
    }
    $der_page=$compteur_pages;//en sortie de boucle, la dernière page est la dernière valeur de compteur_pages
    echo '</table>
    <div>';
    if($page_demandee>1){//si on affiche page 1, il ne faut pas de lien page précédente
      echo '<span><a href ="stylus.php?page='.($page_demandee-1).'" title="Page Précédente" >Précédente</a></span>';
    }
    if($page_demandee<$der_page){//si on affiche dernière page, il ne faut pas de lien page suivante
      echo '<span><a href = "stylus.php?page='.($page_demandee+1).'" title="Page Suivante"> Suivante </a></span>';
    }
    echo '</div></div>';
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #24
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Je vois une amélioration possible que tu pourrais travailler toi.
    Ici, tu poses en dur les lignes des colonnes.
    Mais comment ferais-tu pour que ton code fonctionne quel que soit le CSV, en imaginant que la première ligne du csv comporte toujours les noms de colonne ? C'est le meilleur moyen de vérifier que tu as compris un code : le faire légèrement évoluer.
    Autre amélioration, transformer ce code en fonction...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function return_page_div_from_csv_with_column_names_on_first_row($csv_file, $delimiter, $lines_per_page=10, $selected_page=1){
     
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut
    merci Dendrite

    Comme tu me l'as dit il me reste la mise en page mais l'affichage page par page fonctionne

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut
    Merci à tous

    le code fonctionne

    comment mettre ce sujet "résolu" ? le bouton a disparu ....

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Construction Fichier CSV sous forme de tableau
    Par tifsa dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 04/09/2015, 09h53
  2. Réponses: 2
    Dernier message: 26/09/2012, 16h07
  3. Affiché le fichier séléctionner sous forme de texte
    Par Jeremy0201 dans le forum Tkinter
    Réponses: 1
    Dernier message: 08/07/2007, 15h45
  4. Afficher un programme C sous forme d'un graphe
    Par progfou dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 28/02/2006, 17h03
  5. Afficher un fichier binaire sous Windows
    Par Atomikx dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 14/12/2004, 00h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo