url rewriting

WRInaute discret
Bonjour,j'ai un petit probleme de url rewriting que je n'arrive pas à résoudre, alors j'ai tout repris depuis le début.
j'ai 3 pages php:

1: rotisserie-livraison-rotis.php
2: livraison-rotis.php
3: rotisserie.php

la premiere liant vers la deuxieme. la deuxieme vers la troisieme.

1:la premiere enumere la liste des départements
2:la deuxieme enumere la liste des villes du département ou se trouvent les rotisseries
3:la troisieme enumere les rotisseries de la ville, avec adresses...

les codes correspondants a chaque page sont les suivants:

1: rotisserie-livraison-rotis.php

Code:
<?php 
$sql = ("SELECT DISTINCT departement FROM livraison_rotis ORDER BY departement"); 
$result = mysql_query($sql); 

echo '<ul>'; 

while ($row = mysql_fetch_assoc($result)) { 
echo '<li><a href="livraison-rotis.php?departement='.$row['departement'].'">'.$row['departement'].'</li>'; 
} 

echo '</ul>'; 
?>

2: livraison-rotis.php

Code:
<?php 
$departement = $_GET['departement'];

$sql = ("SELECT DISTINCT ville FROM livraison_rotis WHERE departement='$departement' ORDER BY ville"); 
$result = mysql_query($sql); 

echo '<ul>'; 

while ($row = mysql_fetch_assoc($result)) { 
echo '<li><a href="rotisserie.php?ville='.$row['ville'].'">'.$row['ville'].'</li>'; 
} 

echo '</ul>'; 
?>
et
Code:
<?php echo $_GET['departement']; ?>

3: rotisserie.php

Code:
<?php 
$ville = $_GET['ville']; 

$sql = ("SELECT nom,adresse,code_postal,ville,ville,tel,fax,mail FROM livraison_rotis WHERE ville='$ville' ORDER BY nom"); 
$result = mysql_query($sql); 

while ($row = mysql_fetch_assoc($result)) { 
echo '<ul>'; 
echo '<li>'.$row['nom'].'</li>'; 
echo '<li>'.$row['adresse'].'</li>';
echo '<li>'.$row['code_postal'].'</li>';
echo '<li>'.$row['ville'].'</li>'; 
echo '<li>'.$row['tel'].'</li>'; 
echo '<li>'.$row['fax'].'</li>'; 
echo '<li>'.$row['mail'].'</li>';
echo '</ul>'; 
}
?>
et
Code:
<?php echo $_GET['ville']; ?>

tout marche nikel, mes départements apparaissent, mes villes, mes adresses, selont les pages.

apres, pour l'url rewriting, j'ai un soucis, plus rien ne marche.

je voudrais que la page 2: livraison-rotis.php s'affiche de cette maniere:

Code:
/livraison-rotis-BOUCHES-DU-RHONE.html

que la page 3: rotisserie.php s'affiche aussi de cette maniere
Code:
/rotisserie-JUAN-LES-PINS.html

au lieu de
Code:
/livraison-rotis.php?departement=BOUCHES%20DU%20RHONE

et
Code:
/rotisserie.php?ville=JUAN%20LES%20PINS

Si quelqu'un pouvait me donner un coup de main, ça fait une bonne semaine que je galere comme un ane.

j'ai un .htaccess ci dessous
Code:
RewriteEngine on 
RewriteRule livraison-rotis-(.*)\.html$ /livraison-rotis.php?departement=$1 [L]
RewriteRule rotisserie-(.*)\.html$ /rotisserie.php?ville=$2 [L]


j'ai changé le code de la premiere page comme ci dessous:
Code:
<?php 
$sql = ("SELECT DISTINCT departement FROM livraison_rotis ORDER BY departement"); 
$result = mysql_query($sql); 

echo '<ul>'; 

while ($row = mysql_fetch_assoc($result)) { 
echo '<li><a href="livraison-rotis-'.preg_replace("/ /","-",$row['departement']).'.html">'.$row['departement'].'</li>';
} 

echo '</ul>'; 
?>
et de la deuxieme page comme ça:
Code:
<?php 
$departement = $_GET['departement'];

$sql = ("SELECT DISTINCT ville FROM livraison_rotis WHERE departement='$departement' ORDER BY ville"); 
$result = mysql_query($sql); 

echo '<ul>'; 

while ($row = mysql_fetch_assoc($result)) { 
echo '<li><a href="rotisserie-'.preg_replace("/ /","-",$row['ville']).'.html">'.$row['ville'].'</li>';
 
} 

echo '</ul>'; 
?>

avec des départements ou des villes pas composés, du style Paris, Marseille, Nice, tout est nikel, l'url, les noms des villes et des départements, mais pour des departements et villes composés de plusieurs mots, aix en provence par exemple, l'url s'affiche correctement, mais le nom de la ville ne s'affiche pas sur la page,et les liens vers les villes de ce département ne s'affichent pas non plus... mais par contre, sur la page rotisserie.php, les adresses, num telephone, fax, s'affichent correctement, mais sans le nom de la ville qui ne veut pas s'afficher.

pourquoi, je ne comprends pas.

Si quelqu'un navait une autre idée pour .htaccess ou pour mon code php, je ne m'en sortirais pas tout seul, c'est sur!

Un grand merci à qui m'aidera et me sauvera de mon stress :)


Patrick
 
WRInaute passionné
J'ai malheureusement pas le courage de lire tout ton post mais j'ai remarqué ca : <?php echo $_GET['departement']; ?> et ca <?php echo $_GET['ville']; ?>

Tu devrais quand même filtrer ce qui arrive en GET avant de l'afficher sur une page sauf si tu souhaites que ton site devienne le paradis du xss ,de l'injection de liens et des hackers...

Aussi tu utilises ces varisble non filtré dans ta requête sql :
$departement = $_GET['departement'];

$sql = ("SELECT DISTINCT ville FROM livraison_rotis WHERE departement='$departement' ORDER BY ville");

C'est idéal pour quelqu'un qui voudrais te faire une injection sql ou pire effacer ta bdd...
 
WRInaute impliqué
Je te donne la démarche pour ta deuxième page.

Si tu veux que l'adresse soit livraison-rotis-BOUCHES-DU-RHONE.html au lieu de livraison-rotis.php?departement=BOUCHES-DU-RHONE

il faut faire de l'url rewriting effectivement, et changer les liens que tu utilise.

Pour la récriture :

Code:
RewriteEngine On

RewriteRule livraison-rotis-(.*)\.html livraison-rotis.php?departement=$1

Ensuite dans le code de la page rotisserie-livraison-rotis.php il faut que tu remplace la ligne

Code:
echo '<li><a href="livraison-rotis.php?departement='.$row['departement'].'">'.$row['departement'].'</li>';

par

Code:
echo '<li><a href="livraison-rotis-'.$row['departement'].'.html">'.$row['departement'].'</li>';

En clair, n'utilise que les adresses html.
 
WRInaute discret
Merci de vos reponses, en fait, avec le nouveau .htaccess et le changement de code php, ça ne me change pas les espaces en - contrairement à mon ancien code donc ça me fait un truc du genre %s.
et concernant l'histoire de $get, je ne savais pas que ça pouvait etre dangeureux comme ça, mais de toute maniere, je suis incapable de changer ça! je suis trop nul ;)

Patrick

Bon, ça y est, c'est résolu, je m'étais embobiné au niveau des codes

Code:
$ville = $_GET['ville']; 

$sql = ("SELECT nom,adresse,code_postal,ville,ville,tel,fax,mail FROM livraison_rotis WHERE ville='$ville' ORDER BY nom");

j'avais mélangé les variables villes avec les départements, un petit méli mélo quoi,
Merci de vos aides réspectives.

il y a quand meme cette histoire de bdd qui serait piratable par le biais de $_GET; si quelqu'un avait plus de renseignements à ce sujet...

Encore une fois merci

Patrick
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut