Comment transformer une url ?
18 messages
• Page 1 sur 2 • 1, 2
-

tryan - WRInaute passionné

- Messages: 2291
- Inscription: 20 Fév 2005
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:
Dans page-site.php je recupère les info transmises par $_GET soit $id et $nomduchamp:
Ensuite je me connecte à ma BD et je fais ma requète avec la boucle:
Ma base est constitué de cette façon:
Donc, comment procéder pour incorporer le "titre" dans l'url?
Note: je suis débutant en php...
Merci
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: Tout sélectionner
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: Tout sélectionner
<?
$idtransmit=$_GET["id"];
$nomduchamp=$_GET["champ"];
?>
Ensuite je me connecte à ma BD et je fais ma requète avec la boucle:
- Code: Tout sélectionner
.....
$query1 = mysql_query("SELECT * FROM $nomduchamp WHERE id = $idtransmit");
...
ma boucle
etc...
Ma base est constitué de cette façon:
- Code: Tout sélectionner
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 discret

- Messages: 125
- Inscription: 16 Fév 2008
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 passionné

- Messages: 1874
- Inscription: 17 Déc 2006
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 :
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
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: Tout sélectionner
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 passionné

- Messages: 2291
- Inscription: 20 Fév 2005
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 :
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
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: Tout sélectionner
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 passionné

- Messages: 1369
- Inscription: 27 Mai 2004
Ton lien tu le construit différement :
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.
- Code: Tout sélectionner
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.
-

webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
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.
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.
- Code: Tout sélectionner
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 passionné

- Messages: 2291
- Inscription: 20 Fév 2005
Ok, merci webmasterlamogere.
Donc en faisant:
Pour une url d'origine:
Sa me donne une url accessible du genre :
Le soucis est que la page est vide.
J'ai donc changé la ligne :
par:
Ce qui me donne maintenant une url accessible du genre :
Mais même punition, la page existe mais reste vide ...j'y comprend kedal !!
Donc en faisant:
- Code: Tout sélectionner
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.php$ /page-site.php?titre=$1 [L]
Pour une url d'origine:
- Code: Tout sélectionner
http://monsite.com/page-site.php?id=3&champ=TOTO
Sa me donne une url accessible du genre :
- Code: Tout sélectionner
http://monsite.com/3.php
Le soucis est que la page est vide.
J'ai donc changé la ligne :
- Code: Tout sélectionner
RewriteRule ^(.*)\.php$ /page-site.php?titre=$1 [L]
par:
- Code: Tout sélectionner
RewriteRule ^(.*)-(.*)\.php$ /page-site.php?titre=$1&champ=$2 [L]
Ce qui me donne maintenant une url accessible du genre :
- Code: Tout sélectionner
http://monsite.com/3-TOTO.php
Mais même punition, la page existe mais reste vide ...j'y comprend kedal !!
-

webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
j'ai compris que tu veux remplacer l'url :
par l'url :
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 :
il te suffit de mettre la règle :
- Code: Tout sélectionner
http://monsite.com/page-site.php?id=3&champ=TOTO
par l'url :
- Code: Tout sélectionner
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: Tout sélectionner
http://monsite.com/3-TOTO.php
il te suffit de mettre la règle :
- Code: Tout sélectionner
RewriteRule ^([0-9]*)-(.*)\.php$ /page-site.php?id=$1&champ=$2 [L]
-

tryan - WRInaute passionné

- Messages: 2291
- Inscription: 20 Fév 2005
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:
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:
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:
Bon, j'en demande peut être beaucoup mais j'essaye de comprendre.
Merci
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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
http://monsite.com/Creer-un-blog.php
Bon, j'en demande peut être beaucoup mais j'essaye de comprendre.
Merci
-

Bacteries - WRInaute passionné

- Messages: 1369
- Inscription: 27 Mai 2004
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 :
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 :
- Code: Tout sélectionner
ID-ton_titre.php
-

webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
Pour supprimer les caractères spéciaux il faut utiliser une petite fonction comme celle ci :
http://www.webrankinfo.com/forums/viewt ... 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/viewt ... 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
http://www.webrankinfo.com/forums/viewt ... 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/viewt ... 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 passionné

- Messages: 2291
- Inscription: 20 Fév 2005
Merci webmasterlamogere,
J'ai donc utilisé ta technique de cette façon:
Ce qui me donne des url du genre:
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:
Note:nomdelacatégorie peut être tout en majuscule, tout en minuscule et séparé par des tirets bas(_).
J'ai éssayé:
J'ai le droit soit à des 404 ou 500
! Je ne comprend pas.
J'ai donc utilisé ta technique de cette façon:
- Code: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
/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: Tout sélectionner
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
-

webmasterlamogere - WRInaute passionné

- Messages: 1874
- Inscription: 17 Déc 2006
- Code: Tout sélectionner
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: Tout sélectionner
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 passionné

- Messages: 2291
- Inscription: 20 Fév 2005
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:
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
Enfin sa fonctionne, même si je n'ai pas tout comprit sur les règles d'écriture.
Mon htacces ressemble à sa maintenant:
- Code: Tout sélectionner
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
18 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Transformer des citations en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
