[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. 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");
    ?>
    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..
      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
        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.