[RESOLU] Problème d'éxécution sur moteur de recherche

Mammouth du PHP | 643 Messages

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+'&region='+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);
            });
        }
    });
}

Mammouth du PHP | 2703 Messages

02 déc. 2015, 22:23

formulaire en get
ajax en get
et test si le champ recherche est rempli en post ...

Mammouth du PHP | 643 Messages

02 déc. 2015, 23:10

.....
En mettant un GET de partout c'est surement mieux.

Du coup ca marche.
Par contre j'essaie d'afficher du coup le resultat de $requete mais ça ne ressort rien et pas de message d'erreur....

J'ai réalisé ceci pour mon title:
<?php

 	 $path = NULL;
        if(empty($bdd)) {
            session_start();
            include("conndb.php");
             include("include/variables.php");
            $path = '../';
        }
		
	// Title
	$region_id = !empty($_REQUEST['region']) ? regionByUrl($_REQUEST['region']) : NULL;
	$titre = !empty($_REQUEST['region']) ? " Sortir en ".$aRegion[$region_id] : 'Tous les bons plans pour sortir'.$aDepartement[$_REQUEST['departement']]; // Sortir en "nom de la région"
	$titre .= !empty($_REQUEST['loisir']) ? " - ".$aLoisirs[$_REQUEST['loisir']] : NULL; // Choix du type d'évènement
	$titre .= !empty($_REQUEST['departement']) ? ' en '.$depts[$_REQUEST['departement']] : NULL; // Le département
	$titre .= !empty($requete) ? ' test '.$requete : NULL; // Le département

	// Keyword
	function length($var) { return (strlen($var) > 3); }
	$explode = explode(' ', $titre);
	$array_filter = array_filter($explode, 'length');
	$keyword = implode(', ', $array_filter);
	
	
	// Meta Description
	$region_id = !empty($_REQUEST['region']) ? regionByUrl($_REQUEST['region']) : NULL;
	$meta_desc = !empty($_REQUEST['region']) ? "sortir en ".$aRegion[$region_id] : 'Retrouvez les bons plan pour savoir ou sortir';
	$meta_desc .= !empty($_REQUEST['departement']) ? ' en '.$depts[$_REQUEST['departement']] : NULL; // Le département
	$meta_desc .= !empty($_REQUEST['loisir']) ? " en ".$aLoisirs[$_REQUEST['loisir']] : NULL;
	
	
	
	
	// Nombre d'annonce selon la région
	$count_annonce = "SELECT * FROM `loisirs`  JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1";
  	$count_annonce .= !empty($_REQUEST['region']) ? ' AND `regions`.`url` = "'.$_REQUEST['region'].'"' : NULL;
    $count_annonce .= !empty($_REQUEST['departement']) ? ' AND `loisirs`.`id_departements` = '.$_REQUEST['departement'] : NULL;
    $count_annonce .= !empty($_REQUEST['loisir']) ? ' AND `loisirs`.`id_type_loisirs` = "'.$_REQUEST['loisir'].'"' : NULL;
	
	$req = $bdd->query($count_annonce);
	$nb = $req->rowCount();
	$result = '. Actuellement près de  '.$nb.' annonces pour '.$meta_desc.', vide-grenier, brocante, exposition, excursion, sport, cinéma, concert ....';

    ?>
    
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="Keywords" content="<?php echo $keyword;?>, sorties, sortie, loisir, loisirs, activité, activités, ou sortir">
    <meta name="description" content="<?php echo $meta_desc;?><?php echo $result;?>">
    <meta name="robots" content="index, follow">
    <title><?php echo $titre ; ?> - lasortie.fr</title>
    
   
    
    <?php
    include("include/css.php");
	include("include/css_sortie.php");
	?>
    <link rel="stylesheet" href="css/jquery.datetimepicker.css">
    <link href='http://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'> 
    </head>
    
    
    
    <?php 
        include("include/header.php");
        include ('include/liste_deroulante.php');
    ?>

// Ca continue ....
Partie title:
// Title
$region_id = !empty($_REQUEST['region']) ? regionByUrl($_REQUEST['region']) : NULL;
$titre = !empty($_REQUEST['region']) ? " Sortir en ".$aRegion[$region_id] : 'Tous les bons plans pour sortir'.$aDepartement[$_REQUEST['departement']]; // Sortir en "nom de la région"
$titre .= !empty($_REQUEST['loisir']) ? " - ".$aLoisirs[$_REQUEST['loisir']] : NULL; // Choix du type d'évènement
$titre .= !empty($_REQUEST['departement']) ? ' en '.$depts[$_REQUEST['departement']] : NULL; // Le département
$titre .= !empty($requete) ? ' test '.$requete : NULL; // Le département


Il est important que je récupére $requete pour le référencement de ma page ...

Mammouth du PHP | 643 Messages

03 déc. 2015, 17:22

J'ai résolu mon problème en faisant un simple $_GET['requete'']
Si ça peut aider ;)