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 :
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 :
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> |