Bonjour,
Je voudrais pouvoir faire un système de pagination à partir de la lecture
du fichier produits.xml, dans mon fichier pr l'exemple,
j'ai 14 fois lyon (ville de départ)
donc avec simplexml, je peux afficher:
en page 1 lyon 14 fois
ou page 1 lyon 10 fois avec un break
mais dans ce dernier cas je ne récupère pas les 4 affichages en page 2.
Pourriez-vous m'éclairer ? 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69 $ville_depa="lyon"; define('NB_PAR_PAGE', 10); $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $document = simplexml_load_file('produits.xml'); $count = count($document->xpath("//produit[prix/unprix/ville_dep='$ville_depa']")); // NB_PAR_PAGE $debut_pos = ($page - 1) * NB_PAR_PAGE + 1; $fin_pos = $page * NB_PAR_PAGE + 1; // $derniere_page = ceil($count / NB_PAR_PAGE); if ($count > 0) { $produits = $document->xpath(utf8_encode("//produit[prix/unprix/ville_dep='$ville_depa'][position()>=$debut_pos and position()<$fin_pos]")); $compteur=1; // on compte les articles affichés $nb_affichage_page =10; // maxi d'articles par page foreach ($produits as $produit) { echo '<table width="90%" border="0" align="center"> <tr> <td width="500" align="left"><div align="justify">'.$debut_pos.' - '.$fin_pos.'</div></td> </tr>'; foreach ($produit->prix->unprix as $unprix) { if ($unprix->ville_dep == $ville_depa) { echo '<tr> <td> depart : ' . utf8_decode((string) $unprix->date_dep) . ' à ' . utf8_decode((string) $unprix->ville_dep) . ' - '.$compteur.' </td> </tr>'; // Si le nombre d'articles dépasse 10 on stop l'affichage if($compteur++>=$nb_affichage_page) break; } } echo '</table>'; } // pages numero $derniere_page = ceil($compteur / NB_PAR_PAGE); echo '<table align="center"> <tr> <td>'; if ($page > 1) { echo '<a href="' . basename(__FILE__) . '?page=' . ($page - 1) . '" class="bleudetails2"> << précédente </a>'; } for ($i = 1; $i <= $derniere_page; $i++) { if ($i == $page) { echo '<a class="bleudetails2" >' . $i . '</a>'; } else { echo '<a href="' . basename(__FILE__) . '?page=' . $i . '" class="bleudetails2"> ' . $i . ' </a>'; } } if ($page < $derniere_page) { echo '<a href="' . basename(__FILE__) . '?page=' . ($page + 1) . '" class="bleudetails2"> suivante >> </a>'; } echo '</td> </tr> </table>'; } ?>
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<?xml version="1.0" encoding="utf-8"?> <produit> <prix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-11-12</date_dep> <prix_produit>3621</prix_produit> </unprix> <unprix> <ville_dep>lyon</ville_dep> <date_dep>2007-10-15</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>marseille</ville_dep> <date_dep>2007-10-01</date_dep> <prix_produit>3981</prix_produit> </unprix> <unprix> <ville_dep>paris</ville_dep> <date_dep>2007-09-03</date_dep> <prix_produit>3521</prix_produit> </unprix> </prix> </produit>
Partager