par
yoann38 » 11 avr. 2016, 20:49
Salut à tous.
Me voilà a la fin de mon systeme de pagination
"avancé", pour moi ça devient complexe
Donc enfait tout marche pas de soucis.
Je cherche juste à faire en sorte à afficher le numéro de page dans l'url, actuellement on peut changer de page sans que l'url soit affecté ( pas terrible coté indexation des pages )...
Actuellement oui il y a de l'ajax, perso je n'aime pas ca, donc si plus simple en supprimant l'ajax
Donc voilà le code:
La pagination elle même: (page: recherche-ajax.php)
//traitement pagination
$nbre_annonces_par_page = 10;
$nbre_pages_max_gauche_et_droite = 2;
$last_page = ceil($nb / $nbre_annonces_par_page);
if(isset($_GET['page']) && is_numeric($_GET['page'])){
$page_num = $_GET['page'];
} else {
$page_num = 1;
}
if($page_num < 1){
$page_num = 1;
} else if($page_num > $last_page) {
$page_num = $last_page;
}
$limit = 'LIMIT '.($page_num - 1) * $nbre_annonces_par_page. ',' . $nbre_annonces_par_page;
$pagination = '';
if($last_page != 1){
if($page_num > 1){
$previous = $page_num - 1;
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$previous.'" class="page" data-page="'.$previous.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-left"></i>
</a> ';
for($i = $page_num - $nbre_pages_max_gauche_et_droite; $i < $page_num; $i++){
if($i > 0){
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$i.'" class="page" data-page="'.$i.'" data-du="'.$du.'" data-au="'.$au.'">'.$i.'</a> ';
}
}
}
$pagination .= '<span class="active">'.$page_num.'</span> ';
for($i = $page_num+1; $i <= $last_page; $i++){
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$i.'" class="page" data-page="'.$i.'" data-du="'.$du.'" data-au="'.$au.'">'.$i.'</a> ';
if($i >= $page_num + $nbre_pages_max_gauche_et_droite){
break;
}
}
if($page_num != $last_page){
$next = $page_num + 1;
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$next.'" class="page" data-page="'.$next.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-right"></i>
</a> ';
}
}
$sql .= " ORDER BY loisirs.id_loisirs DESC LIMIT ".intval(($page-1)*$parPage).", ".$parPage;
//$sql .= " ORDER BY loisirs.id_loisirs, id_simply_user IN(999, 34) DESC LIMIT ".intval(($page-1)*$parPage).", ".$parPage;
$req = $bdd->query($sql);
$nb2 = $req->rowCount(); // On calcul le total avant la pagination
Le js:
// JavaScript Document
// On donne une action dès qu'on clique sur un lien des nav
$(document).ready(function(){
$('.filter-tabs a, .page:not(.active)').on('click', function(e) {
e.preventDefault(); // On annule le fait d'avoir cliqué sur le lien.
var du = $(this).attr('data-du');
var au = $(this).attr('data-au');
var page = $(this).attr('data-page');
chargerDonnees(du, au, page);
});
});
// On déclare la fonction qui va aller chercher les données en base de données selon le bouton cliqué
function chargerDonnees(du, au, page) {
var dep = $('#departement').val();
var region = $('#departement').attr('data-region');
var loisir = $('#loisir').val();
var vil = $('#ville').val();
var datetimepicker2 = $('#datetimepicker2').val();
$.ajax({
type: 'GET',
url: 'include/rechercheAjax.php',
data: 'du='+du+'&au='+au+'&page='+page+'&departement='+dep+'®ion='+region+'&loisir='+loisir+'&ville='+vil+'&date='+datetimepicker2,
processData: true,
async: false,
beforeSend: function() {
$('#bloc_page').html('Chargement en cours');
},
success: function (data) {
$('#bloc_page').html(data);
// On doit le rappeller car un nouveau bloc pagination a été créé
$('.page:not(.active)').on('click', function(e) {
e.preventDefault(); // On annule le fait d'avoir cliqué sur le lien.
var du = $(this).attr('data-du');
var au = $(this).attr('data-au');
var page = $(this).attr('data-page');
chargerDonnees(du, au, page);
});
}
});
}
et htaccess. ( juste quelques exemple )
RewriteRule ^toutes-les-sorties-de-la-ville-de-([a-z0-9-]+)-page-([0-9]+).html$ sortie.php?ville=$1&page=$2
RewriteRule ^toutes-les-sorties-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?ville=$1
RewriteRule ^toutes-les-sorties-([A-Za-z0-9_-]+)-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?loisir=$1&ville=$2
Salut à tous.
Me voilà a la fin de mon systeme de pagination [b] "avancé"[/b], pour moi ça devient complexe :wink:
Donc enfait tout marche pas de soucis.
Je cherche juste à faire en sorte à afficher le numéro de page dans l'url, actuellement on peut changer de page sans que l'url soit affecté ( pas terrible coté indexation des pages )...
Actuellement oui il y a de l'ajax, perso je n'aime pas ca, donc si plus simple en supprimant l'ajax
Donc voilà le code:
[b]La pagination elle même: (page: recherche-ajax.php)[/b]
[php]//traitement pagination
$nbre_annonces_par_page = 10;
$nbre_pages_max_gauche_et_droite = 2;
$last_page = ceil($nb / $nbre_annonces_par_page);
if(isset($_GET['page']) && is_numeric($_GET['page'])){
$page_num = $_GET['page'];
} else {
$page_num = 1;
}
if($page_num < 1){
$page_num = 1;
} else if($page_num > $last_page) {
$page_num = $last_page;
}
$limit = 'LIMIT '.($page_num - 1) * $nbre_annonces_par_page. ',' . $nbre_annonces_par_page;
$pagination = '';
if($last_page != 1){
if($page_num > 1){
$previous = $page_num - 1;
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$previous.'" class="page" data-page="'.$previous.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-left"></i>
</a> ';
for($i = $page_num - $nbre_pages_max_gauche_et_droite; $i < $page_num; $i++){
if($i > 0){
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$i.'" class="page" data-page="'.$i.'" data-du="'.$du.'" data-au="'.$au.'">'.$i.'</a> ';
}
}
}
$pagination .= '<span class="active">'.$page_num.'</span> ';
for($i = $page_num+1; $i <= $last_page; $i++){
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$i.'" class="page" data-page="'.$i.'" data-du="'.$du.'" data-au="'.$au.'">'.$i.'</a> ';
if($i >= $page_num + $nbre_pages_max_gauche_et_droite){
break;
}
}
if($page_num != $last_page){
$next = $page_num + 1;
$pagination .= '<a rel="nofollow" href="sortie.php?page='.$next.'" class="page" data-page="'.$next.'" data-du="'.$du.'" data-au="'.$au.'"><i class="fa fa-angle-right"></i>
</a> ';
}
}
$sql .= " ORDER BY loisirs.id_loisirs DESC LIMIT ".intval(($page-1)*$parPage).", ".$parPage;
//$sql .= " ORDER BY loisirs.id_loisirs, id_simply_user IN(999, 34) DESC LIMIT ".intval(($page-1)*$parPage).", ".$parPage;
$req = $bdd->query($sql);
$nb2 = $req->rowCount(); // On calcul le total avant la pagination[/php]
[b]Le js:[/b]
[html]// JavaScript Document
// On donne une action dès qu'on clique sur un lien des nav
$(document).ready(function(){
$('.filter-tabs a, .page:not(.active)').on('click', function(e) {
e.preventDefault(); // On annule le fait d'avoir cliqué sur le lien.
var du = $(this).attr('data-du');
var au = $(this).attr('data-au');
var page = $(this).attr('data-page');
chargerDonnees(du, au, page);
});
});
// On déclare la fonction qui va aller chercher les données en base de données selon le bouton cliqué
function chargerDonnees(du, au, page) {
var dep = $('#departement').val();
var region = $('#departement').attr('data-region');
var loisir = $('#loisir').val();
var vil = $('#ville').val();
var datetimepicker2 = $('#datetimepicker2').val();
$.ajax({
type: 'GET',
url: 'include/rechercheAjax.php',
data: 'du='+du+'&au='+au+'&page='+page+'&departement='+dep+'®ion='+region+'&loisir='+loisir+'&ville='+vil+'&date='+datetimepicker2,
processData: true,
async: false,
beforeSend: function() {
$('#bloc_page').html('Chargement en cours');
},
success: function (data) {
$('#bloc_page').html(data);
// On doit le rappeller car un nouveau bloc pagination a été créé
$('.page:not(.active)').on('click', function(e) {
e.preventDefault(); // On annule le fait d'avoir cliqué sur le lien.
var du = $(this).attr('data-du');
var au = $(this).attr('data-au');
var page = $(this).attr('data-page');
chargerDonnees(du, au, page);
});
}
});
}[/html]
[b]et htaccess. ( juste quelques exemple )[/b]
[html]RewriteRule ^toutes-les-sorties-de-la-ville-de-([a-z0-9-]+)-page-([0-9]+).html$ sortie.php?ville=$1&page=$2
RewriteRule ^toutes-les-sorties-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?ville=$1
RewriteRule ^toutes-les-sorties-([A-Za-z0-9_-]+)-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?loisir=$1&ville=$2[/html]