Remplacer un id par le nom récupéré dans une base de données

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Remplacer un id par le nom récupéré dans une base de données

Message le Mar Juin 08, 2010 14:08

Bonjour

je souhaite réécrire une url du style :

www.exemple.fr/offre.php?code-region=25 en www.exemple.fr/offre-nom de la région

sachant qu'à un id correspond un nom de région dans ma base de données

Je sais réécrire en www.exemple.fr/offre-25 avec le .htaccess mais je ne vois pas comment remplacer le numéro par le nom

Quelqu'un aurait-il des idées, car je n'ai rien trouvé de concluant lors de mes recherches

merci


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mar Juin 08, 2010 14:14

si tu sais réécrire "www.exemple.fr/offre-25" alors tu sais réécrire "www.exemple.fr/offre-offre" et donc "www.exemple.fr/offre-nom" non...?

Ensuite, au lieu de chercher dans ta base de données par l'id, tu cherches par le nom (à condition qu'il y ait une relation 1<=> 1 entre l'id et le nom)

(Ou alors j'ai rient compris à ton problème...)

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mar Juin 08, 2010 14:20

Anto1982 a écrit:si tu sais réécrire "www.exemple.fr/offre-25" alors tu sais réécrire "www.exemple.fr/offre-offre" et donc "www.exemple.fr/offre-nom" non...?

Oui , mais je voudrais l'automatiser pour ne pas avoir à saisir chaque nom à la main sachant que j'en ai plus de 100

Anto1982 a écrit:Ensuite, au lieu de chercher dans ta base de données par l'id, tu cherches par le nom (à condition qu'il y ait une relation 1<=> 1 entre l'id et le nom)

(Ou alors j'ai rient compris à ton problème...)


Comme je n'ai pas créé le site je souhaiterais éviter de modifier le code, mais pour les relations 1-1 c'est peu être le plus simple


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mar Juin 08, 2010 14:36

OK, en fait, tu n'as pas de problème... juste un petit souci de logique.

pour avoir des adresses du type: "www.exemple.fr/offre-nom"

Tu as une base de données:
id|nom
1|nom1
2|nom2
...
n|nomn

sur ta page d'accueil (c'est un exemple). Tu vas faire appel à ta base de données pour afficher les liens vers les pages relatives à l'id 2 et l'id 6.

=> requete mysq
=> tu récupères les noms (nom2 et nom6)

=> tu écris tes liens vers tes pages <a href="www.exemple.fr/nom2">Nom2</a> et <a href="www.exemple.fr/nom6">Nom6</a>

=> Tu modifies ton htaccess avec un truc du genre:
RewriteRule ^([(a-z)(A-Z)(0-9)_]*)$ /offre.php?nom=$1 [L]

L'url "www.exemple.fr/nom2" pointera sur ton fichier php "offre.php"
dans ton fichier "offre.php" tu récupère la variable nom ($_GET['nom'])

=> requete mysql, (tu récuperes ce que tu veux dans ta base en cherchant par ta variable nom - qui aura la valeur "nom2")
=> Tu affiches ce que tu veux.

;-)

C'est ce que tu veux faire non?

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mar Juin 08, 2010 20:00

Anto1982 a écrit:OK, en fait, tu n'as pas de problème... juste un petit souci de logique.

pour avoir des adresses du type: "www.exemple.fr/offre-nom"

Tu as une base de données:
id|nom
1|nom1
2|nom2
...
n|nomn

sur ta page d'accueil (c'est un exemple). Tu vas faire appel à ta base de données pour afficher les liens vers les pages relatives à l'id 2 et l'id 6.

=> requete mysq
=> tu récupères les noms (nom2 et nom6)

=> tu écris tes liens vers tes pages <a href="www.exemple.fr/nom2">Nom2</a> et <a href="www.exemple.fr/nom6">Nom6</a>


Je comprends à peu près la logique que tu as l'air de dominer, mais malheureusement je n'y connais rien en requêtes sql.
J'ai lu des articles traitant mon problème, mais je n'ai rien trouvé d'assez clair pour un néophyte comme moi.
Je vais tenter. Pourquoi choisir la page index ? Est-ce que ça a une importance?

Merci


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mer Juin 09, 2010 8:52

Arg...; effectivement, sans avoir de base de données derrière, ça risque d'être non pas plus compliqué (enfin pour moi si) mais plus difficile à entretenir et mettre à jour...

mahdivitchee
WRInaute discret
WRInaute discret
 
Messages: 175
Inscription: 22 Mar 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mer Juin 09, 2010 11:52

phm2000 a écrit:Bonjour

Quelqu'un aurait-il des idées, car je n'ai rien trouvé de concluant lors de mes recherches

merci


Bonjour


lire ce post http://forum.webrankinfo.com/des-codes-pour-redirection-htaccess-t110832.html


cordialement

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Mer Juin 09, 2010 20:41

Anto1982 a écrit:Arg...; effectivement, sans avoir de base de données derrière, ça risque d'être non pas plus compliqué (enfin pour moi si) mais plus difficile à entretenir et mettre à jour...


J'ai bien une base de données.

Je reprends mon problème en détaillant

Je souhaite afficher des offres de formations selon des régions. je suis sur la page www.ex.fr/offres.php?all
J'ai un menu déroulant des régions de france
Je choisis Alsace une qui m'ouvre la page www.ex.fr/offre.php?code_region=25
je souhaiterais que cette url soit www.ex.fr/offre-alsace

Je peux déjà la réécrire sous la forme www.ex.fr/offre-25

Ensuite je plante pour remplacer 25 par alsace. Quelle requête sql dois-je faire?

Merci


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 8:30

Ton menu, tu le récupères bien en faisant une requête dans ta base? (ou bien est-il écrit en "dur"?)

Quand tu écris ton menu, au lieu de mettre des liens
www.ex.fr/offre.php?code_region=25
tu mets des liens
www.ex.fr/offre-alsace
(en fait, tu fait ce que tu veux!)

(à cette étape, on n'en est pas encore à la réécriture!)

ensuite, quand tu vas cliquer sur ces liens, c'est la que la réécriture d'url entre en jeu.
Si tu n'as pas encore commencé à coder... on est un peu en train de parler dans le vide...

Anto


gg00xiv
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 43
Inscription: 10 Juin 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 12:46

L'idéal quand tu as des noms dont l'orthographe peut contenir des caractères spéciaux est de rajouter une colonne : "name_rewrited" par exemple, et de faire ta requête basé sur ce nom :
url : "/offre-pyrenees"
en base : ID = 25, name = "Pyrénées", name_rewrited = "pyrenees"

en PHP tu pourrais faire une petite fonction de ce style pour générer les noms ré-écrits :
Code: Tout sélectionner
function get_rewrited_name($name)
{
     $rname = str_replace("é","e",$name);
     $rname = str_replace(" ","_",$rname);
     ...
     return strtolower($name);
}

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 13:09

Le site est ici : http://www.alternance.enils.fr/offres.php?all

Voici la fonction qui créé le lien vers les offres de la région à partir du choix effectué dans la liste

FIRST_REG_ est le nom de la région
Code: Tout sélectionner
function selectRegion() {

      $htm="<select name='CODE_REG'>\n";
      $htm.="<option value='' $sel>Toutes les régions</option>\n";
      $sql = "select      CODE_REG     , FIRST_REG_  from region order by FIRST_REG_ asc ";
      $res =mysql_query($sql);
      while ($r =mysql_fetch_array($res)) {
         if ($r[CODE_REG]==$_REQUEST['CODE_REG'])         $sel =" selected " ; else $sel ="";
         $htm.="<option value='".$r[CODE_REG]."' $sel>".ucfirst(strtolower( $r[FIRST_REG_] ))."  </option>\n";
      }
      $htm.="</select>\n";
      return $htm;



Je pense que c'est la ligne $htm. qui définit le lien. J'aimerais ajouter au lien crée le nom de la région, mais là je coince


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 13:20

function selectRegion() {

$htm="<select name='CODE_REG'>\n";
$htm.="<option value='' $sel>Toutes les régions</option>\n";
$sql = "select CODE_REG , FIRST_REG_ from region order by FIRST_REG_ asc ";
$res =mysql_query($sql);
while ($r =mysql_fetch_array($res)) {
if ($r[CODE_REG]==$_REQUEST['CODE_REG']) $sel =" selected " ; else $sel ="";
$htm.="<option value='".$r[CODE_REG]."' $sel>".ucfirst(strtolower( $r[FIRST_REG_] ))." </option>\n";
}
$htm.="</select>\n";
return $htm;


En fait, dans ce code, il n'y a pas de lien... Je pense que c'est juste une liste, avec un formulaire qui te renvoi quelque part... (??) juste une liste déroulante (ou alors, tu as un code javascript qui te crée des liens...
Pour récuperer le nom de la region il faudrait faire un truc du genre

$sql = "select NOM_REG,CODE_REG , FIRST_REG_ from region order by FIRST_REG_ asc ";
$res =mysql_query($sql);
while ($r =mysql_fetch_array($res)) {
if ($r[CODE_REG]==$_REQUEST['CODE_REG']) $sel =" selected " ; else $sel ="";
$htm.="<option value='".$r[NOM_REG]."' $sel>".ucfirst(strtolower( $r[FIRST_REG_] ))." </option>\n";
}


ou "NOM_REG" serait le nom de la colonne dans laquelle se trouve le nom de la region dans Mysql...

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 13:35

Je viens de faire la modif, j'ai le lien
http://www.alternance.enils.fr/offres.php?FIRST_REG_=Languedoc-Roussillon

Mais effectivement je ne sais pas où est créé le lien pour modifier son aspect, je vais chercher

phm2000
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 24
Inscription: 18 Mai 2010

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 13:41

J'ai trouvé une autre fonction
Code: Tout sélectionner
if (isset($_REQUEST[CODE_REG])) {   
         echo "<form method=get>";
         echo "<div id=SelectTitre>Région</div>";
         echo $this->selectRegion();
         echo "<input type=image src=img/go.gif onClick=\"submit();\" />";
         echo "</form >";
      }


elle appelle la précédente


Anto1982
WRInaute passionné
WRInaute passionné
 
Messages: 1334
Inscription: 7 Mai 2009

Re: Remplacer un id par le nom récupéré dans une base de données

Message le Jeu Juin 10, 2010 14:01

En fait, c'est parceque tu ne publie pas des liens. Tu soumets un formulaire... Ce n'est pas la même methode (et du coup, c'est normal...

Pour naviguer dans certaines parties de mon site, je fais ça: (mais c'est pas bon pour le référencement...


Code: Tout sélectionner
<select onchange="if(this.value != ''){window.open(this.value, '_self')};" id="select_url">
<option value="http://tonurl.com/Offres/Region">Region</option>
<option value="http://tonurl.com/Offres/Region1">Region1</option>
</select>


<script type="text/javascript" language="javascript">var label = 'Go to Url'
   var select01 = new selectRef.init('select_url', label)</script>


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités