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

Bibliothèques et frameworks PHP Discussion :

[XML] Pagination avec xml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut [XML] Pagination avec xml
    Bonjour,

    je viens vers vous pour vous demander de l'aide.
    j'ai un document xml, je l'utilise pour une application mobile

    Sur ce document xml, j'ai une liste de news de 1 à 100

    j'aimerai affiché les articles 10/10

    comme je disais la source est un document .xml

    j'ai trouver sur google, youtube, des informations et j'ai pu crée mon fichier php ou j'appelle mon document .xml

    le soucis, ce que j'arrive pas a faire la pagination nécessaire

    exemple

    news.php?page=1 (1-10)
    news.php?page=2 (11-20)
    news.php?page=3 (21-30)

    ainsi de suite

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $xml = simplexml_load_file('news.xml');
    foreach ($xml->item as $item) {
    echo $item->title.' is '.$item->date.'<br>';
    }
    ?>

    Voici les ressources ou j'ai était voir

    php & xml



    php & xml pagination

    sur ce site il y a l'idée que j'aimerai mettre en place mais sans succès avec mon code => http://www.kirupa.com/forum/showthre...XML-Pagination

    Merci d'avance

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Sans que ce soit hyper propre, ça pourrait donné quelque chose comme ça dans un premier temps :

    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
    $page = $GET['page'];
    $nbParPage = 10;
     
    $debut = ($page - 1) * $nbParPage + 1;
    $fin = $debut + $nbParPage - 1;
     
    $xml = simplexml_load_file('news.xml');
    $i = 1;
    foreach ($xml->item as $item) {
        if ($i >= $debut AND $i <= $fin) {
            echo $item->title . ' is ' . $item->date . '<br>';
        } else if ($i > $fin) {
            break;
        }
    $i++;
    }
    A adapter bien entendu à la mise en forme de ton fichier XML (je suis parti du code que tu as mis).
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Tout d'abord merci Spartacusply,pour votre intervention

    j'essaye votre code, j'ai pas d'erreur, mais j'ai pas de contenu qui s'affiche
    vous avez essayé avec le code que j'ai mis c'est bien ça?
    il manque une chose peux être?

    bonne soirée

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Comme je l'ai dit tout dépend de comment est formé ton xml. Avec mon code (et le tien aussi d'ailleurs) il faut que celui-ci soit formé comme ça :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <item>
        <title>tata</title>
        <date>date</date>
    </item>
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Biensur mon code xml est formé comme vous avez cité

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
      <channel>
    <item>
    	<title>News 1</title>
    	<date>19/04/12</date>
     
    	</item>
     
    		<item>
    	<title>News 2</title>
    	<date>19/04/12</date>
     
    	</item>
     
    		<item>
    	<title>News 3</title>
    	<date>19/04/12</date>
     
    	</item>
     
    		<item>
    	<title>News 4</title>
    	<date>19/04/12</date>
     
    	</item>
     
    		<item>
    	<title>News 5</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 6</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 7</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 8</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 9</title>
    	<date>19/04/12</date>
    	</item>
     
    			<item>
    	<title>News 10</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 11</title>
    	<date>19/04/12</date>
    	</item>
     
    				<item>
    	<title>News 12</title>
    	<date>19/04/12</date>
    	</item>
     
    				<item>
    	<title>News 13</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 14</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 15</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 16</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 17</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 18</title>
    	<date>19/04/12</date>
     
    	</item>
     
    				<item>
    	<title>News 19</title>
    	<date>19/04/12</date>
     
    	</item>
     
    	<item>
    	<title>News 20</title>
    	<date>19/04/12</date>
     
    	</item>
     
    		<item>
    	<title>News 21</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 22</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 23</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 24</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 25</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 26</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 27</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 28</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 29</title>
    	<date>19/04/12</date>
     
    	</item>
     
    			<item>
    	<title>News 30</title>
    	<date>19/04/12</date>
     
    	</item>
     
    	  </channel>
    avec mon code je vois le titre mais pas de pagination
    mais avec votre code ça ne marche pas

    merci

  6. #6
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Dans ce cas le mien marche bien, il y a juste une erreur sur le "$_GET" (manque le underscore)
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Voici un script amélioré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $page = $_GET['page'];
     
    $nbParPage = 10;
     
    $debut = ($page - 1) * $nbParPage;
    $fin = $debut + $nbParPage - 1;
     
    $xml = simplexml_load_file('external.xml');
     
    for ($i = $debut; $i <= $fin; $i++) {
        if (isset($xml->item[$i])) {
            echo $xml->item[$i]->title . ' is ' . $xml->item[$i]->date . '<br>';
        }
    }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Super!

    ça fonctionne maintenant
    je vais marqué résolu

    mais j'ai encore une, deux petite question, si je peux me permettre

    dans mon xml

    j'ai ses items suivants

    titre
    date
    description
    image

    dans ce style


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <item>
    	<title>Titre</title>
    	<date>19/04/12</date>
    	<thumbnail url="http://www.url.be/app/images/news/news_1.jpg"/>
    	<description><![CDATA[content]]></description>
    </item>
    je récupère description aussi, mais thumbnail je n'arrive pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo $xml->item[$i]->title . ' <br> ' . $xml->item[$i]->date . '<br>' . $xml->item[$i]->description . '<br>' . $xml->item[$i]->thumbnail . '<br><br>' ;
    l'êntete de mon news?xml est le suivants

    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
    <?xml version="1.0" encoding="utf-8"?>
    <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
    <item>
    	<title>Titre</title>
    	<date>19/04/12</date>
    	<thumbnail url="http://www.url.be/app/images/news/news_1.jpg"/>
    	<description><![CDATA[content]]></description>
    </item>
     
    <item>
    	<title>Titre</title>
    	<date>19/04/12</date>
    	<thumbnail url="http://www.url.be/app/images/news/news_1.jpg"/>
    	<description><![CDATA[content]]></description>
    </item>
     
    <item>
    	<title>Titre</title>
    	<date>19/04/12</date>
    	<thumbnail url="http://www.url.be/app/images/news/news_1.jpg"/>
    	<description><![CDATA[content]]></description>
    </item>
    </channel>
     
    </rss>
    pourquoi quand il y a l’entête ça ne fonctionne pas mais sans entête ça fonctionne?

    merci beaucoup

  9. #9
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    C'est normal, "thumbnail" est un élément vide. Si tu veux accéder à l'url il te faut faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml->item[$i]->thumbnail['url']
    Pour l'entête, c'est également normal car il y a la balise "channel" qui encapsule le tout. Il te faut donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $xml = simplexml_load_file('external.xml');
     
    $xml = $xml->channel;
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Merci

    mon objectif final

    c'est exporté ce genre de structure

    je vais essayé la, si j'arrive pas je vais demandé un coup de main

    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
     
     
    <?php
     
    $page = $_GET['page'];
     
    $nbParPage = 10;
     
    $debut = ($page - 1) * $nbParPage;
    $fin = $debut + $nbParPage - 1;
     
    $xml = simplexml_load_file('news.xml');
     
     
    for ($i = $debut; $i <= $fin; $i++) {
        if (isset($xml->item[$i])) {
     
     
        	//<?xml version="1.0" ?>
    //<rss version="2.0">
    //<channel>
     
    //<item>
    	//<title>Titre</title>
    	//<date>19/04/12</date>
    	//<thumbnail url="http://www.url.be/app/images/news/news_1.jpg"/>
    	//<description><![CDATA[content]]></description>
    //</item>
     
    //</channel>
    //</rss>
     
     
     
            echo $xml->item[$i]->title . ' <br> ' . $xml->item[$i]->date . '<br>' . $xml->item[$i]->description . '<br>' . $xml->item[$i]->thumbnail['url'] . '<br><br>' ;
     
        }
    }
     
     
    ?>

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Merci Spartacusply
    j'ai pu réglé ce que je voulais faire

    bonne soirée

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    j'aimerai savoir une chose,

    lorsque j'ouvre le document php, news.php

    je vois apparaitre toujours la news 1, 10 fois

    c'est possible d'optimisé de manière si ça ouvre news.php qui affiche tout les news sans limites?

    ou de ce type: news.php?page=all

    merci

    bonne journée

  13. #13
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Voici qui pourrait faire l'affaire, et qui traite déjà tout un ensemble de cas particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (empty($_GET['page']) OR !is_numeric($_GET['page'])) {
        // affiche tout
        $debut = 0;
        $fin = count($xml->item);
    } else {
        $debut = ($page - 1) * $nbParPage;
        $fin = $debut + $nbParPage - 1;
    }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    donc je remplace ce code par celui la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    $page = $_GET['page'];
     
    $nbParPage = 10;
     
    $debut = ($page - 1) * $nbParPage;
    $fin = $debut + $nbParPage - 1;
     
     
    $xml = simplexml_load_file('news.xml');
     
    ...
    par

    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
     
    <?php
     
    $page = $_GET['page'];
     
    $nbParPage = 10;
     
    if (empty($_GET['page']) OR !is_numeric($_GET['page'])) {
        // affiche tout
        $debut = 0;
        $fin = count($xml->item);
    } else {
        $debut = ($page - 1) * $nbParPage;
        $fin = $debut + $nbParPage - 1;
    }
     
    $xml = simplexml_load_file('news.xml');
     
    ...
    on dirais que ça réagit pas

    merci

  15. #15
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Il faut charger ton xml avant du coup car count($xml->item) il connaît pas sinon.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 202
    Points : 60
    Points
    60
    Par défaut
    ah ok,

    maintenant ça fonctionne

    au faite, l'idée global était de récupérer des flux xml déjà généré par wordpress, ou autre services ...
    et adapté dans un nouveau fichier pour récupéré dans une application

    merci beaucoup, j'ai appris pas mal de chose
    en une journée


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/09/2006, 09h28
  2. pagination avec dataTable
    Par dude666 dans le forum JSF
    Réponses: 4
    Dernier message: 28/08/2006, 11h23
  3. [SQL] Problème de pagination avec tableau
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/05/2006, 22h16
  4. [C#] Comment gérer la pagination avec un GridView ?
    Par appwnet dans le forum ASP.NET
    Réponses: 5
    Dernier message: 05/05/2006, 13h47
  5. [SQL-Server] Pagination avec mssql
    Par crevettepourrie dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/01/2006, 12h35

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