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 :

Insérer un fichier CSV dans un tableau PHP


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Insérer un fichier CSV dans un tableau PHP
    Bonjour,

    Je dispose d'un fichier CSV qui présente les titres d'un produit ainsi que leurs liens respectifs.

    J'arrive très bien à récupérer le titre des produits via un bout de code que j'ai récupéré sur ce même forum, par contre je n'arrive pas à faire apparaître la deuxième colonne de mon tableau CSV (soit le lien de mes produits).

    Pouvez-vous s'il vous plait m'indiquer ce qu'il faut que je modifie dans ma page : le texte du lien qui doit s'afficher devant être dans le a href.

    Merci

    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
    49
    50
    51
    52
    53
    54
    55
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Document sans nom</title>
    </head>
     
    <body>
    <?php
     
    $fichier = 'circuits-formule1.csv';
    $taille = 1024;
    $delemiteur = ';';
    $row = 0;
    $handle = fopen($fichier, "r");
     
    $liste = array();
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
        $liste[$row] = $data[0];
        $row++;
    }
     
    fclose($handle);
     
    ?>
    <?php
    $nbCols = 3; // nombre de colonnes du tableau
    ?>
    <table width="100%" border="0">
      <tbody>
        <tr>
    <?php
     
    for ($a = 0; $a <= $row; $a = $a + 3)
    {
        echo "  <tr>\n"; // ..., alors on est sur le premier élément d'une ligne
     
        // On place chaque élément dans une cellule du tableau
        for ($cpt = $a; $cpt < $a + 3; $cpt++)
        {
            if ($cpt >= $row)
                break;
    ?>
        <td align="center" style="width:<?php echo round(100/$nbCols);?>%;"><a href="/index.php?controller=product?id_product=<?php echo $liste[$cpt]; ?>"><img src="/img/produits/circuits/deco/<?php echo $liste[$cpt]; ?>.png" width="387" height="300" alt="<?php echo $liste[$cpt]; ?>" title="<?php echo $liste[$cpt]; ?>" /></a></td>
    <?php
        }
        // fin d'une ligne
     
        echo "  </tr>\n"; // ..., on est sur le dernier élément d'une ligne
    }
    ?>
    </table>
    </body>
    </html>

  2. #2
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    Citation Envoyé par Denys06 Voir le message

    J'arrive très bien à récupérer le titre des produits via un bout de code que j'ai récupéré sur ce même forum, par contre je n'arrive pas à faire apparaître la deuxième colonne de mon tableau CSV (soit le lien de mes produits).
    Le titre dont tu parles est géré par $liste[$cpt], et enregistré depuis le csv dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
        $liste[$row] = $data[0];
        $row++;
    }
    Je ne connais pas la structure de ton csv, mais avec le $data[0], tu ne récupères que la première colonne.
    Avec un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
        $liste[$row] = $data[0];
        $link[$row] = $data[1];
        $row++;
    }
    tu récupères la deuxième colonne...
    My daughter, my laptop, my bike and my double-sticks...

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Tout d'abord merci de ta réponse et de ton intérêt pour mon soucis.
    J'ai essayé d'appliquer les indications que tu m'à donnés, mais je n'arrive pas à faire apparaître le lien de mon produit (en réalité juste la référence qui j'inclue dans mon lien) :

    Aurais-tu une piste sur le fait que je n'arrive pas à récupérer ma deuxième colonne ?

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Document sans nom</title>
    </head>
     
    <body>
    <?php
     
    $fichier = 'circuits-formule1.csv';
    $taille = 1024;
    $delemiteur = ';';
    $row = 0;
    $handle = fopen($fichier, "r");
     
    $nom = array();
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
        $nom[$row] = $data[0];
        $row++;
    }
     
    $link = array();
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
    	$link[$row] = $data[1];
        $row++;
    }
     
    fclose($handle);
     
    ?>
    <?php
    $nbCols = 3; // nombre de colonnes du tableau
    ?>
    <table width="100%" border="0">
      <tbody>
        <tr>
    <?php
     
    for ($a = 0; $a <= $row; $a = $a + 3)
    {
        echo "  <tr>\n"; // ..., alors on est sur le premier élément d'une ligne
     
        // On place chaque élément dans une cellule du tableau
        for ($cpt = $a; $cpt < $a + 3; $cpt++)
        {
            if ($cpt >= $row)
                break;
    ?>
        <td align="center" style="width:<?php echo round(100/$nbCols);?>%;"><a href="/index.php?controller=product?id_product=<?php echo $link[$cpt]; ?>"><img src="/img/produits/circuits/deco/<?php echo $nom[$cpt]; ?>.png" width="387" height="300" alt="<?php echo $nom[$cpt]; ?>" title="<?php echo $nom[$cpt]; ?>" /></a></td>
    <?php
        }
        // fin d'une ligne
     
        echo "  </tr>\n"; // ..., on est sur le dernier élément d'une ligne
    }
    ?>
    </table>
    </body>
    </html>

  4. #4
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par Denys06 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $nom = array();
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
        $nom[$row] = $data[0];
        $row++;
    }
     
    $link = array();
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
    	$link[$row] = $data[1];
        $row++;
    }
    Pourquoi deux boucle distinctes ? Tu peux en avoir une seule, déjà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $nom = array();
    while (($data = fgetcsv($handle,$taille,$delemiteur)) !== FALSE) {
        $num = count($data); // Non utilisé ?
        $nom[$row] = $data[0];
        $link[$row] = $data[1];
        $row++;
    }
    ensuite, comme je te disais, je ne connais évidemment pas la structure de ton csv... peut-être le lien que tu cherches est en 3ème ou 10ème position dans tes lignes de csv... où bien il n'y est pas, et tu l'y recherches en vain...
    $data[x] va te donner la (x+1)ième colonne de ta ligne $row.... (et $num te donne le nombre de colonnes présentes dans la ligne)
    My daughter, my laptop, my bike and my double-sticks...

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour kalimukti.

    Merci beaucoup, avec le dernier code que tu m'à donné cela fonctionne à merveille ! je vais enfin pouvoir terminé ma page.

    A très bientôt et merci !!!!!

  6. #6
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    N'oublie pas de marquer ta discussion comme résolue
    My daughter, my laptop, my bike and my double-sticks...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/01/2012, 14h49
  2. Réponses: 6
    Dernier message: 05/02/2009, 09h34
  3. [CSV] Contenu d'un fichier csv ds un tableau php
    Par -Neo- dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2008, 17h02
  4. [CSV] Mettre un fichier CSV dans un tableau
    Par tahiboy dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2007, 11h36
  5. Mettre un fichier csv dans un tableau à deux dimensions
    Par neeux dans le forum Général Python
    Réponses: 5
    Dernier message: 05/03/2007, 16h36

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