Voila j'ai un code qui fonctionne bien cependant ma page mais longtemps à s'affiché ( temps de réponse lent 4 à 5 sec)
Donc vous voyez le problème.
Voici ma requete elle me permet en gros d'affiché mes entrées selon ville, departement, région .... parmis environ 5000 résultats.
$sql = 'SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1';
if (!empty($_GET['region'])) {
$sql .= ' AND regions.url = \''.$_GET['region'].'\'';
}
if (!empty($_GET['departement'])) {
$sql .= ' AND loisirs.id_departements = '.$_GET['departement'];
}
if (!empty($_GET['loisir'])) {
$sql .= ' AND loisirs.genre_loisir = \''.$_GET['loisir'].'\'';
}
if (!empty($_GET['ville'])) {
$sql .= ' AND loisirs.city = \''. getRealValue($_GET['ville']). '\'';
}
J'ai donc essayé de supprimer * est de remplacé uniquement par les champs demandé .... mais ça ne suffit pas.Que puis je faire de mieux ?
PS : J'affiche 24 résultat à la fois
Merci à vous
EDIT:
Je ne pense pas que ça vient de ça mais voici ma pagination ( peut etre un peu barbare je l'avoue )
// Valeur de pagination
if (empty($_GET['region']) && empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])){
$valeur_paginate = 'sortie';
}
// Si il n y a que la région de demandée
else if (!empty($_GET['region']) && empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])){
$valeur_paginate = 'region-'.$_GET['region'];
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['region']) && !empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])) {
$valeur_paginate = 'region-'.$_GET['region'].'-loisir-'.$_GET['loisir'];
}
// Si il y a une région de demandée et un loisir
else if (empty($_GET['region']) && !empty($_GET['loisir']) && empty($_GET['departement']) && empty($_GET['ville'])) {
$valeur_paginate = 'type-'.$_GET['loisir'];
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['departement']) && empty($_GET['loisir']) && empty($_GET['ville'])) {
$valeur_paginate = 'departement-'.$_GET['departement'];
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['departement']) && !empty($_GET['loisir']) && empty($_GET['ville'])) {
$valeur_paginate = 'departement-'.$_GET['departement'].'-loisir-'.simplification($_GET['loisir']);
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['loisir']) && !empty($_GET['ville']) && empty($_GET['departement'])) {
$valeur_paginate = 'sortir-'.simplification($_GET['ville']).'-loisir-'.$_GET['loisir'];
}
// Si il y a une région de demandée et un loisir
else if (empty($_GET['region']) && !empty($_GET['ville']) && empty($_GET['departement']) && empty($_GET['loisir'])) {
$valeur_paginate = 'sortir-'.simplification($_GET['ville']);
}
// Si il y a une région de demandée et un loisir
else if (!empty($_GET['ville']) && !empty($_GET['loisir'])) {
$valeur_paginate = 'sortir-'.simplification($_GET['ville']).'-loisir-'.simplification($_GET['loisir']);
}
// Pagination
$parPage = 12;
$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$nbre_annonces_par_page = 12;
$nbre_pages_max_gauche_et_droite = 3;
$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 .= '<li><a href="'.$valeur_paginate.($previous > 1 ? '-page-'.$previous : null).'.html">Prec</a></li> ';
for($i = $page_num - $nbre_pages_max_gauche_et_droite; $i < $page_num; $i++){
if($i > 0){
$pagination .= '<li><a href="'.$valeur_paginate.($i > 1 ? '-page-'.$i : null).'.html">'.$i.'</a></li> ';
}
}
}
$pagination .= '<li class="page-active">'.$page_num.'</li> ';
for($i = $page_num+1; $i <= $last_page; $i++){
$pagination .= '<li><a href="'.$valeur_paginate.'-page-'.$i.'.html">'.$i.'</a></li> ';
if($i >= $page_num + $nbre_pages_max_gauche_et_droite){
break;
}
}
if($page_num != $last_page){
$next = $page_num + 1;
$pagination .= '<li><a href="'.$valeur_paginate.'-page-'.$next.'.html">Suiv</a><li> ';
}
}