url rewriting

Mammouth du PHP | 643 Messages

06 mars 2016, 21:51

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;

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

06 mars 2016, 22:47

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.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

07 mars 2016, 00:06

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

07 mars 2016, 01:39

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 ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

07 mars 2016, 17:46

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

07 mars 2016, 21:01

Voici un tuto complet et bien fait : http://www.webrankinfo.com/dossiers/tec ... -rewriting
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 643 Messages

07 mars 2016, 21:42

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);
            });
        }
    });
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

07 mars 2016, 23:13

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 ?
Quand tout le reste a échoué, lisez le mode d'emploi...