| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1087 Localisation: Planete terre
|
Posté le : Jeu Mar 27, 2008 16:05 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Bonjour,
J'essaye depuis près de 2 semaines de me créer un site web dynamique géré uniquement avec php+ base de données.
Malgré plusieurs tentatives, je me retrouve toujours bloqué au niveau de la transmission de variable par l'url. Sinon dit, soit à cause du titre de la page, soit à cause du nom de la catégorie.
Celles si sont stockés en bd et contient forcément des caractères accentués, des apostrophes, des espaces ou autre lettre comme le "ç"... bref le résultat est que je finit toujours par obtenir des url pourrit avec des (r%E9f%E9) et j'en passe !
J'ai tenté le rewriting mais sans grand succès et de toute façon vue le titre transmit, il m'est impossible de récupérer les données par la suite.
Par exemple pour un titre transmit qui serait "création d'un site dynamique" je vais obtenir une url du genre .../page.php?titre=cr%C3%A9ation+d'un+site+dynamique
Je fait comment après, je case des str_replace() partout
Et pour rewriter sa .. c'est possible
Bon je suppose qu'il me manque quelque chose mais je ne sais pas quoi !!
----------------------------------------------------------------------------------
Pour continuer:
Supposons une page nommé page_site.php .
Je transmet l'id par url soit page_site.php?id=2427 qui fait correspondre au titre "Création d'un site dynamique".
Un coup de rewrite:
| Code: |
RewriteRule -s([0-9]*)\.html$ page_site.php?id=$1 [L]
|
L'url obtenue donne alors ../creation-d-un-site-dynamique-s2427.html
Qu'est ce qui fait que j'obtient le titre dans l'url de la page alors que je transmet uniquement l'id
J'aimerais vraiment comprendre pour avancer ...merci. |
|
| |
|
 |
nickargall WRInaute accro

Inscrit le: 13 Juin 2005 Messages: 2927 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Jeu Mar 27, 2008 16:52 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Ben, le lien qui fait appel doit surement etre de la forme
| Code: |
| <a href="/creation-d-un-site-dynamique-s2427.html ">blalabla</a> |
... non ? |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1087 Localisation: Planete terre
|
Posté le : Jeu Mar 27, 2008 17:19 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Heuuuu .. c'est blindé de fonction que je ne comprend pas !!
Ce que je ne pige pas:
Quand on transmet une seule info par url soit l'id "page_site.php?id=2427" pour trouver les informations du site, comment peut on se retrouver ensuite après rewriting avec 2 infos soit le titre+l'id dans l'url ? L'id, ok puisqu'elle est transmise mais le titre ... ? On ne peut rewriter que ce qui est transmit ..non ?
Et pour la première partie, une solution, une suggestion ?
Merci |
|
| |
|
 |
nickargall WRInaute accro

Inscrit le: 13 Juin 2005 Messages: 2927 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Jeu Mar 27, 2008 17:40 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
oui, on ne peut réécrire que ce qui est transmis, donc le titre de la page est transmis par le bout de code qui crée ton lien HTML.
Pour la première partie, fais des recherches sur url_encode() en php |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1143 Localisation: Montpellier & Lyon
|
Posté le : Jeu Mar 27, 2008 18:02 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
| le plus simple est de récupérer le titre à partir de l'id dans la base de données. |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1087 Localisation: Planete terre
|
Posté le : Jeu Mar 27, 2008 19:04 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
| nickargall a écrit: |
oui, on ne peut réécrire que ce qui est transmis, donc le titre de la page est transmis par le bout de code qui crée ton lien HTML.
Pour la première partie, fais des recherches sur urlencode() en php |
J'ai regardé cette fonction qui dit que sa remplace les caractères non alpha-numériques en % suivi de deux chiffres hexadécimaux et les espaces par des +.
| Code: |
| $titre=urlencode($titre); |
Donc si je transmet le titre "création d'un site dynamique" par url avec cette fonction soit page.php?titre=cr%C3%A9ation+d'un+site+dynamique, je vais pouvoir récupérer ensuite mon titre telle qu'il l'est au point de départ soit "création d'un site dynamique" avec la fonction urldecode() ?
D'autre part, peut on rewriter ce genre d'url sachant que sa donnera un truc du genre
| Code: |
...
<a href="'.$titre.'.php">blalabla</a>
...
Qui donnera:
<a href="cr%C3%A9ation+d'un+site+dynamique.php">blalabla</a>
|
| webmasterlamogere a écrit: |
| le plus simple est de récupérer le titre à partir de l'id dans la base de données. |
Je veux bien que tu m'explique parce que la je suis largué..
Sa sous entend qu'il faut récupérer le titre de la page pour ensuite pouvoir le transmettre
Merci |
|
| |
|
 |
nickargall WRInaute accro

Inscrit le: 13 Juin 2005 Messages: 2927 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Jeu Mar 27, 2008 19:26 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Bon on reprend :
- ta page A affiche un lien
| Code: |
<?php
echo '<a href="'.$titredelanews.'-".$iddelanews".">lablabla</a>';
?>
|
Pour que $titredelanews passe bien dans l'URL, faut y virer ou remplacer tout caractère spécial et accents au préalable (et les tirets aussi, on a besoin qu'y en ait qu'un pour la suite) .
Ensuite, ta règle de réécriture:
| Code: |
RewriteRule ^(.*)-([0-9]*)\.html$ page_site.php?id=$2 [L]
|
...fera que ta page B de destination récupérera l'id passé dans l'argument, ce qui te suffira à trouver le contenu correspondant.
En bref, on se moque de récupérer le $titredelanews dans l'URL, on récupere que $2 qui correspond à la variable php $iddelanews.
Ce que Lamogere veut dire, c'est qu'il ne faut pas essayer de récupérer le titre de la news depuis celui qui est passé par l'URL, mais faire sur la page B une requete SQL sur l'id de la news (que tu récupères facilement) pour ressortir le titre du contenu que tu cherches.
Il te reste plus qu'à trouver une fonction qui enlèvera tous les caractères pas beaux dans le code qui écrit le lien de la page A.
C'est plus clair ?
Dernière édition par nickargall le Ven Mar 28, 2008 2:20; édité 1 fois |
|
| |
|
 |
webmasterlamogere WRInaute accro

Inscrit le: 17 Déc 2006 Messages: 1143 Localisation: Montpellier & Lyon
|
Posté le : Jeu Mar 27, 2008 19:28 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
il faut une table avec comme clé id et contenant une colonne titre
ainsi l'url un-url-avec-un-titre-01.html est rewritée en affiche_id.php?id=01 avec la règle :
| Code: |
| RewriteRule ^(.*)-([0-9]*)\.html$ /affiche_id.php?id=$1 [L] |
le script affiche_id.php récupère le titre dans la table a partir de l'id en paramètre et fait ensuite ce que tu veux. |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1087 Localisation: Planete terre
|
Posté le : Jeu Mar 27, 2008 20:15 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Je vous remercie pour vos réponses mais je dois avoué avoir du mal, alors je teste, je teste ...et j'ai mal au crane ^^.
Question peut être conne mais question quand même:
Peut on tester sa avec juste 3 fichiers sans passer par sql genre index.php contenant :
| Code: |
<?php
$titre="création d'un site dynamique";
$id="2477";
echo'<a href="page.php?titre='.$titre.'&id='.$id.'">'.$titre.'</a><br>';
echo'<a href="'.$titre.'-'.$id.'.php">'.$titre.'</a>';
?>
|
Une page "page.php" pour recup les données et le htaccess avec la règle:
| Code: |
RewriteRule ^(.*)-([0-9])+\.php$ page.php?id=$2 [L]
|
 |
|
| |
|
 |
Alifba WRInaute discret

Inscrit le: 04 Fév 2008 Messages: 68 Localisation: Paris
|
Posté le : Jeu Mar 27, 2008 20:30 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Salut,
Ne serait-ce pas plus simple de mettre dans la base un champs contenant un identifiant textuel qui n'aurait alors ni accents ni caractères spéciaux ? |
|
| |
|
 |
phpmikedu83 WRInaute accro

Inscrit le: 06 Aoû 2005 Messages: 1259 Localisation: LE LAVANDOU
|
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1087 Localisation: Planete terre
|
Posté le : Ven Mar 28, 2008 1:34 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Houuu, je sent un ton narcissique la dessous ^^.
Je connais ce site et il est très bon... cependant il ne répond pas à mon interrogation. Moi ce qui me gène c'est le passage de variable contenant des accent,espace et autre caractère...
Si je fais un lien depuis mon menu:
| Code: |
$titre="création d'un site dynamique";
echo'<a href="page.php?titre='.$titre.'">'.$titre.'</a>';
|
Puis dans ma page de destination un truc du style $titre=$_GET["titre"]; et dans ma requête de récupération je fait un ("SELECT $titre FROM mon_champs WHERE titre=$titre") je me retrouve forcément n*ké puisque je vais me retrouvé avec des caractères bizarre dans l'url !
J'ai l'impression de ne pas me faire comprendre .. c'est le cas ?
J'ai beau utiliser urlencode et tout ce qui sens suis, mon titre transmit par url n'ai jamais le bon .
Bon, suite à sa, je veux passer une couche de rewriting pour obtenir une zolie url !
La seule solution que j'ai trouvé est d'ajouter un nouveau champ qui enregistre le titre en remplacent tout ce qui m'ennuie avec la fonction str_replace() de façon à obtenir un titre du genre creation_d_un_site_dynamique .
Je ne suis pas contre un dessin ou un exemple concret  |
|
| |
|
 |
nickargall WRInaute accro

Inscrit le: 13 Juin 2005 Messages: 2927 Localisation: Exilé au Groland à cause de Joe Dalton
|
Posté le : Ven Mar 28, 2008 2:00 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
Tu ne pourras pas récupérer un zouli titre en le récupérant depuis l'URL, vu que les caracteres spéciaux et les caracteres accentués auront été traités par les fonctions faites pour les modifier. et donc tu ne pourras pas récupérer un article de ta base de données en te basant sur ce titre modifiée passée dans l'URL.
Il te faut donc récupérer le contenu de l'enregistrement voulu dans ta base à partir de l' id que tu transmets par l'URL.
A partir de cet 'id' qui est unique, et que tu récupères facilement par l'URL, ben tu récupères l'enregistrement de la base de données qui correspond à cet ID. Ya pas plus simple.
| Code: |
$select="SELECT `id`,`titre`, `article`, [... tous les champs que tu veux récupérer...] FROM ma_table WHERE `id`=$id";
$result=mysql_query($select);
$row=mysql_fetch_array($result);
$titre=$row['titre'];
|
C'est le contenu de la base de données qui te donnera ton $titre, et non ce qui passe dans l'URL.
Bon bien sur si le titre n'est pas présent dans l'enregistrement de la base de données, c'est rapé.
Précision : Le passage du titre modifié dans l'URL n'a quasiment jamais pour vocation à être récupéré; seulement à être présent dans l'URL de la page (histoire que cette URL comporte des "mots" qui avec un peu de chance sont des mots clés demandés par les internautes...
Mais bon c'est tellement peu important d'avoir des mots clés dans l'URL que tu pourrais t'en passer ... vu les soucis que ça te cause
Autre précision : tu parles d'utiliser la réécriture d'URL pour en avoir une jolie (d'URL ), mais ce n'est pas le but de la réécriture d'URL. La réécriture va permettre au serveur de savoir que si tu appelles /une,zoulie,url-1.html ; il devra lui lancer la page /page.php?id=1. Le reste, "une,zouile,url " , tu t'en bats les steacks, comme disent les djeunes de mon patelin.T'as pas à la récupérer en $_GET, ça sert à rien.
d'ailleurs, la règle que je te proposais te permettait pas de récupérer le titre en $_GET, vu que ça sert à rien du tout :
| Code: |
RewriteRule ^(.*)-([0-9])+\.php$ page.php?id=$2 [L]
|
ya qu'un paramètre dans la partie droite de la règle, et c'est l'ID, qui est la seule chose que tu aies besoin de récupérer dans l'URL (bon voilà je l'ai dit 3 fois, ca devrait aller cette fois ci )
Et pour finir pour aujourd'hui, un lien sur une discussion abordant la transformation de chaine de caracteres pour virer les accents et caracteres spéciaux :
http://www.webrankinfo.com/forums/viewtopic_83127.htm
désolé je peux pas faire plus pour toi ... bon courage |
|
| |
|
 |
tryan WRInaute accro

Inscrit le: 20 Fév 2005 Messages: 1087 Localisation: Planete terre
|
Posté le : Ven Mar 28, 2008 2:27 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
| nickargall a écrit: |
| Tu ne pourras pas récupérer un zouli titre en le récupérant depuis l'URL, vu que les caracteres spéciaux et les caracteres accentués auront été traités par les fonctions faites pour les modifier. ... |
Bon au moins comme sa c'est clair!
| nickargall a écrit: |
A partir de cet 'id' qui est unique, qui est relié au titre de l'article, et que tu récupères facilement par l'URL, ben tu récupères le titre associé .. à partir de la base de données.
$select="SELECT `id`,`titre` FROM ma_table WHERE `id`=$id";
C'est le contenu de la base de données qui te donnera ton titre, et non celui passé dans l'URL |
Je suis daccord mais je vais me retrouver avec une url pourrit contenant uniquement l'id !
| nickargall a écrit: |
| Le passage du titre modifié dans l'URL n'a quasiment jamais pour vocation à être récupéré; seulement à être présent dans l'URL de la page (histoire que cette URL comporte des "mots" qui avec un peu de chance sont des mots clés demandés par les internautes... |
Et bien justement, c'est ce que je veux faire. Je préfère avoir une url du style /mes-mot-clef.php que /125.php et forcement, c'est la dessus que je bute .
| nickargall a écrit: |
Mais bon c'est tellement peu important d'avoir des mots clés dans l'URL que tu pourrais t'en passer ... vu les soucis que ça te cause  |
J'ai toujours crus comprendre le contraire ..
| nickargall a écrit: |
Enfin, tu parles de réécriture d'URL pour en avoir une jolie (d'URL ), mais ce n'est pas le but de la réécriture d'URL. La réécriture va permettre au serveur de savoir que si tu appelles /une,zoulie,url-1.html ; il devra lui lancer la page /page.php?id=1. |
Oui j'ai bien comprit sa mais je reste butté sur le faite qu'avoir une url contenant des mots clés en rapport avec le contenue de la page est important ...dailleurs sa ma toujours réussit de cette façon .
Je vais allez lire sa ... après ma nuit de sommeil ^^
| nickargall a écrit: |
désolé je peux pas faire plus pour toi ... |
C'est déjà pas mal , merci.
J'insiste un peut:Comment font alors les annuaires pour obtenir le titre du site dans la page alors qu'uniquement l'id est transmise ?? |
|
| |
|
 |
darkjukka WRInaute occasionnel

Inscrit le: 28 Avr 2007 Messages: 172
|
Posté le : Ven Mar 28, 2008 5:09 Sujet du message: Quelles sont les bases pour créer un site dynamique? |
|
|
| Code: |
function filter($in) {
$search = array ('@[B]@i','@[D]@i','@[F]@i','@[G]@i','@[H]@i','@[J]@i','@[K]@i','@[L]@i','@[M]@i','@[N]@i','@[P]@i','@[Q]@i','@[R]@i','@[S]@i','@[T]@i','@[V]@i','@[W]@i','@[X]@i','@[Y]@i','@[Z]@i','@[éèêëÊËE]@i','@[àâäÂÄA]@i','@[îïÎÏI]@i','@[ûùüÛÜU]@i','@[ôöÔÖO]@i','@[çC]@i','@[ ]@i','@[^a-zA-Z0-9_]@');
$replace = array ('b','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z','e','a','i','u','o','c','_','');
return preg_replace($search, $replace, $in);
} |
Ca te permet de virer les caractères spéciaux et les majuscules
Après pour tes url il te suffis de faire :
| Code: |
| <a href="'.$data['id'].'-'.filter($data['titre']).'.php"> |
et hop, ça roule! (C'est le système mis en place sur mon www ) |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
Définitions :
|
|