Page 1 sur 3

HT Acces : URL Writting

Posté : 11 juil. 2013, 14:23
par Horws
Bonjour tout le monde,

Je viens de m'inscrire sur ce forum et ça m'a l'air bien sympa.
Pour ma part, je viens vous demander de l'aide concernant le URL Writting.

En ce moment dans mon URL, j'ai quelques choses qui ressemble a cela : http://monsite.fr/reponse.php?Choix=211

Premièrement, j'affiche le contenu via une bdd; donc dans ma table, je me retrouve avec un ID ( 221 ici) puis le champs nom(Crapeaud).

Si possible, je souhaiterais afficher, le champs nom à la place du champs ID du genre
http://monsite.fr/reponse.php?Choix=crapeau[url][/url]
OU carrément si c'est possible
http://monsite.fr/reponse/crapeau[url][/url]

Il me semble que c'est dans un fichier HT ACCESS que l'on doit gérer tout cela.
Si vous pouviez me donner des pistes, astuces ou autres.

Grand merci,

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 16:55
par two3d
Salut, bienvenu sur les forums PHPFrance! :D

le htaccess c'est compliqué, quand on y connais rien... normal tu me dira ^^

on va commencer par l'URL que souhaite afficher au final, soit:

Code : Tout sélectionner

http://monsite.fr/reponse/crapeau
Pour commencer, il faut créer un fichier .htaccess qui tu mettra à la racine de ton site

ensuite, à l'intérieur du fichier, il faut indiquer que tu utilise l'url rewriting, la commande est:

Code : Tout sélectionner

RewriteEngine On
Juste en dessous, il te faut indiquer si tu travail à la racine de ton site ou dans un dossier; par exemple:

Pour un dossier:

Code : Tout sélectionner

RewriteBase /ton-dossier
Sans dossier:

Code : Tout sélectionner

RewriteBase /
La commande (si on peu appeler ça une commande ?) RewriteBase permet la cohérence si tu utilise des URL réécrites comme tu le souhaite (soit /reponse/crapeau)


En suite, pour réécrire l'URL, il suffit d'indiquer comme suit:

Code : Tout sélectionner

RewriteRule ^reponse/crapeau$ reponse.php?Nom=crapeau [L]
Mais je te conseil l'usage de l'identifiant dans la base (qui lui, en générale ne peut être dupliqué si il est en AI) au lieu du nom.

L'exemple avec l'id serait:

Code : Tout sélectionner

RewriteRule ^reponse/([0-9]+)$ reponse.php?Choix=$1 [L]
d'où $1 = ([0-9]+)
d'où ([0-9]+) = seulement des chiffres (1 ou plusieurs) (Regex)


Le .htaccess final serait:

Code : Tout sélectionner

RewriteEngine On RewriteBase / RewriteRule ^reponse/crapeau$ reponse.php?Nom=crapeau [L] RewriteRule ^reponse/([0-9]+)$ reponse.php?Choix=$1 [L]
Bon courage pour la suite, n'hésite pas à demander plus d'aide/d'informations

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 17:13
par Horws
Hello two3d :)

Merci déjà de prendre de ton temps, et de me faire une description au top ;)
C'est exact, si on ne connait pas le HT Acces cela parait bien compliqué.

Je me suis donc servit de l'exemple que tu m'a fournis précédemment et qui au passage m'a bien éclairé.

Code : Tout sélectionner

RewriteEngine On RewriteBase / RewriteRule ^reponse/crapeau$ reponse.php?Nom=crapeau [L] RewriteRule ^reponse/([0-9]+)$ reponse.php?Choix=$1 [L]
Cependant, lorsque je vais sur mon site en ligne, que je clique j'ai toujours la même url http://monsite.fr/reponse.php?Choix=68

Le fichier Ht Access met-il du temps a s’interpréter? Ou marche t-il lors de l'upload en ftp?

Cordialement,
Horws

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 17:29
par two3d
ah, non, il te modifier tes liens href de ta page HTML, bien entendu :wink:

il s'agit de réécriture d'URL et non de redirection d'URL

entre directement l'URL monsite.fr/reponse/crapeau pour essayer

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 17:38
par Horws
Cela ne fonctionne pas,
j'ai créer une nouvelle page "test" avec pour champs Id_Pages ="261" et pour champs Nom_Pages="test".
Quand je saisis dans l'URL " www.monsite.fr/reponse/test

Cela m'affiche une erreur avec la requête.

Merci,
Cédric

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 17:47
par two3d
on va faire plus simple pour voir si le .htaccess fonctionne

rajoute dans le htaccess (en dessous du code que je t'ai passé tout à l'heure), le code suivant:

RewriteRule ^testhtaccess$ pagetest.php [L]

crée la page pagetest.php et inscrit à l'intérieur Bonjour

va ensuite sur tonsite.fr/testhtaccess normalement le mot Bonjour doit s'afficher

Si ce n'est pas le cas, ferme ton navigateur internet, nettoie ton cache DNS et reviens sur la page tonsite.fr/testhtaccess (Avec Ccleaner, tu peut nettoyer le cache DNS)

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 17:52
par Horws
J'ai fais le test et ça fonctionne.
Mais je ne vois pas en quoi cela peut m'aider. D'ailleurs que le mette ou non la commande "RewriteRule ^testhtaccess$ pagetest.php [L]", ce m'affiche toute de même bonjour.

J'ai oublié de préciser, que mes pages sont générer a partir de la page "reponse.php" avec un ID stocké dans une table de la base de donnée.

Cordialement,
Cédric

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 17:59
par two3d
donc, ça fonctionne bien

essaye maintenant (on aura du essayer en premier) de faire:

RewriteRule ^dossier-imaginaire/testhtaccess$ pagetest.php [L]

et ensuite va à l'adresse tonsite.fr/dossier-imaginaire/testhtaccess et dit moi si Bonjour s'affiche encore stp

si oui, c'est qu'il y a un bug au niveau de ton code PHP, tout simplement, on verra après

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 18:04
par Horws
Oui le "Bonjour" s'affiche :wink:

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 18:07
par two3d
Donc, c'est ton code PHP

peut tu me coller le code PHP de ta page stp

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 18:11
par Horws
Ma page réponse :

Code : Tout sélectionner

<?php include 'Includes/Haut.php'; ?> <?php include("Includes/Base_Donnees.php"); $id = mysql_real_escape_string($_GET['Choix']); $id = $_GET["Choix"] ; //requête SQL: $req = "SELECT pages.Id_Pages, Nom_Pages, Texte_Pages, Cle1, Cle2, Cle3, Cle4 FROM pages WHERE pages.Id_Pages = ".$id; //exécution de la requête: $result = mysql_query($req) or die($req."<br />\n".mysql_error()); //affichage des données: while($Mon_Resultat = mysql_fetch_array($result)) { ?> <div class="border-title" alt="<?php echo $Mon_Resultat['Nom_Pages']; ?>" title="<?php echo $Mon_Resultat['Nom_Pages']; ?>"> <h2><?php echo $Mon_Resultat['Nom_Pages']; ?><span> </span> </h2> </div> <h4><?php echo $Mon_Resultat['Texte_Pages']; ?></h4> <!--Liste des Mot clés --> <aside class="widget widget_tag_cloud"> <h3 class="widgettitle"> <a href="#" title="">Mot Clés</a> </h3> <div class="tagcloud"> <p alt="<?php echo $Mon_Resultat['Cle1']; ?>" title="<?php echo $Mon_Resultat['Cle1']; ?>"><?php echo $Mon_Resultat['Cle1']; ?></p> <p alt="<?php echo $Mon_Resultat['Cle2']; ?>" title="<?php echo $Mon_Resultat['Cle2']; ?>"><?php echo $Mon_Resultat['Cle2']; ?></p> <p alt="<?php echo $Mon_Resultat['Cle3']; ?>" title="<?php echo $Mon_Resultat['Cle3']; ?>"><?php echo $Mon_Resultat['Cle3']; ?></p> <p alt="<?php echo $Mon_Resultat['Cle4']; ?>" title="<?php echo $Mon_Resultat['Cle4']; ?>"><?php echo $Mon_Resultat['Cle4']; ?></p> </div> </aside> <!--Liste des Mot clés --> <?php ; } ?> </ul> <?php include 'Includes/Bas.php'; ?>
Et là un exemple pour ouvrir une page :

Code : Tout sélectionner

<?php $req = "SELECT * FROM pages WHERE Id_Categories = 6 ORDER BY RAND( ) LIMIT 0,6 " ; $result = mysql_query($req) or die($req."<br />\n".mysql_error()); //affichage des données: while($Mon_Resultat = mysql_fetch_array($result)){?> <li><?php echo"<a href=\"reponse.php?Choix=".$Mon_Resultat['Id_Pages']."\">".$Mon_Resultat['Nom_Pages']."</a>";?></li> <?php ; } ?>
Encore merci ;)

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 18:15
par two3d
Et quand tu va sur la page tonsite.fr/reponse/211 (par exemple) ya quoi qui s'affiche ?

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 18:17
par Horws
Il y a la page qui s'affiche mais sans le CSS
Et avec une erreur SQL :

Code : Tout sélectionner

SELECT pages.Id_Pages, Nom_Pages, Texte_Pages, Cle1, Cle2, Cle3, Cle4 FROM pages WHERE pages.Id_Pages = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 18:53
par two3d
Oui, il faut dire que ta requête n'est pas très correcte, voici la bonne requête:
$req = "SELECT Id_Pages, Nom_Pages, Texte_Pages, Cle1, Cle2, Cle3, Cle4
   FROM pages
   WHERE Id_Pages = ".$id;
PS: le code suivant n'est pas sécurisé:
$id  = mysql_real_escape_string($_GET['Choix']);
$id  = $_GET["Choix"] ;
On en parle après :wink:

Re: HT Acces : URL Writting

Posté : 11 juil. 2013, 19:01
par Horws
Hum, oui c'est un vieux bout de code.
Les changements n'apporte rien. Toujours le même problème de requête. :oops: