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

Discussion dans 'URL Rewriting et .htaccess' créé par phm2000, 8 Juin 2010.

  1. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
    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
     
  2. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 113
    J'aime reçus:
    0
    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...)
     
  3. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
    Oui , mais je voudrais l'automatiser pour ne pas avoir à saisir chaque nom à la main sachant que j'en ai plus de 100

    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
     
  4. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 113
    J'aime reçus:
    0
    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?
     
  5. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
    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
     
  6. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 113
    J'aime reçus:
    0
    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...
     
  7. mahdivitchee
    mahdivitchee WRInaute discret
    Inscrit:
    22 Mars 2010
    Messages:
    166
    J'aime reçus:
    0
  8. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
    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
     
  9. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 113
    J'aime reçus:
    0
    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
     
  10. gg00xiv
    gg00xiv Nouveau WRInaute
    Inscrit:
    10 Juin 2010
    Messages:
    39
    J'aime reçus:
    0
    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:
    function get_rewrited_name($name)
    {
         $rname = str_replace("é","e",$name);
         $rname = str_replace(" ","_",$rname);
         ...
         return strtolower($name);
    }
    
     
  11. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
    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:
    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
     
  12. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 113
    J'aime reçus:
    0
    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

    ou "NOM_REG" serait le nom de la colonne dans laquelle se trouve le nom de la region dans Mysql...
     
  13. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
  14. phm2000
    phm2000 Nouveau WRInaute
    Inscrit:
    18 Mai 2010
    Messages:
    24
    J'aime reçus:
    0
    J'ai trouvé une autre fonction
    Code:
    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
     
  15. Anto1982
    Anto1982 WRInaute passionné
    Inscrit:
    7 Mai 2009
    Messages:
    1 113
    J'aime reçus:
    0
    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:
    <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>
     
Chargement...
Similar Threads - Remplacer nom récupéré Forum Date
Rewriting URL : remplacer product ID par le nom du produit, possible ? URL Rewriting et .htaccess 24 Mai 2011
Remplacer un serie de noms par une autre Développement d'un site Web ou d'une appli mobile 12 Novembre 2010
Estimation du nom de domaine remplacer.com Administration d'un site Web 15 Février 2006
Remplacer un nom de domaine par un autre dans Google Problèmes de référencement spécifiques à vos sites 14 Mars 2004
Htacces : comment remplacer _ par : URL Rewriting et .htaccess 18 Juin 2019
remplacer version desktop par version mobile first Problèmes de référencement spécifiques à vos sites 19 Mai 2019
WordPress Par quoi remplacer MailPoet ? Débuter en référencement 1 Février 2019
Dans un script, Remplacer le mode « hasard » par le mode « suivant » Développement d'un site Web ou d'une appli mobile 3 Novembre 2018
Un logiciel pour remplacer Google Analytics ? Google Analytics 20 Juin 2018
Remplacer des redirections 302 en 301 Développement d'un site Web ou d'une appli mobile 23 Mai 2018
Remplacer une url par une autre URL Rewriting et .htaccess 29 Octobre 2016
Dans un formulaire, remplacer l’apostrophe dactylographique par l’apostrophe typographique Développement d'un site Web ou d'une appli mobile 18 Février 2016
Remplacer les underscores par des tirets URL Rewriting et .htaccess 1 Septembre 2015
Peut-on remplacer un lien dans la SERP ? Problèmes de référencement spécifiques à vos sites 27 Juin 2015
modifier et remplacer le contenu des pages web pour google Rédaction web et référencement 7 Août 2014
Remplacer textarea par une editeur de texte Développement d'un site Web ou d'une appli mobile 20 Juin 2014
Lien sur plusieurs éléments : remplacer par du JS Débuter en référencement 20 Mars 2014
Remplacer page référencée par une autre. Débuter en référencement 28 Octobre 2013
Remplacer des tags obsolètes Rédaction web et référencement 12 Septembre 2013
[MYSQL] Comment remplacer caractères dans tous les champs de toutes les tables d'une base? Développement d'un site Web ou d'une appli mobile 11 Juillet 2013