Url rewriting avec parametres dans une base, help

WRInaute accro
Bonsoir,

il y a un truc que je ne comprends, ça doit être évident, mais ça fait trois jours que je tourne en rond, alors si quelqu'un voulait bien avoir la gentillesse de m'expliquer simplement, de façon claire et détaillée pour une analphabete du rewriting.

J'ai compris comment on transforme une url du type
-www.exemple.com/page.php?var1=toto&var2=zebulon en www.exemple.com/toto/zebulon

Maintenant, moi ce que j'ai, c'est www.exemple.com/page.php?var1=1&var2=2

et une base de données qui me donne une equivalence 1 = toto et 2 = zebulon

Et c'est là où je coince... comment je passe directement de
-www.exemple.com/page.php?var1=1&var2=2 à www.exemple.com/toto/zebulon ?

j'imagine qu'il faut un script quelque part, mais où ? Et comment on l'appelle ? Et comment on indique les valeurs que le script est allé cherché dans la base au rewriting ?
 
WRInaute impliqué
SI tu veux le faire par réécriture, il faut utiliser RewriteMap :
http://httpd.apache.org/docs/2.0/mod/mo ... rewritemap

Mais ca n'est pas utilisable dans un .htaccess, il faut que tu aie la main sur la config du serveur apache (hébergement dédié donc).

Sinon, il faut le faire par PHP, mais je laisserait un autre que moi te l'expliquer, car jusque là je suis toujours passé par mod_rewrite.
 
WRInaute accro
Pour construire ton url et l'afficher quelque part, tu fais une requête à partir des id pour trouver les noms.

Quand tu executes l'url, tu fais une requêtes à partir des noms pour retrouver les ids ?

C'est ça ta question ou je l'ai pas compris ?
 
WRInaute accro
YoyoS oui c'est ça ma question.

Je suis sur un mutualisé, donc rewritemap pas possible.

Il resterait à le faire en php, mais comment ? Je ne vois pas la logique qui permet de le faire ?

En même temps je suis sure que c'est faisable puisque c'est le principe de réécriture des urls de mon blog.
Je n'arrive simplement pas à décortiquer son code.
 
WRInaute accro
En gros, la page ou tu listes des liens se forme de cette façon:

- Tu fais une requete select * from table where id = idnom
- Tu affiches et tu construis tes url
- Ce qui donne une liste de liens de type -www.example.com/zebulon/

Sur la page dont l'url est rewritée:

- Tu lances dans ton navigateur l'url -www.example.com/zebulon/ en paramètre tu as donc var = zebulon.
- En haut de page, avant tout affichage, tu récupères le nom de ton url.
- Tu fais une requête de type select * from table where nom = nomprovenantdelurl;
- Tu obtiens tout ce dont tu as besoin pour travailler, dont l'id.


C'est pour cela que je préfère travailler avec les ids dans les url, tu peux avoir des pages comportant le meme nom, ca ne plantera pas, et une seule requête à faire.
 
WRInaute accro
YoyoS a dit:
En gros, la page ou tu listes des liens se forme de cette façon:

- Tu fais une requete select * from table where id = idnom
- Tu affiches et tu construis tes url
- Ce qui donne une liste de liens de type -www.example.com/zebulon/

Sur la page dont l'url est rewritée:

- Tu lances dans ton navigateur l'url -www.example.com/zebulon/ en paramètre tu as donc var = zebulon.
- En haut de page, avant tout affichage, tu récupères le nom de ton url.
- Tu fais une requête de type select * from table where nom = nomprovenantdelurl;
- Tu obtiens tout ce dont tu as besoin pour travailler, dont l'id.


C'est pour cela que je préfère travailler avec les ids dans les url, tu peux avoir des pages comportant le meme nom, ca ne plantera pas, et une seule requête à faire.

Tout ça j'ai compris.
Mais je ne veux pas avoir var = zebulon en parametre, je veux avoir var = 01, et c'est var = 01 qui me permet de déterminer zebulon.

Par exemple, dans Wordpress, le parametre est l'id du post, mais tu peux faire des urls avec le titre du post.


Edit : je suis complètement idiote, je viens de comprendre, effectivement j'avais la solution sous les yeux.
Merci :)

En fait je mets zebulon dans l'url, et c'est dans le header de la page que je vais rechercher la varleur de la variable ! Résolu...

(Bon si personne ne me comprends, c'est pas grave, moi oui :) )
 
WRInaute accro
Oui mais ce que tu comprends pas, c'est que tu dois obligatoirement te baser sur quelque chose présent dans l'url que tu vas ensuite récupérer en php.

Si tu as une url du type : www.exemple.com/zebulon/ , je vois pas dutout comment récupérer var = 1 instantanément comme ça grâce à l'url alors que dans ce cas var = zebulon ^^, ou alors manuellement avec une correspondance dans un tableau, masi c'est assez sauvage si tu en as beaucoup :D

Si tu changes ta méthode et que tu fais www.exemple.com/1/zebulon/ , la oui, tu peux avoir var = 1 et même un autre var2 = zebulon :mrgreen:

Ca dépend si tu veux faire une règle générique ou bien les faire toutes à la main !
 
WRInaute accro
Toute information passée dans la partie réécrite de la règle doit se trouver dans l'URL de base. Après, tu n'es pas forcée d'exploiter ou de récupérer la valeur "zébulon".
 
Discussions similaires
Haut