[php] récup donnée

Bonjour tous le monde les gens,

j'ai ceci :

<?
$fichier = "test.csv";
$fic = fopen($fichier, 'rb');

echo "<table border='1'>\n";
for ($ligne = fgetcsv($fic, 1024); !feof($fic); $ligne = fgetcsv($fic, 1024)) {
echo "<tr>";
$j = sizeof($ligne);
for ($i = 0; $i < $j; $i++) {
echo "<td>$ligne[$i]</td>";
}
echo "</tr>";
}
echo "</table>\n";

?>

cela me permet de ranger des infos dans un tableau.
Par contre ma derniere ligne ne s'affiche pas ??

Je voudrais également rajouter un "split" qui me permet de classer chaque données dans une colonne : dans le ficier csv, la 1ere colonne indique des noms, la 2eme prenom etc...

Merci

4 réponses

  1. Bonjour,

    personne ne peut m'aider.
    Je pense pas que ce soit tres difficile, mais je n'y arrive pas.

    Merci de votre aide.
    0
    1. Modérateur
      C'est vrai que c'est bizarre... Je pense que quand tu fais le dernier fgetcsv($fic, 1024) tu atteins ta condition d'arrêt avant de l'écrire. Essaie :

      <?
      $fichier = "test.csv";
      $fic = fopen($fichier, 'rb');
      echo "<table border='1'>\n";
      for ($ligne = fgetcsv($fic, 1024); !feof($fic); $ligne = fgetcsv($fic, 1024)) {
         echo "<tr>";
         $j = sizeof($ligne);
         for ($i = 0; $i < $j; $i++) {
            echo "<td>$ligne[$i]</td>";
         }
         echo "</tr>";
      }
      for ($i = 0; $i < sizeof($ligne); $i++) {
         echo "<td>$ligne[$i]</td>";
      }
      echo "</tr>";
      echo "</table>\n";
      ?>


      Je te garantis pas que ça marche mais au moins on verra pourquoi ça plante si ça plante.


      Je voudrais également rajouter un "split" qui me permet de classer chaque données dans une colonne : dans le ficier csv, la 1ere colonne indique des noms, la 2eme prenom etc...


      Pas compis
      0
      1. OUI merci beaucoup mamiemando !!!

        ca marche impécable!

        donc maintenant j'ai récupérer tout le fichier et je les mis dans mon tableau. Ce que je veux, c'est par exemple afficher juste la 1ere colonne qui corespond par exemple au nom.

        exemple : Durand Paul
        Durant Francois
        Du rang Eric
        avec la fonction ca me donne juste : Durand
        Durant
        Du rang
        Ca doit se faire avec "split" je pense

        Merci de votre aide..
        0
        1. Modérateur
          Je viens de comprendre ^^ En effet c'est exactement ça, avec un split ;o). Donc tu splite sur les tabulations et tu ne conserve que le champ qui t'interesse.

          Exemple tiré de
          http://www.php.net/split
          <?php
          // Les délimiteurs peuvent être des tirets, points ou slash
          $date = "04/30/1973"; 
          list($month, $day, $year) = split('[/.-]', $date);
          echo "Month: $month; Day: $day; Year: $year<br />\n";
          ?> 

          Toi, il faut à priori que tu splites sur les \t et ' '.

          Ou mieux tu utilises preg_split
          http://www.php.net/manual/fr/function.preg-split.php
          <?php
          // scinde la phrase grâce aux espacements
          // ce qui inclus les " ", \r, \t, \n et \f
          $keywords = preg_split("/[\s]+/", "la chaine");
          ?>
          0