Récupérer un titre dans BDD et le mettre en URL

WRInaute occasionnel
Bonjour, j'ai dans ma base de données des news, dont je voudrais que le titre apparaisse en URL.

le chemin vers une news est du style :
-www.monsite.com/index.php?cat=1&id=23

avec l'url rewriting je peux faire ça :
-www.monsite.com/actualite-23.html

Mais ce que je voudrais, c'est récupérer le titre de la news en question dans la BDD pour avoir une URL du type :
-www.monsite.com/23-titre-news.html

est-ce possible?
 
WRInaute occasionnel
Oui c'est possible!

C'est ce que je fais pour tous mes sites. Par-contre, c'est pas tout simple à faire. On a développé un cms pour ça.

L'idée, c'est de faire une sortie de BDD avec tous les titres des articles .

Ensuite tu génères les liens avec titres en sorties (menu/sitempap/etc).

Tu utilise l'URLRW pour transformer tes liens "mon_article.html" vers "index.php?titre=mon_article

Il faut parser le tout pour avoir des résultats identiques.

Pour afficher le bon article, tu fais une requête sql SELECT * WHERE titre_new = "mon article".

Idéalement, c'est bien de mettre l'id de ton article dans l'url ("mon_article_21.html). De cette façon, tu peux avoir 2 articles avec le même nom.

Voilà pour le principe.

N'hésite pas à me poser d'autres questions.
jOoL
 
WRInaute discret
quel serait ton probleme?

au lien de passer un id en param , passe le titre

exemple

^article-(.*).html$ article.php?titre=$1

au lieu de :

^article-([0-9]+).html$ article.php?id=$1
 
WRInaute occasionnel
jOoL > ah d'accord donc je sui quand même obligé de mettre le titre extrait de la BDD en url avant de faire l'url rewriting. j'ai la réponse à ma question. Merci bcp Jool.

venomelektro > le problème est que je n'ai pas le titre en paramètre, seulement des id, etc.. je voulais donc savoir s'il existait un moyen direct pour intégrer le titre dans le .htaccess :D
 
WRInaute discret
L'idéal dans ce cas serait de construire tes URL avec à la fois le titre et l'id, comme ça dans ton url rewriting tu récupère juste le paramètre id comme tu le fais actuellement.

Par exemple pour ton -www.monsite.com/23-titre-news.html ça donnerait la règle suivante :

^([0-9]+)-(.*)-news.html$ article.php?cat=1&id=$1

Ainsi seul l'id unique te permet de retrouver la news, et tu pourra changer à volonté le titre de ta news sans casser le lien. La plupart des sites fonctionnent comme ça, sauf les wiki, sinon ça oblige à stocker dans la base de données le titre avec son format tel qu'il est dans l'url.
 
Nouveau WRInaute
Sans l'id ... il y a quand meme un risque :

Si deux pages ont le même titre (Ca arrive assez vite), elles vont avoir la même url et là, tu va avoir quelques petits problèmes.

Donc, soit :
- T'es sur de toi et a chaque ajout d'article tu vérifie que le titre est unique.
- Soit l'id reste obligatoire.

Philippe
 
WRInaute occasionnel
Merci pour vos réponses :)

oui j'ai laissé l'id dans les exemples comme vous pouvez le voir "23-titre-news" ou 23 est l'id.

ma question portait plus sur la possibilité de récupérer le titre dans une BDD directement depuis le fichier .htaccess, sans passer le titre en paramètre d'url.
 
WRInaute occasionnel
wasabi a dit:
jOoL > ah d'accord donc je sui quand même obligé de mettre le titre extrait de la BDD en url avant de faire l'url rewriting.

Bien sûr! L'URL RW ne fait qu'interpreter et modifier un url existant. Il faut donc construire préalablement l'url de la façon que tu veux qu'il soit visible.
 
Nouveau WRInaute
wasabi a dit:
Merci pour vos réponses :)

oui j'ai laissé l'id dans les exemples comme vous pouvez le voir "23-titre-news" ou 23 est l'id.

ma question portait plus sur la possibilité de récupérer le titre dans une BDD directement depuis le fichier .htaccess, sans passer le titre en paramètre d'url.

Le htaccess ne peux pas faire ca.

Tu dois creer les liens dans le fichier php source.

Philippe
 
WRInaute occasionnel
Takumi a dit:
sinon ça oblige à stocker dans la base de données le titre avec son format tel qu'il est dans l'url.

Non! Par-contre ça oblige à "parser" les sorties de BDD et les URL à chaque requête pour pouvoir les comparer.
 
Discussions similaires
Haut