Page 1 sur 1

url rewriting

Posté : 06 mars 2016, 21:51
par yoann38
Salut à tous.
Bon j'ai changé un peu le tt pour que ca soit plus simple
Donc tt marche maintenant je cherche juste à corriger mes urls pour qu'elle soit plus jolies.
Actuellement mes urls ressemble à :
http://monsite.fr/sortie.php?ville=gren ... imepicker=
Je cherche à avoir :
http://monsite.fr/sortie.php/grenoble/10/ par exemple:

Mon code:
formulaire de recherche:
<form title="Formulaire de recherche sortie" id="choice" name="liste deroulante" method="GET" action="/sortie.php">

<div class="col-md-12 col-sm-12 max">
	<input title="Recherche par ville" class="form-control" placeholder="Recherche par ville" value="<?php echo  !empty($_REQUEST['ville']) ? $_REQUEST['ville'] : NULL;?>" name="ville" id="ville" type="search">
</div>   
           
<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 title="choisir un département" 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>  

<div class="col-md-3 col-sm-3 max">
<select title="choisir une sortie" 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>
                    
<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 title="Recherche de sortie par date "id="datetimepicker2" name="datetimepicker" placeholder="Recherche par date" type="text" readonly value="<?php echo !empty($_REQUEST['datetimepicker']) ? $_REQUEST['datetimepicker'] : NULL; ?>">
    </div>    
</div>
     
<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>


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+'&region='+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 les requetes:
$_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;

Re: url rewriting

Posté : 06 mars 2016, 22:47
par @rthur
Arrête de balancer tout ton code à chaque fois, c'est contre-productif.
Dis nous le problème que tu rencontres, ce que tu as essayé et soit le message d'erreur rencontré, soit là où tu bloques.
Si c'est lié à un problème de code, ne cite que la partie problématique.

Re: url rewriting

Posté : 07 mars 2016, 00:06
par yoann38
Le problème est assez simple je cherche à transformez mes urls
http://monsite.fr/sortie.php?ville=&dep ... imepicker=
sous la forme
http://monsite.fr/sortie.php/grenoble

par exemple si la ville est remplie via mon formulaire est idem pour loisir et département

Re: url rewriting

Posté : 07 mars 2016, 01:39
par @rthur
Et donc quel est le problème ?
Qu'as tu essayé ? Qu'est-ce qui ne marche pas ? Où bloques-tu ? Qu'as tu comme message d'erreur ?

Re: url rewriting

Posté : 07 mars 2016, 17:46
par yoann38
J'aimerais un bon tuto ou qu'on mexplique dans les grandes lignes comment transformer tous les parametres de façon à avoir une url :
monsite.fr/isere/grenoble.html par exemple

Re: url rewriting

Posté : 07 mars 2016, 21:01
par @rthur
Voici un tuto complet et bien fait : http://www.webrankinfo.com/dossiers/tec ... -rewriting

Re: url rewriting

Posté : 07 mars 2016, 21:42
par yoann38
Re,
Donc j'ai put avancer et créer mes urls comme je le souhaitai ca marche apparament.
J'ai donc corrigé un peu mon code que coté js et au niveau formulaire avec des $_POST
Tout marche sauf que j'aimerais que en gros quand l'utilisateur clique sur le bouton rechercher du formulaire il soit renvoyé directement sur la page au lien de généré le lien.
Je joins le code quand même en cas avec les modif.
Merci encore:

Donc mon htaccess:
RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+)-du-departement-([0-9]{2}).html$ sortie.php?region=$1&departement=$2
RewriteRule ^toutes-les-sorties-en-region-([A-Za-z0-9_-]+).html$ sortie.php?region=$1
RewriteRule ^toutes-les-sorties-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?ville=$1
RewriteRule ^toutes-les-sorties-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?ville=$1


#--URl avec nom de la ville + le type
RewriteRule ^toutes-les-sorties-([A-Za-z0-9_-]+)-de-la-ville-de-([a-z0-9-]+).html$ sortie.php?loisir=$1&ville=$2

#--URl avec nom le type + le numéro de page
RewriteRule ^toutes-les-sorties-([A-Za-z0-9_-]+)-page-([0-9]+).html$ sortie.php?loisir=$1&page=$2

#--URl avec nom le type + le département
RewriteRule ^toutes-les-sorties-([A-Za-z0-9_-]+)-du-departement-([0-9]{2}).html$ sortie.php?loisir=$1&departement=$2

#--URl avec nom le departement + la page
RewriteRule ^toutes-les-sorties-du-departement-([0-9]{2}).html$ sortie.php?departement=$1

#-- URl avec nom le departement + la page
RewriteRule ^toutes-les-sorties-de-([a-z0-9-]+).html$ sortie.php?manufacturer=$1

RewriteRule ^toutes-les-sorties.html sortie.php
#RewriteRule ^([A-Za-z0-9_-]+).html$ $1.php

Mon form:
<form id="choice" name="liste deroulante" method="POST" >

<div class="col-md-12 col-sm-12 max">
	<input title="Recherche par ville" class="form-control" placeholder="Recherche par ville" value="<?php echo  !empty($_REQUEST['ville']) ? $_REQUEST['ville'] : NULL;?>" name="ville" id="ville" type="search">
</div>   
           
<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 title="choisir un département" 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>  

<div class="col-md-3 col-sm-3 max">
<select title="choisir une sortie" 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>
                    
<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 title="Recherche de sortie par date "id="datetimepicker2" name="datetimepicker" placeholder="Recherche par date" type="text" readonly value="<?php echo !empty($_REQUEST['datetimepicker']) ? $_REQUEST['datetimepicker'] : NULL; ?>">
    </div>    
</div>
     
<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>
Mon 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: 'POST',
        url: 'include/rechercheAjax.php',
        data: 'du='+du+'&au='+au+'&page='+page+'&departement='+dep+'&region='+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);
            });
        }
    });
}

Re: url rewriting

Posté : 07 mars 2016, 23:13
par @rthur
Arrête de balancer tout ton code !!!
Tout marche sauf que j'aimerais que en gros quand l'utilisateur clique sur le bouton rechercher du formulaire il soit renvoyé directement sur la page au lien de généré le lien.
Très bien, qu'as tu essayé ? où bloques-tu ?