par
yoann38 » 02 déc. 2015, 21:55
Salut à tous.
J'ai un formulaire qui comporte 2 liste déroulante qui marche très bien.
J'ai rajouté à ce formulaire un champ de recherche afin de permettre à l'utilisateur de rechercher par ville et celui ci ne fonctionne pas.
Script. ( ma 1ère page)
<form id="choice" name="liste deroulante" method="GET" action="">
<!-- Select des departements -->
<div class="col-md-3 col-sm-3 max">
<?php // Gestion des variables des départements
$region = !empty($_SESSION['membre']['id_region']) ? simplification($aRegion[$_SESSION['membre']['id_region']]) :NULL;
$region = !empty($_REQUEST['region']) ? $_REQUEST['region'] : $region; /* Si la region est renseigné dans l'url il est prioritaire */
$departement = !empty($_SESSION['membre']['id_departements']) ? $_SESSION['membre']['id_departements'] : NULL;
$departement = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : $departement; /* Si le departemebt est renseigné dans l'url il est prioritaire */
?>
<select name="departement" id="departement" class="selectpicker max" data-region="<?php echo $region; ?>">
<option value="">Votre département</option>
<?php echo aRegionDepartement($region, $departement); ?>
</select>
</div>
<!-- Select des loisirs -->
<div class="col-md-3 col-sm-3 max">
<select name="loisir" id="loisir" class="selectpicker max">
<option value=""> Toutes les sorties</option>
<?php
asort($aLoisirs);
foreach($aLoisirs as $k => $v) {
$selected = !empty($_REQUEST['loisir']) && ($_REQUEST['loisir'] == $k) ? ' selected="selected"' : NULL;
echo '<option value="'.$k.'"'.$selected.'>'.$v.'</option>'."\n";
} ?>
</select>
<?php echo !empty($region) ? '<input type="hidden" name="region" value="'.$region.'" />' : NULL; ?>
</div>
<!-- Moteur de recherche -->
<input class="form-control" placeholder="code postal, ville, nom " name="requete" id="requete" type="search">
<!-- Date Picker Search -->
<div class="col-md-3 col-sm-3 max">
<div class="input-group input-group">
<span class="input-group-addon"><i class="fa fa-calendar-o"></i></span>
<input id="datetimepicker2" name="datetimepicker" placeholder="Recherche par date" type="text" readonly value="<?php echo !empty($_REQUEST['datetimepicker']) ? $_REQUEST['datetimepicker'] : NULL; ?>">
</div>
</div>
<script type="text/javascript">
jQuery('#datetimepicker2').datetimepicker({
datepicker:true,
timepicker:false,
closeOnDateSelect:true,
format:'d/m/Y'
});
</script>
<!-- End Date Picker Search -->
<div class="col-md-3 col-sm-3 max">
<input type="button" autofocus id="btn_select" class="find" onclick="javascript:submit();" onFocus="this.blur();" value="Rechercher">
</div>
</form>
et l'autre page
<?php
$path = NULL;
if(empty($bdd)) {
session_start();
include("../conndb.php");
include('variables.php');
$path = '../';
}
$parPage = 6;
$du = !empty($_REQUEST['du']) ? $_REQUEST['du'] : NULL;
$au = !empty($_REQUEST['au']) ? $_REQUEST['au'] : NULL;
$page = !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1;
if(!empty($_REQUEST['datetimepicker'])) {
$date = DateTime::createFromFormat('d/m/Y', $_REQUEST['datetimepicker']);
$du = $au = $date->format('Y-m-d');
}
// On récupere le jour de la semaine en fonction de la date
$jourRecherche = date('N', strtotime($du));
$_REQUEST['departement'] = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : NULL;
$_REQUEST['departement'] = !empty($_SESSION['membre']) && empty($_REQUEST['departement']) && empty($_REQUEST['region']) ? $_SESSION['membre']['id_departements'] :$_REQUEST['departement'];
$sql = "SELECT * FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1";
$sql .= !empty($_REQUEST['region']) ? ' AND `regions`.`url` = "'.$_REQUEST['region'].'"' : NULL;
$sql .= !empty($_REQUEST['departement']) ? ' AND `loisirs`.`id_departements` = '.$_REQUEST['departement'] : NULL;
$sql .= !empty($_REQUEST['loisir']) ? ' AND `loisirs`.`id_type_loisirs` = "'.$_REQUEST['loisir'].'"' : NULL;
// Recherche par date
if(!empty($du)) {
}
$sql .= !empty($du) && !empty($au) ? " AND (DATE_FORMAT(`loisirs`.`date_debut_sortie`, '%Y-%m-%d') <= '".$du."' AND DATE_FORMAT(`loisirs`.`date_fin_sortie`, '%Y-%m-%d') >= '".$au."')" : NULL;
// Fin de la recherche par date
// moteur de recherche
if(isset($_POST['requete']) && $_POST['requete'] != NULL) // on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{
$requete = htmlspecialchars($_POST['requete']);
$sql = "SELECT * FROM loisirs WHERE titre LIKE '%$requete%' OR city LIKE '%$requete%' OR postcode LIKE '%$requete%' ";
// Moteur de recherche
}
//fin du moteur de recherche
$req = $bdd->query($sql);
// on affiche le nombre de sorties en fonction des filtres
$nb = $req->rowCount();
if ($req->fetchColumn() > 0) {
// on affiche le h1 en fonction de la region
$region_id = !empty($_REQUEST['region']) ? regionByUrl($_REQUEST['region']) : NULL;
$region_id = !empty($_SESSION['membre']['id_region']) && empty($_REQUEST['region']) ? $_SESSION['membre']['id_region'] : $region_id;
$h1 = $nb.' annonces pour savoir ou sortir ';
$h1 .= !empty($requete) ? '<a href="toutes-les-sorties-'.$requete.'.html"> '.$requete. '<a>': NULL; // Le type de sortie
$h1 .= !empty($_REQUEST['loisir']) ? ' - '. $aLoisirs[$_REQUEST['loisir']]: NULL; // Le type de sortie
$h1 .= !empty($region_id) ? ' - '. $aRegion[$region_id] : NULL; // La région
$h1 .= !empty($_REQUEST['departement']) ? ' <a href="toutes-les-sorties-du-departement-'.$_REQUEST['departement'].'.html"> '.$depts[$_REQUEST['departement']].'</a>': NULL; // Le département
$h1 .= !empty($du) ? ", le <strong>" .date('d/m/Y', strtotime($du))."</strong>" : NULL; // La date choisis selon les filtres
echo '<h1><i class="fa fa-chevron-right opt_green"></i><strong> '.$h1.'</strong></h1>'."\n";
}
Le js. ( Ca peut aider

)
// 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 datetimepicker2 = $('#datetimepicker2').val();
$.ajax({
type: 'GET',
url: 'include/rechercheAjax.php',
data: 'du='+du+'&au='+au+'&page='+page+'&departement='+dep+'®ion='+region+'&loisir='+loisir+'&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);
});
}
});
}
Salut à tous.
J'ai un formulaire qui comporte 2 liste déroulante qui marche très bien.
J'ai rajouté à ce formulaire un champ de recherche afin de permettre à l'utilisateur de rechercher par ville et celui ci ne fonctionne pas.
Script. ( ma 1ère page)
[php]<form id="choice" name="liste deroulante" method="GET" action="">
<!-- Select des departements -->
<div class="col-md-3 col-sm-3 max">
<?php // Gestion des variables des départements
$region = !empty($_SESSION['membre']['id_region']) ? simplification($aRegion[$_SESSION['membre']['id_region']]) :NULL;
$region = !empty($_REQUEST['region']) ? $_REQUEST['region'] : $region; /* Si la region est renseigné dans l'url il est prioritaire */
$departement = !empty($_SESSION['membre']['id_departements']) ? $_SESSION['membre']['id_departements'] : NULL;
$departement = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : $departement; /* Si le departemebt est renseigné dans l'url il est prioritaire */
?>
<select name="departement" id="departement" class="selectpicker max" data-region="<?php echo $region; ?>">
<option value="">Votre département</option>
<?php echo aRegionDepartement($region, $departement); ?>
</select>
</div>
<!-- Select des loisirs -->
<div class="col-md-3 col-sm-3 max">
<select name="loisir" id="loisir" class="selectpicker max">
<option value=""> Toutes les sorties</option>
<?php
asort($aLoisirs);
foreach($aLoisirs as $k => $v) {
$selected = !empty($_REQUEST['loisir']) && ($_REQUEST['loisir'] == $k) ? ' selected="selected"' : NULL;
echo '<option value="'.$k.'"'.$selected.'>'.$v.'</option>'."\n";
} ?>
</select>
<?php echo !empty($region) ? '<input type="hidden" name="region" value="'.$region.'" />' : NULL; ?>
</div>
<!-- Moteur de recherche -->
<input class="form-control" placeholder="code postal, ville, nom " name="requete" id="requete" type="search">
<!-- Date Picker Search -->
<div class="col-md-3 col-sm-3 max">
<div class="input-group input-group">
<span class="input-group-addon"><i class="fa fa-calendar-o"></i></span>
<input id="datetimepicker2" name="datetimepicker" placeholder="Recherche par date" type="text" readonly value="<?php echo !empty($_REQUEST['datetimepicker']) ? $_REQUEST['datetimepicker'] : NULL; ?>">
</div>
</div>
<script type="text/javascript">
jQuery('#datetimepicker2').datetimepicker({
datepicker:true,
timepicker:false,
closeOnDateSelect:true,
format:'d/m/Y'
});
</script>
<!-- End Date Picker Search -->
<div class="col-md-3 col-sm-3 max">
<input type="button" autofocus id="btn_select" class="find" onclick="javascript:submit();" onFocus="this.blur();" value="Rechercher">
</div>
</form>[/php]
[b]et l'autre page [/b]
[php]<?php
$path = NULL;
if(empty($bdd)) {
session_start();
include("../conndb.php");
include('variables.php');
$path = '../';
}
$parPage = 6;
$du = !empty($_REQUEST['du']) ? $_REQUEST['du'] : NULL;
$au = !empty($_REQUEST['au']) ? $_REQUEST['au'] : NULL;
$page = !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1;
if(!empty($_REQUEST['datetimepicker'])) {
$date = DateTime::createFromFormat('d/m/Y', $_REQUEST['datetimepicker']);
$du = $au = $date->format('Y-m-d');
}
// On récupere le jour de la semaine en fonction de la date
$jourRecherche = date('N', strtotime($du));
$_REQUEST['departement'] = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : NULL;
$_REQUEST['departement'] = !empty($_SESSION['membre']) && empty($_REQUEST['departement']) && empty($_REQUEST['region']) ? $_SESSION['membre']['id_departements'] :$_REQUEST['departement'];
$sql = "SELECT * FROM `loisirs` JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1";
$sql .= !empty($_REQUEST['region']) ? ' AND `regions`.`url` = "'.$_REQUEST['region'].'"' : NULL;
$sql .= !empty($_REQUEST['departement']) ? ' AND `loisirs`.`id_departements` = '.$_REQUEST['departement'] : NULL;
$sql .= !empty($_REQUEST['loisir']) ? ' AND `loisirs`.`id_type_loisirs` = "'.$_REQUEST['loisir'].'"' : NULL;
// Recherche par date
if(!empty($du)) {
}
$sql .= !empty($du) && !empty($au) ? " AND (DATE_FORMAT(`loisirs`.`date_debut_sortie`, '%Y-%m-%d') <= '".$du."' AND DATE_FORMAT(`loisirs`.`date_fin_sortie`, '%Y-%m-%d') >= '".$au."')" : NULL;
// Fin de la recherche par date
// moteur de recherche
if(isset($_POST['requete']) && $_POST['requete'] != NULL) // on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{
$requete = htmlspecialchars($_POST['requete']);
$sql = "SELECT * FROM loisirs WHERE titre LIKE '%$requete%' OR city LIKE '%$requete%' OR postcode LIKE '%$requete%' ";
// Moteur de recherche
}
//fin du moteur de recherche
$req = $bdd->query($sql);
// on affiche le nombre de sorties en fonction des filtres
$nb = $req->rowCount();
if ($req->fetchColumn() > 0) {
// on affiche le h1 en fonction de la region
$region_id = !empty($_REQUEST['region']) ? regionByUrl($_REQUEST['region']) : NULL;
$region_id = !empty($_SESSION['membre']['id_region']) && empty($_REQUEST['region']) ? $_SESSION['membre']['id_region'] : $region_id;
$h1 = $nb.' annonces pour savoir ou sortir ';
$h1 .= !empty($requete) ? '<a href="toutes-les-sorties-'.$requete.'.html"> '.$requete. '<a>': NULL; // Le type de sortie
$h1 .= !empty($_REQUEST['loisir']) ? ' - '. $aLoisirs[$_REQUEST['loisir']]: NULL; // Le type de sortie
$h1 .= !empty($region_id) ? ' - '. $aRegion[$region_id] : NULL; // La région
$h1 .= !empty($_REQUEST['departement']) ? ' <a href="toutes-les-sorties-du-departement-'.$_REQUEST['departement'].'.html"> '.$depts[$_REQUEST['departement']].'</a>': NULL; // Le département
$h1 .= !empty($du) ? ", le <strong>" .date('d/m/Y', strtotime($du))."</strong>" : NULL; // La date choisis selon les filtres
echo '<h1><i class="fa fa-chevron-right opt_green"></i><strong> '.$h1.'</strong></h1>'."\n";
}[/php]
Le js. ( Ca peut aider :) )
[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 datetimepicker2 = $('#datetimepicker2').val();
$.ajax({
type: 'GET',
url: 'include/rechercheAjax.php',
data: 'du='+du+'&au='+au+'&page='+page+'&departement='+dep+'®ion='+region+'&loisir='+loisir+'&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]