Filtrer une requete avec des dates
Posté : 17 juil. 2016, 18:37
Salut à tous.
J'ai put voir que lpost que j'avais mis sur ce sujet à beaucoup était consulté mais sans réponse j'ai donc essayé de simplifier au maxmimum la chose.
J'ai donc actuellement des requetes qui marche bien:
J'ai put voir que lpost que j'avais mis sur ce sujet à beaucoup était consulté mais sans réponse j'ai donc essayé de simplifier au maxmimum la chose.
J'ai donc actuellement des requetes qui marche bien:
$sql = 'SELECT * FROM loisirs JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE loisirs.date_fin_sortie > NOW() AND loisirs.valide = 1';
// region
if(!empty($_REQUEST['region'])){
// FIXME : sql injectin spoted
$sql .= ' AND regions.url = \''.$_REQUEST['region'].'\'' ;
}
if(!empty($_REQUEST['departement'])){
$sql .= ' AND loisirs.id_departements = '.$_REQUEST['departement'];
}
if(!empty($_REQUEST['loisir']) ){
// FIXME : sql injectin spoted
$sql .= ' AND loisirs.genre_loisir = \''.$_REQUEST['loisir'].'\'' ; // loisir
}
// Recherche par date
// FIXME : $du et $au n'existe pas ici ;)
// FIXME : sql injectin spoted
if(!empty($du) && !empty($au)) {
$sql .= ' AND (DATE_FORMAT(loisirs.date_debut_sortie, \'%Y-%m-%d\') <= \''.$du.'\' AND DATE_FORMAT(loisirs.date_fin_sortie, \'%Y-%m-%d\') >= \''.$au.'\')';
}
// Recherche par ville
if(!empty($_REQUEST['ville'])) {
$sql .= ' AND loisirs.city = \''. getRealValue($_REQUEST['ville']). '\'';
}
// Recherche par salle
if(!empty($_REQUEST['manufacturer'])){
$sql .= ' AND loisirs.manufacturer = \''. getRealValue($_REQUEST['manufacturer'] , 'manufacturer') .'\'';
}
if (empty($_REQUEST['loisir']) && empty($_GET['page']) && empty($_REQUEST['departement'])) {
$sql .= ' GROUP BY id_type_loisirs ORDER BY loisirs.id_loisirs';
}else {
$sql .= 'ORDER BY loisirs.id_loisirs';
}
$sql .= ' DESC LIMIT '.intval(($page-1)*$parPage).', '.$parPage ;
// la première partie de la requête permet de filtrer et de grouper, celle ci d'avoir les données
$sqlFinal = 'SELECT * FROM loisirs JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs IN ('.$sql.')';
// $sqlFinal;
Et plus loin ds la page j'ai mes "boutons" qui doivent filtrer selon les date mais rien ne se passe et un echo $sql n'a aucun effet completement ignorer pourquoi ?<!-- Nav filtre Rapide -->
<nav class="navbar_filter navbar-default">
<div class="container">
<div class="filter-tabs">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed pull-left" data-toggle="collapse" data-target="#nav-secondary" aria-expanded="false" aria-controls="navbar">
<span class="sr-only pink_filter">Toggle navigation</span>
FILTRE RAPIDE <i class="fa fa-clock-o"></i>
</button>
</div>
<!-- Filtre rapide -->
<div id="nav-secondary" class="navbar-collapse collapse">
<ul class="nav navbar-nav time">
<li class="active"><a href="#home" data-du="" data-au="" data-page="1" data-toggle="tab" >Toutes </a></li>
<li><a href="#profile" data-du="<?php echo date('Y-m-d'); ?>" data-au="<?php echo date('Y-m-d'); ?>" data-page="1" data-toggle="tab">Aujourd'hui </a></li>
<li><a href="#messages" data-du="<?php echo date('Y-m-d', strtotime('+1 day')); ?>" data-au="<?php echo date('Y-m-d', strtotime('+1 day')); ?>" data-page="1" data-toggle="tab">Demain </a></li>
<li><a href="#settings" data-du="<?php $strtotime = (date('N') == 7) ? 'Saturday - '.date('N').' days' : 'Saturday'; echo date('Y-m-d', strtotime($strtotime)); ?>" data-au="<?php echo date('Y-m-d', strtotime('Sunday')); ?>" data-page="1" data-toggle="tab">Ce week end </a></li>
</ul>
</div>
<!-- End Filtre rapide -->
</div>
</div>
</nav>
<!-- End nav -->
Merci à vous