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&eacute;c&eacute;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>