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. #1
    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 Afficher un fichier csv sous forme de tableau
    Bonjour a tous,
    voici mon soucis: j'ai un fichier csv que je voudrais afficher sous forme de tableau via php.j'ai déjà trouvé sur internet un code que j'ai adapté, que voici:
    Code php : 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
    <?php
    $fichier = '9322001.csv';
     
     
     
    $csv = new SplFileObject($fichier); // On instancie l'objet SplFileObject
    $csv->setFlags(SplFileObject::READ_CSV); // On indique que le fichier est de type CSV
    $csv->setCsvControl(','); // On indique le caractère délimiteur, ici c'est la virgule
    foreach($csv as $ligne){
    	print_r($ligne);
    }
    /* Cela affichera quelque comme chose comme cela:
    Array
    (
        [0] => ligne 1 colonne 1
        [1] => ligne 1 colonne 2
    )
    Array
    (
        [0] => ligne 2 colonne 1
        [1] => ligne 2 colonne 2
    )
    */
    foreach($csv as $ligne){
    	// Toutes les colonnes de la ligne sont concaténées avec implode()
    	echo '|'.implode('|', $ligne).'|';
    }

    Le fichier contient des données de la forme :
    nom,prenom,mail@fai.fr
    ce quote m'affiche le document tel quel, ce que je voudrais afficher c'est exactement ça mais sous forme de tableau.
    Pouvez-vous m'aider ?
    Merci de vos réponses.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    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
    oui je reconnais que je vous ai un petit peu laissé tout le travail mais j'étais moi même un peu perdu.

    je crois que ce n'est plus le cas voici mon nouveau code :

    Code PHP : 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
     
    <?php
    echo "tyubgfre";
    $fichier = new SplFileObject('9322001.csv');
     
    // Loop until we reach the end of the file.
    echo "grtesza";
    echo "<table class='mytable'><caption>csv</caption>";
    echo"trucmuche";
    while (!$fichier->eof()) {
         echo "<tr class='lines'>";
         $values=explode(",",$fichier->fgets());
         foreach $value in $values {
         echo "<td class='cols'>";
        // Echo one line from the file.
        echo $fichier->fgets();
        echo "</td>";}
        echo "</tr>";
    }
    echo "</table><link rel='stylesheet'  href='css/affiche_csv2.css'/>";
    // Unset the file to call __destruct(), closing the file handle.
    $file = null;


    voici l'erreur qui s'affiche sur Netbeans à la ligne 1

    The X/HTML version of the code cannot be determined. set to default X/HTML5. the default version cannot be overriden since the file is not in a project.
    HTML error checking for this file is disabled, you can enable it with this hinbt.
    (Alt-Enter shows hints)
    Est que vous pouvez m'aider ?

    Merci beaucoup

  5. #5
    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
    Rebonjour,
    J'ai oublié de vous dire quel était mon problème: c'est assez simple il ne m'affiche qu'une page blanche.
    Encore merci des réponses.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ton EDI t'indique qu'il n'arrive pas à faire une validation HTML de ton fichier, je crois bien. Par contre, pourquoi il essaye de faire une validation HTML sur un script PHP, aucune idée.

    Ta page blanche est complètement blanche ? Tu as vérifié la source HTML générée dans le navigateur ?

    Il pourrait être judicieux d’activer les erreurs PHP si ce n'est pas déjà le cas.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    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
    Re bonjour Celira

    Merci pour la réponse

    J'ai exécuté chacun des conseils que tu m'as donnés :
    * d'abord la page blanche est toujours complètement blanche
    * la page html générée est blanche elle-aussi
    * j'ai tenté d'afficher les erreurs php mais rien de nouveau

    je vous redonne mon code avec l'affichage des erreurs :

    Code php : 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
    <?php
    ini_set ("display_errors", "on");
    error_reporting (E_ALL); 
     
    echo "tyubgfre";
    $fichier = new SplFileObject('9322001.csv');
     
    // Loop until we reach the end of the file.
    echo "grtesza";
    echo "<table class='mytable'><caption>csv</caption>";
    echo"trucmuche";
    while (!$fichier->eof()) {
         echo "<tr class='lines'>";
         $values=explode(",",$fichier->fgets());
         foreach $value in $values {
         echo "<td class='cols'>";
        // Echo one line from the file.
        echo $fichier->fgets();
        echo "</td>";}
        echo "</tr>";
    }
    echo "</table><link rel='stylesheet'  href='css/affiche_csv2.css'/>";
    // Unset the file to call __destruct(), closing the file handle.
    $file = null;
    ?>

    C'est grave Docteur ?
    quels médicaments dois-je administrer ?

    Merci de votre aide

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ton foreach est mal écrit et tu fais un appel à fgets() à l'intérieur du foreach alors que tu boucles déjà sur le résultat du fgets précédent.
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $values=explode(",",$fichier->fgets());
        foreach ($values as $value) {
            echo "<td class='cols'>";
            // Echo one line from the file.
            echo $value;
            echo "</td>";
        }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    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 beaucoup Celira.

    Mes informations s'affichent comme je le voulais

  10. #10
    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 souci lié à l'utilisation de quotes
    Bonjour à tous,

    maintenant que j'ai réussi à faire marcher (grâce à vos conseils) comme je voulais mon programme, je me heurte à un nouveau problème :


    Code PHP : 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
    <?php
    $fichier = new SplFileObject('9322001.csv');
    $init = 0;
     /*    if (isset($_GET ['init'])) {
         $init = $_GET ['init'];
         } 
    */
     
    $last = 9;
     /*    if (isset($_GET ['last'])) {
         $last = $_GET ['last'];
         } 
     */ 
     
    // Loop until we reach the end of the file.
     
    echo "<table class='mytable'><caption>csv</caption><tr class='fL'><th class='maj'>nom</th><th class='maj'>prenom</th><th class='maj'>adresse email</th></tr>";
     
     
    //while (!$fichier->eof()) {
       for ($i = $init; $i <= $last; $i++) {
         echo "<tr class='lines'>";
         $values=explode(",",$fichier->fgets());
        foreach ($values as $value) {
            echo "<td class='cols'>";
            // Echo one line from the file.
            echo $value;
            echo "</td>";
        }    echo "</tr>";
    }
    echo "<a href = 'affiche_csv4.php?init=" . $init-9 . "&last=" . $init . "' title='Page Pr&eacute;c&eacute;dente' class='prec'> Pr&eacute;c&eacute;dente  </a>";
    echo "<a href = 'affiche_csv4.php?init=" . $last . "&last=" . $last+9 . "' title='Page Suivante' class='suiv'> Suivante </a>";
    echo "</table><link rel='stylesheet'  href='css/affiche_csv.css'/>";
    // Unset the file to call __destruct(), closing the file handle.
    $file = null;
    ?>

    Code CSS : 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
    49
    50
    51
    td{ 
         border-width: 1px; 
         border-color: black;
         border-style:solid;
         border-collapse: collapse;
    }
     
    th {
         border-width: 1.5px; 
         border-color: black;
         border-style:groove;
         border-collapse: collapse;
         font-size: 1.5em;
    }
    table {
      border-collapse: collapse;
      border-spacing: 0;
      border-style: groove;
      border-width: 10px;
    }
     
    /*table.rows:last-of-type {
         border-bottom: 2px red groove;
    }
    */
    /*
    table.rows.cols:last-of-type {
         border-right: 2px red groove;
    }
    */
    /*
    table.rows.cols:first-of-type {
         border-left: 2px red groove;
    }
    */
    caption {
         border-width: 2px; 
         border-color: black;
         border-style: groove;     
         font-size: 2em;
         font-weight: bold;
    }
    .maj {
         text-transform: uppercase;
    }
    .prec {
         text-align: left;
    }
    .suiv {
         text-align: right;
    }

    voici ce qui s'affiche tout en haut de la page :
    -9&last=0' title='Page Précédente' class='prec'> Précédente 9' title='Page Suivante' class='suiv'> Suivante
    je comprends que mon souci est lié aux quotes, mais comment le résoudre ?

    Pouvez-vous m'aider ?
    Merci de vos réponses

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le plus simple dans ce cas, c'est de commencer par écrire la ligne HTML que tu veux obtenir en sortie :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href ="affiche_csv4.php?init=5&last=14" title="Page Pr&eacute;c&eacute;dente" class="prec">Pr&eacute;c&eacute;dente</a>
    Ensuite, tu rajoutes les quotes autour, puis les variables à remplacer.
    Avec des quotes simples, il faut sortir les variables de la chaîne sinon elles ne seront pas interprétées (et on encadre l'opération par des parenthèses pour qu'elle soit calculée d'abord)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href ="affiche_csv4.php?init='.($init-9).'&last='.$init.'" title="Page Pr&eacute;c&eacute;dente" class="prec">Pr&eacute;c&eacute;dente</a>';
    Ou avec des quotes doubles, auquel cas il faut échapper les quotes doubles déjà présentes dans la chaine (et on encadre l'opération par des accolades pour qu'elle soit calculée d'abord)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<a href =\"affiche_csv4.php?init={$init-9}&last=$init\" title=\"Page Pr&eacute;c&eacute;dente\" class=\"prec\">Pr&eacute;c&eacute;dente</a>"
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    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 beaucoup Celira.
    Précédente et Suivante s'affichent maintenant en haut du tableau.
    Maintenant je ne vous ai peut être pas bien expliqué, ce que je voulais faire : c'était déjà mettre Précédente à gauche et Suivante à droite toujours sur la même ligne. En plus, de cela j'aimerais que les liens soient sur une ligne en bas du tableau.
    En plus, à ce que je pense et en même temps ça me parait normal ces liens se contentent de modifier les valeurs init et last : or, je voudrais qu'après avoir fait cela il réaffiche le nouveau tableau.
    En fait, je pensais à une solution : pourrait-on s'en sortir en modifiant les 2 variables en variable session et ensuite avec des header ?

    Avez-vous d'autres idées ?

    Merci de votre aide

  13. #13
    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
    Bonsoir à tous,

    Voici mes tests :

    Code php : 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
    $fichier = new SplFileObject('9322001.csv');
     
        if (isset($_GET ['init'])) {
         $init = $_GET ['init'];
         } 
         else {
         $init=0;
              }    
     
       if (isset($_GET ['last'])) {
         $last = $_GET ['last'];
         } 
         else {
         $last=9;
              }    
     
     
    // Loop until we reach the end of the file.
    echo "<div class='thediv'>";
    echo "<table class='mytable'><caption>csv</caption><tr class='fL'><th class='maj'>nom</th><th class='maj'>prenom</th><th class='maj'>adresse email</th></tr>";
     
     
    //while (!$fichier->eof()) {
       for ($i = $init; $i <= $last; $i++) {
         echo "<tr class='lines'>";
         $values=explode(",",$fichier->fgets());
        foreach ($values as $value) {
            echo "<td class='cols'>";
            // Echo one line from the file.
            echo $value;
            echo "</td>";
        }    echo "</tr>";
    }
     
    echo "</table>";
    echo '<div class="mydiv"><span class="f"><a href ="affiche_csv5.php?init='.($init-9).'&last='.$init.'" title="Page Pr&eacute;c&eacute;dente" class="prec">Pr&eacute;c&eacute;dente</a></span>';
    echo '<a href = "affiche_csv5.php?init=' .$last. '&last=' .($last+9). '" title="Page Suivante" class="suiv"> Suivante </a></div>';
     
    echo "</div>";
     
    echo "<link rel='stylesheet'  href='css/affiche_csv.css'/>";
     
    // Unset the file to call __destruct(), closing the file handle.
    $file = null;

    Code css : 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
    49
    50
    51
    52
    53
    54
    td {  
         border-width: 1px; 
         border-color: black;
         border-style:solid;
         border-collapse: collapse;
    }
     
    th {
         border-width: 1.5px; 
         border-color: black;
         border-style:groove;
         border-collapse: collapse;
         font-size: 1.5em;
    }
    .thediv {
         width: 40%;
    }
    table {
      border-collapse: collapse;
      border-spacing: 0;
      border-style: groove;
      border-width: 10px;
    }
     
    /*table.rows:last-of-type {
         border-bottom: 2px red groove;
    }
    */
    /*
    table.rows.cols:last-of-type {
         border-right: 2px red groove;
    }
    */
    /*
    table.rows.cols:first-of-type {
         border-left: 2px red groove;
    }
    */
    caption {
         border-width: 2px; 
         border-color: black;
         border-style: groove;     
         font-size: 2em;
         font-weight: bold;
    }
    .maj {
         text-transform: uppercase;
    }
    .f {
         float: left;
    }
    .mydiv {
         text-align: right;
    }

    j'ai réussi à mettre la mise en forme que je voulais mais les 2 boutons "précédente" et "suivante" m'affichent le même chose .
    Avez-vous une idée ?

    Merci de votre aide

  14. #14
    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
    Salut !


    $_GET['page'] et pas $_GET ['page']
    Tu peux faire plus simple ceci dit, essaie ceci :

    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
    <?php
    $fichier = new SplFileObject('9322001.csv');
     
    if (isset($_GET['page'])) {
      $page = (int)$_GET['page'];
    } 
    else{
      $page=1;
    }    
    echo "<div class='thediv'>";
    echo "<table class='mytable'>
    <caption>csv</caption>";
    echo "<tr class='fL'><th class='maj'>nom</th><th class='maj'>prenom</th><th class='maj'>adresse email</th></tr>";
    while (!$fichier->eof()) {
      echo "<tr class='lines'>";
      $values=explode(",",$fichier->fgets());
      foreach ($values as $value) {
        echo "<td class='cols'>".$value."</td>";
      }//boucle des cellules
      echo "</tr>";  
    }//boucle des lignes
    echo "</table>";
    echo '<div class="mydiv">';
    if($page>1){
      echo '<span class="f"><a href ="affiche_csv5.php?page='.($page-1).'" title="Page Pr&eacute;c&eacute;dente" class="prec">Pr&eacute;c&eacute;dente</a></span>';
    }
    if($page<count($fichier)){
      echo '<a href = "affiche_csv5.php?page='.($page+1).'" title="Page Suivante" class="suiv"> Suivante </a>';
    }
    echo "</div></div>";
    echo "<link rel='stylesheet'  href='css/affiche_csv.css'/>";
     
    $fichier = null;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  15. #15
    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 beaucoup d'avoir essayé de m'aider mais ce qui me gêne c'est comme je l'avais fait au départ l'utilisation de la boucle while qui va elle m'afficher chaque enregistrement les uns à la suite des autres .
    J'avais modifié mon code pour utiliser la boucle for, qui va bien m'afficher 10 enregistrements. Donc je continue de chercher

  16. #16
    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
    Je viens de faire des tests supplémentaires .
    Voici le code avec les tests ajoutés :

    Code PHP : 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
    49
    <?php
    $fichier = new SplFileObject('9322001.csv');
     
        if (isset($_GET['init'])) {
          echo poi;
         $init = $_GET['init'];
         } 
         else {
         $init=0;
              }    
     
       if (isset($_GET['last'])) {
            echo rte;
         $last = $_GET['last'];
         } 
         else {
         $last=9;
              }    
     
     
    // Loop until we reach the end of the file.
    echo "<div class='thediv'>";
    echo "<table class='mytable'><caption>csv</caption><tr class='fL'><th class='maj'>nom</th><th class='maj'>prenom</th><th class='maj'>adresse email</th></tr>";
     
     
    //while (!$fichier->eof()) {
       for ($i = $init; $i <= $last; $i++) {
            echo $init;
            echo $last;
         echo "<tr class='lines'>";
         $values=explode(",",$fichier->fgets());
        foreach ($values as $value) {
            echo "<td class='cols'>";
            // Echo one line from the file.
            echo $value;
            echo "</td>";
        }    echo "</tr>";
    }
     
    echo "</table>";
    echo '<div class="mydiv"><span class="f"><a href ="affiche_csv5.php?init='.($init-9).'&last='.$init.'" title="Page Pr&eacute;c&eacute;dente" class="prec">Pr&eacute;c&eacute;dente</a></span>';
    echo '<a href = "affiche_csv5.php?init=' .$last. '&last=' .($last+9). '" title="Page Suivante" class="suiv"> Suivante </a></div>';
     
    echo "</div>";
     
    echo "<link rel='stylesheet'  href='css/affiche_csv.css'/>";
     
    // Unset the file to call __destruct(), closing the file handle.
    $file = null;

    lorsque je tape sur "page suivante" le $init et le $last sont bien incrémentés mais ce qui s'affiche ne change pas ; c'est toujours comme si $init=0 et $last=9.

    C'est grave docteur ?

  17. #17
    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
    J'ai fait une recherche sur google et ai vu qu'on pouvait utiliser l'instruction goto, cela dit comme j'ai vu grâce à mes derniers tests mes variables $init et $last se modifier je voudrais aller à la ligne "for ..." ; est possible ?

    Merci

  18. #18
    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
    Non, goto tu oublies... définitivement. Car cela sort de l'algorithmique procédurale.
    Il y a 3 façons d'exécuter une commande, pas davantage :

    1) une fois et forcément :

    2) à titre conditionnel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($coucou)){
       echo $coucou;
    }
    3) à titre répétitif dans une boucle (et il y a toutes sortes de boucles)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for($i =0; $i<=10;$i++){
       echo 'coucou '.$i.'<br/>';
    }
    Tu ne dois pas sortir de cette logique, même si tu peux mixer à loisir ces 3 logiques...

    Ici ce que tu cherches, c'est une boucle while, car tu ne sais pas à l'avance la longueur de ton fichier, agrémentée d'un compteur, car tu souhaites t'arrêter aux 10 premières lignes maximum de ton fichier, à moins que le fichier en possède moins...

    Si j'ai bien compris, je te propose ceci : teste-le vraiment avant de me répondre stp et fais-moi un tout petit peu confiance.
    Si ça fonctionne, on pourra discuter de ce que tu ne comprends 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
    <?php
    $fichier = new SplFileObject('9322001.csv');
    $compteur=0;//initialisation du compteur
    $max=min(10, count($fichier));//Soit 5 si fichier 5 lignes, soit 10 si fichier dépasse 10 lignes
    if (isset($_GET['page'])) {
      $page = (int)$_GET['page'];
    } 
    else{
      $page=1;
    }    
    echo "<div class='thediv'>";
    echo "<table class='mytable'>
    <caption>csv</caption>";
    echo "<tr class='fL'><th class='maj'>nom</th><th class='maj'>prenom</th><th class='maj'>adresse email</th></tr>";
    while (!$fichier->eof()) {//tant que le fichier fournit une ligne
      if($compteur<$max){//condition qui utilise le compteur
        echo "<tr class='lines'>";
        $values=explode(",",$fichier->fgets());
        foreach ($values as $value) {
          echo "<td class='cols'>".$value."</td>";
        }//boucle des cellules
        echo "</tr>";  
      }
      else{
        exit;//sort de la boucle
      }
      $compteur++;//incrémentation du compteur
    }//boucle des lignes
    echo "</table>";
    echo '<div class="mydiv">';
    if($page>1){
      echo '<span class="f"><a href ="affiche_csv5.php?page='.($page-1).'" title="Page Pr&eacute;c&eacute;dente" class="prec">Pr&eacute;c&eacute;dente</a></span>';
    }
    if($page<$max){
      echo '<a href = "affiche_csv5.php?page='.($page+1).'" title="Page Suivante" class="suiv"> Suivante </a>';
    }
    echo "</div></div>";
    echo "<link rel='stylesheet'  href='css/affiche_csv.css'/>";
     
    $fichier = null;
    edit : attends-moi 2 minutes, je teste tout ça et je reviens vers toi.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  19. #19
    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
    Que contient $fichier ? Tu n'en as aucune idée n'est-ce pas ?

    Ceci


    SplFileObject Object
    (
    [pathName:SplFileInfo:private] => toto.csv
    [fileName:SplFileInfo:private] => toto.csv
    [openMode:SplFileObject:private] => r
    [delimiter:SplFileObject:private] => ,
    [enclosure:SplFileObject:private] => "
    )

    Que tu peux voir si tu fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $fichier = new SplFileObject('toto.csv');
    echo '<pre>';
    print_r($fichier);
    echo '</pre>';
    exit;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  20. #20
    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 tu veux faire quoi ?
    Une pagination toutes les dix lignes du CSV ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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