|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Mer Mar 19, 2008 14:16 Sujet du message: Comment transformer une url ? |
|
|
Bonjour,
Je ne comprend pas comment transformer une url du type : "page-site.php?id=2&champ=REFERENCEMENT" en "le-titre-de-la-fiche.php" .
Je transmet une variable d'un page A vers page-site.php de cette façon:
| Code: |
| echo '<a href="page-site.php?id='.$id.'&champ='.$nomduchamp.'" >Fiche individuelle</a><br/>'; |
Dans page-site.php je recupère les info transmises par $_GET soit $id et $nomduchamp:
| Code: |
<?
$idtransmit=$_GET["id"];
$nomduchamp=$_GET["champ"];
?>
|
Ensuite je me connecte à ma BD et je fais ma requète avec la boucle:
| Code: |
.....
$query1 = mysql_query("SELECT * FROM $nomduchamp WHERE id = $idtransmit");
...
ma boucle
etc...
|
Ma base est constitué de cette façon:
| Code: |
id | titre | description | url | BLABLA(qui en fait correspond à $nomduchamp)
1 | ici un titre | ici une description | ici une url | BLABLA
etc..
|
Donc, comment procéder pour incorporer le "titre" dans l'url?
Note: je suis débutant en php...
Merci |
|
| |
|
 |
audit.referencement WRInaute occasionnel

Inscrit le: 16 Fév 2008 Messages: 121
|
Posté le : Mer Mar 19, 2008 14:36 Sujet du message: Comment transformer une url ? |
|
|
| Il faut que tu utilises la technique de l'URL rewriting, tu trouveras plein de choses à ce sujet sur le site et le forum. |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1623 Localisation: urlrewriting.fr
|
Posté le : Mer Mar 19, 2008 14:42 Sujet du message: Comment transformer une url ? |
|
|
si tu ne veux pas créer autant de fichier php que de titre, il faut ajouter une réécriture d'url dans le fichier .htaccess
Pour mettre le titre dans l'url, il faut avoir une table de correspondance avec comme clé le titre et les zones id et champ.
la règle .htaccess qui correspond est :
| Code: |
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.php$ /page-site.php?titre=$1 [L] |
en début de page-site.php il faut lire la table avec comme clé le titre pour récupérer l'id et le champ |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Mer Mar 19, 2008 15:42 Sujet du message: Comment transformer une url ? |
|
|
Oui, l'url rewriting, j'ai déjà regardé de ce coté et j'avoue ne pas y comprendre grand chose!
Je pensais qu'il fallait en plus du rewriting une fonction pour ce faire.
webmasterlamogere, je suis un peut largué quand tu dis :"avoir une table de correspondance avec comme clé le titre et les zones id et champ".
Je vais essayer d'expliquer au mieux ma façon de procéder:
1-Je créé des tables automatiquement à l'aide d'un formulaire contenant id, titre,description,url,champ (champ correspond au nom de la table créé par formulaire soit $champ).
Quand une table est créé, j'insère en même temps et automatiquement dans une autre table nommé "tous_les_champs" comprenant "id" et "titre" ..id en auto_increment et dans "titre" la valeur de "champ" (soit $champ).
Donc:
-chaque base créée porte le nom donné par formulaire (soit $champ).
-le champ "champ" de chaque base contient le nom de la base (soit $champ).
-la base "tous_les_champs" contient tout les nom de table créé (soit $champ ).
Vous suivez ... ^^.
Ensuite, je fais comme dans mon code du 1er poste :
| Code: |
| echo '<a href="page-site.php?id='.$id.'&champ='.$nomduchamp.'" >Fiche individuelle</a><br/>'; |
etc..., etc..
Donc à la finale, il me manque quoi et ou pour pouvoir utiliser l'url rewriting afin d'avoir le titre de chaque fiche dans l'url?
Note2: J'essaye d'apprendre à coder php/mysql, soyez indulgent..
Merci |
|
| |
|
 |
Bacteries WRInaute accro

Inscrit le: 27 Mai 2004 Messages: 1048 Localisation: France - Nantes
|
Posté le : Mer Mar 19, 2008 15:57 Sujet du message: Comment transformer une url ? |
|
|
Ton lien tu le construit différement :
| Code: |
echo '<a href="page-site-'.$id.'-'.$nomduchamp.'.php >Fiche individuelle</a><br/>';
|
Et ensuite ta règle de réecriture d'URL qui va prendre les URL commençant par page-site-*-*.php pour les transformer en page-site?id=123&champ=NomDuChamp.
Ainsi l'utilisateur (ou le robot Google...) ne voit que l'URL simplifiée mais ton serveur a lui toujours la même chose à traiter. |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Mer Mar 19, 2008 16:16 Sujet du message: Comment transformer une url ? |
|
|
Merci Bacteries,
Cependant aurais tu l'exemple des règles de rewriting correspondant à la forme de l'url que tu m'as donné ?
...Je vais allez lire les tuto la dessus ^^! |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1623 Localisation: urlrewriting.fr
|
Posté le : Mer Mar 19, 2008 16:23 Sujet du message: Comment transformer une url ? |
|
|
Si tu supprimes tes paramètres de l'url, il faut bien un moyen de les retrouver à partir du titre. il faut donc avoir un index unique qui fait correspondre le titre avec l'id et le champ. Il semble que ce soit la table tous_les_champs qui fasse ce lien.
| Code: |
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.php$ /page-site.php?titre=$1 [L] |
Une petite explication de la règle de réécriture ci-dessus : la première ligne indique que tu veux utiliser le moteur de réécriture apache.
les deux lignes suivantes indique que tu ne veux pas que la règle ne soit appliquée à des répertoires ou des fichiers existants (la règle ne doit s'appliquer que si l'url n'existe pas)
la dernière permet d'afficher le contenu de la page /page-site.php?titre=n-importe-quel-titre si l'url demandée est sous la forme http://www.example.com/n-importe-quel-titre.php et cela de manière invisible sur ton navigateur. |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Mer Mar 19, 2008 17:41 Sujet du message: Comment transformer une url ? |
|
|
Ok, merci webmasterlamogere.
Donc en faisant:
| Code: |
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.php$ /page-site.php?titre=$1 [L] |
Pour une url d'origine:
| Code: |
| http://monsite.com/page-site.php?id=3&champ=TOTO |
Sa me donne une url accessible du genre :
| Code: |
| http://monsite.com/3.php |
Le soucis est que la page est vide.
J'ai donc changé la ligne :
| Code: |
| RewriteRule ^(.*)\.php$ /page-site.php?titre=$1 [L] |
par:
| Code: |
| RewriteRule ^(.*)-(.*)\.php$ /page-site.php?titre=$1&champ=$2 [L] |
Ce qui me donne maintenant une url accessible du genre :
| Code: |
| http://monsite.com/3-TOTO.php |
Mais même punition, la page existe mais reste vide ...j'y comprend kedal !!  |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1623 Localisation: urlrewriting.fr
|
Posté le : Mer Mar 19, 2008 18:04 Sujet du message: Comment transformer une url ? |
|
|
j'ai compris que tu veux remplacer l'url :
| Code: |
| http://monsite.com/page-site.php?id=3&champ=TOTO |
par l'url :
| Code: |
| http://monsite.com/titre-de-la-page.php |
sachant qu'une table contient une correspondance entre l'id "3" + le champ "TOTO" et un titre "titre-de-la-page"
par contre si tu veux juste avoir une url :
| Code: |
| http://monsite.com/3-TOTO.php |
il te suffit de mettre la règle :
| Code: |
| RewriteRule ^([0-9]*)-(.*)\.php$ /page-site.php?id=$1&champ=$2 [L] |
|
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Mer Mar 19, 2008 18:42 Sujet du message: Comment transformer une url ? |
|
|
Merci webmasterlamogere .
Je continue dans ma lancé.
Vue que l'url de la page ne me convient pas étant donné que je récupère l'id et le nom du champ, je me suis dit que j'allais plutôt mettre le titre dans l'url.
J'ai donc ajouté $titre à mon url:
| Code: |
| http://monsite.com/page-site.php?id=3&champ=TOTO&titre=montitre |
Je me confronte à 2 problème:
1-Si mon titre comporte des espaces et des accents je me trouve alors avec une url du genre:
| Code: |
| http://monsite.com/3-TOTO-Cr%C3%A9er%20un%20blog.php |
Comment fait ton pour remplacer les espaces par des (-) et les caractères accentués (éàèç) par (eaec)?
2-Comment afficher dans l'url rewrité juste le titre pour obtenir une url du style:
| Code: |
| http://monsite.com/Creer-un-blog.php |
Bon, j'en demande peut être beaucoup mais j'essaye de comprendre.
Merci |
|
| |
|
 |
Bacteries WRInaute accro

Inscrit le: 27 Mai 2004 Messages: 1048 Localisation: France - Nantes
|
Posté le : Mer Mar 19, 2008 19:03 Sujet du message: Comment transformer une url ? |
|
|
Alors : vu que tu as l'ID inutile de mettre dans ?id=3&champ=TOTO&titre=montitre le titre (je suppose que tu ne t'en sert pas pour retrouver ton contenu).
A partir de là libre à toi de transformer ton titre, soit simplement avec la fonction urlencode() soit de façon plus avancée. Pour avoir qqchose de bien.
Ensuite peut être est-il préférable pour toi de faire une url du type :
|
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1623 Localisation: urlrewriting.fr
|
Posté le : Mer Mar 19, 2008 19:10 Sujet du message: Comment transformer une url ? |
|
|
Pour supprimer les caractères spéciaux il faut utiliser une petite fonction comme celle ci :
http://www.webrankinfo.com/forums/viewtopic_57538.htm#552814
pour n'avoir que le titre dans l'url il faut faire comme je t'ai dit là : http://www.webrankinfo.com/forums/viewtopic_90356.htm#869589
la seule difficulté c'est d'ajouter au début de page-site.php le code qui récupère l'id et le champ a partir du titre (sans les caractères spéciaux). c'est pour cela que je t'ai conseillé d'avoir une table qui fait le lien entre ce titre sans les caractères spéciaux et l'id+champ |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Ven Mar 21, 2008 19:55 Sujet du message: Comment transformer une url ? |
|
|
Merci webmasterlamogere,
J'ai donc utilisé ta technique de cette façon:
| Code: |
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)-(.*)-([0-9]*)\.php$ /page-site.php?rewriting=$1&champ=$2&id=$3 [L]
|
Ce qui me donne des url du genre:
| Code: |
| http://monsite.com/titre-de-la-page-NOMCATEGORIE-id.php |
Bon c'est un peut long mais je n'ai pas encore comprit comment afficher juste le titre sachant qu'au point de départ je transmet 3 variables dans l'url!!
J'essaye maintenant de rewriter une autre url qui donne:
| Code: |
| /categorie.php?categorie=nomdelacatégorie |
Note:nomdelacatégorie peut être tout en majuscule, tout en minuscule et séparé par des tirets bas(_).
J'ai éssayé:
| Code: |
RewriteRule ^(.*)\.php$ /categorie.php?categorie=$1 [L]
RewriteRule ^([a-z]*)\.php$ /categorie.php?categorie=$1 [L]
...
|
J'ai le droit soit à des 404 ou 500 ! Je ne comprend pas. |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1623 Localisation: urlrewriting.fr
|
Posté le : Ven Mar 21, 2008 23:34 Sujet du message: Comment transformer une url ? |
|
|
| Code: |
RewriteRule ^(.*)\.php$ /categorie.php?categorie=$1 [L]
RewriteRule ^([a-z]*)\.php$ /categorie.php?categorie=$1 [L] |
les erreurs 500 c'est parce que ça boucle.
Il faut mettre :
| Code: |
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z-]*)\.php$ /categorie.php?categorie=$1 [L] |
les deux conditions c'est pour éviter que des url qui existent ne match avec cette condition.
attention de bien mettre ces lignes en fin de fichier htaccess car cette règle est très générale.
pour éviter que deux règles ne se marchent dessus, le mieux est que tes url rewrité soit avec un préfixe : par exemple cat- ou c- |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1207 Localisation: Planete terre
|
Posté le : Sam Mar 22, 2008 0:16 Sujet du message: Comment transformer une url ? |
|
|
Grand merci webmasterlamogere .
Enfin sa fonctionne, même si je n'ai pas tout comprit sur les règles d'écriture.
Mon htacces ressemble à sa maintenant:
| Code: |
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)-(.*)-([0-9]*)\.php$ /page-site.php?rewriting=$1&champ=$2&id=$3 [L]
RewriteRule ^cat-([a-zA-Z-]*)\.php$ /categorie.php?categorie=$1 [L]
|
Je "travail" en sous dossier d'un site existant pour tester cela et c'est un peut galère quand d'une, on y comprend pas grand chose dans le rewriting et de deux, quand on s'aperçoit qu'une simple ligne dans un htaccess peut foutre le bordel sur tout un site ...
Milles merci de ta patience et de tes explications  |
|
| |
|
 |
| |
|
|