Bonjour,

Ça fait plus d'un an que je cherche partout une réponse à ma question. C'est la première fois que je la pose sur un forum. J'espère que je serai clair.

J'ai un site de nouvelles. Mes manchettes sont sur ma page d'entrée et les nouvelles passent par un blog qui peut générer automatiquement une nouvelle page pour chaque nouvelle qui entre. Je n'aime pas cette dépendance au logiciel de blog. J'essaie de trouver le moyen que mon propre formulaire génère automatiquement une nouvelle page au titre qui sera donné à ma nouvelle. Je n'y arrive pas.

Je suis encore un néophyte avec mysql. Je m'y entends un peu (autodidacte) depuis plus d'un an. J'espère donc une réponse qui tiendra compte que je ne suis pas un expert.
Administrateur
Il faudrait pour cela utiliser l'url rewriting et utiliser une fonction PHP qui génère un titre "propre" (sans espaces, avec des tirets, des caractères non accentués). Le titre reste virtuel, seul l'ID compte.

Exempe :
http://www.alsacreations.com/actu/lire/671-desactiver-internet-explorer-windows-7.html

Ici on a l'article n°671 qui fait référence à cet enregistrement MySQL.
La réécriture d'url permet de ne pas tenir compte de ce qui dépasse, et de ne considérer que ce numéro.

En tout cas il faut décomposer ceci en tâches simples, car c'est difficile à résumer en quelques lignes.

1) Trouver une façon d'écrire les liens
2) Les afficher sur la page d'accueil
3) Les réécrire vers un fichier de script (PHP)
4) Traiter les informations obtenues (identifiant...)
5) Effectuer les requêtes correspondantes
etc...
Merci pour la réponse rapide. Je vais vérifier tout ça et faire ce que je peux. Je vous reviens là-dessus avec, je l'espère, un beau «j'ai enfin réussi».
OUF!
Ce n'est pas ce soir que je vais parler de réussite. Partout où je passe on parle de facilité en ce qui concerne le rewriting URL. Et c'est vrai avec un petit code de base pour faire des tests. Mais, comment appeler chaque article nouveau qui entre dans une base de donnée en ayant toujours le même gabarit de page?

Là, j'en perds mon latin. Les codes que je trouve pour rendre les url propres ne sont pas suffisamment explicites. En fait, on donne des exemples, à peu près toujours les mêmes un peu partout, avec quelques différences. Mais, comment écrit-on un .htaccess clair qui parte d'une page modèle et récupère chaque URL d'une base de donnée, je n'ai rien trouvé pour m'en sortir. Mais d'abord, comment écrit-on une URL propre? Puis comment on incorpore ça proprement sur cette fameuse page .htaccess...

Bon, j'ai la tête en feu. Un peu de sommeil et quelques-unes de vos explications me remettront sûrement sur la track demain!
Donne une URL type (genre monblog.com/pages.php?article=le-titre-du-jour&toto=truc) et tu trouveras bien une âme charitable pour te l'htaccessiser...

Sinon comme l'a dit Dew la démarche la plus simple consiste à :
- récupérer le titre
- le rendre conforme aux règles d'écritures url (pas d'espaces, pas d'accents, pas d'apostrophes, etc...) à l'aide d'une regex ou d'un str_replace (si PHP)
- "Et voilà le titre de l'article" => "et-voila-le-titre-de-l-article"
- tester l'adresse : monblog.com/pages.php?article=et-voila-le-titre-de-l-article

Si ça marche, l'étape suivante va consister à créer l'htaccess pour que tes liens et url deviennent "monblog.com/et-voila-le-titre-de-l-article" ou "monblog.com/article/et-voila-le-titre-de-l-article.html" ou tout ce que tu voudras.

A part ça, en ces temps de rentabilité immédiate, d'efficacité flux tendu et d'optimisation just-in-time je trouve que lire
Marc-André a écrit :
Ça fait plus d'un an que je cherche partout une réponse à ma question.

fait du bien Smiley smile
Modifié par Arsene (11 Mar 2009 - 08:01)
Merci encore pour la réponse. Et dire que je croyais cette chose plus simple. Je me disais que si je n'arrivais pas à trouver ce que je veux sur le web c'est que je n'avais pas les bons mots pour faire mes recherches. C'était vrai, mais pas entièrement.

Oui, plus d'un an. Quand j'ai l'impression d'avancer ça ne me dérange pas de travailler longtemps. Mais, j'avoue qu'à certains moments j'ai laissé tombé. Internet est une mer d'informations mais aussi un fouillis, un fourre-tout de forum sans fonds... Je n'en dis pas plus là-dessus.

Maintenant, je me lance dans le travail sur l'URL. J'ai déjà fait une petite recherche sur le str_replace ce matin. Ouf, encore une fois! N'y a t-il pas un tutoriel quelque part qui donne toute la démarche de A jusqu'à Z? (oui, un peu de facilité...)

Un élément inquiétant dans ta réponse:
a écrit :
Si ça marche, l'étape suivante

Parce que ça peut ne pas marcher? Et comment je fais pour savoir? Tout ce que j'écris se trouve dans une Base de donnée. Comment je fais pour tester sur un navigateur une URL comme celle que tu me suggères?
Bonjour,

C 'est toujours trés dur de savoir ou en est dans sa tête le demandeur Smiley eek

Alors tu vois je vais partir de zéro, puis décrire comment je ferais de A à Z

Si tu suis ma démarche et que sur un point tu butes, tu cris tu hurles du genre jusque l'étape XX tout va bien mais en YY comprends pas ...

Alors allons y: mais de façon élémentaire ... aprés tu prefectionneras !

1) Tu te fais une table MYSQL avec deux champs pour le moment,
un nom tres court (zone unique donc ta clé de recherche)
un texte (celui de l'article)
En attendant mieux (que tu te fasse un petit éditeur) tu te cree deux trois articles ...

2)Tu te fabrique un PHP que l'on pourrait appeler lecteur_articles.php

Il aurait cette structure (schematique)

<?PHP
if (isset($_GET["Larticle"])) $Larticle=htmlentities(trim($_GET["Larticle"]));
   else {
         header('Location:  http://www.TONSITE.com/index.php');
 
         exit;
         }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<!-- ============= ETC...
sans oublié tout ton haut de page menus Ensuite on arrive a -->

<div class="mon div principal contenant l article" >
<?PHP
$Flag1=mysql_connect($Serveur,$User,$Mdp)  OR die('Erreur connexion ');
$Flag2=mysql_select_db($MaBase) OR die('Erreur connexion ');
$result=mysql_query( "select * from MESARTICLES
         WHERE  nom = '$Larticle'  ");
      while ($row=mysql_fetch_array($result)) 
         {
          $texte= stripslashes($row['texte']);
         }
   mysql_close();
echo ("".$texte
."");?>
</div>
</body>
</html>


Voila c'est presque fini !! Smiley cligne

3) on conclu
Donc si j'ais fais un article "androide"

pour le voir dans cette page je mets dans mon menu

<a href="lecteur_articles.php?Larticle=androide" >Les androides</a>


Et la on va cacher ça !!

Facile tu veux (c'est toi qui le demande)
http://www.monsite.com/nvhg/2009/03/le-titre-d-une-nouvelle.php

Alors permets je te le changes un peut Smiley confused
http://www.monsite.com/inutile/voir-xxxxxxxxxxxxx.html



Options +FollowSymlinks
RewriteEngine on
RewriteRule ^voir-([a-z]*)\.html$  ../lecteur_articles.php?Larticle=$1 [L]


Houps le voila ton .htaccess

MAIS ON FAIT COMMENT ???

Tu crée le répertoire
http://www.monsite.com/inutile/
si http://www.monsite.com/ est la vrais racine de ton site web !

Dans ce répertoire tu ne mets AUCUN FICHIER SAUF LE .htaccess

dans la racine de ton web tu mets le PHP lecteur_articles.php


Voila tout est prêt Smiley biggrin

quand dans un lien de nimporte quel de tes PHP ou HTML
tu mettra

<a href="http://www.monsite.com/inutile/voir-androide.html" >Les androides</a>

Voila ce qui se passera ,
comme tu l'a mis dans ton lien il va aller chercher dans ton répertoire "inutile" voir-androide.html
mais la le htaccess va lui dire ah oui je connait, va donc a la racine lire
le php avec le paramétre androide !!! Smiley langue

Bon Courage
Bonjour,

Je lis ce sujet, on y parle d'URL Rewriting, et je n'arrive pas à m'empêcher de penser: «mais en fait le mec il cherche avant tout à afficher ses contenus, non?»

J'ai peut-être loupé l'info, j'ai sans doute lu de travers, mais à tout hasard je précise que:

1. Faire de la réécriture d'URL pour avoir des URL jolies, c'est bien. Mais la seule chose que la réécriture d'URL fait c'est prendre une URL du type /article/425/mon-titre et de la transformer (côté serveur, le visiteur ne voyant pas la manip) en, par exemple, /show_article.php?article_id=425. Voilà de quoi il s'agit. Tout le reste n'a rien à voir.

2. Le reste, c'est quoi? C'est tout ce qui fait un site web administrable: une base de données; un ou plusieurs scripts qui permettent d'insérer des données dans cette base ou de les modifier (là ça peut être assez complexe, allant jusqu'au système de gestion de contenu complet); un ou plusieurs scripts qui permettent de récupérer les contenus depuis la base de données en fonction de certains paramètres reçus, et qui génèrent du code HTML directement ou via un ensemble de templates (ce qui suppose donc un moteur de templates); une ou plusieurs feuilles de styles CSS pour la mise en forme des contenus.

Mais question sera donc: Marc-Andre, est-ce que toute la partie (2) ci-dessus est claire pour toi, voire déjà en place? Parce que si on te renseigne sur le (1) alors que le (2) n'est pas en place, ça ne sert pas à grande chose.
Comme je l'ai déjà dit, je ne suis pas un pro avec Mysql et PHP. Je me débrouille.

Je suis tout de même capable de faire un formulaire qui envoie les infos suivantes à la BDD:

- Date
- Titre
- Texte
- Url
- Image

Je suis aussi capable de récupérer ça via une page en PHP.

Par exemple, 95% de ce qui se trouve sur mon site www.lecartable.com est sur une base de donnée. Si vous voulez regarder, vous verrez que la section des manchettes (sous la date du jour, la température de mon village et le prix de l'essence) est dans ma base de donnée. Je la fais par formulaire. Mais, les liens conduisent sur des pages générées par le logiciel Dotclear. Je ne veux plus de Dotclear. Je veux continuer à faire moi-même tout le travail et faire en sorte que le résultat soit le même que par Dotclear. C'est à dire que chaque nouvelle que j'y mets, lorsque j'envoie le formulaire, génère sa propre adresse.

Je n'ai rien contre Dotclear, soit dit en passant. C'est un très bon logiciel. Sauf que j'ai besoin d'un peu plus de souplesse dans mes pages.

Je crois donc qu'il est possible que l'idée de script qui génère du code HTML via un ensemble de template soit la bonne. C'est à dire un gabarit où toutes les pages de nouvelles sont semblables sauf le texte de la nouvelle lui-même et l'adresse de la nouvelle, bien sûr! Chose que font automatiquement tous les logiciels de blogs comme Dotclear, Blogger, Wordpress, etc.

______

Quand je lis tout ce qu'a écrit Foxlerenard, j'ai l'impression que c'est ce que je veux sauf à la fin. Je ne peux pas écrire «Les Androïdes» d'avance puisque je ne sais jamais à l'avance quel sera le titre de la nouvelle que je vais publier. Je le sais au moment où je publie. Et c'est là que le script doit entrer en jeu. Dès que j'envoie le tout dans la base, elle doit générer un URL automatiquement et la page sur laquelle les lecteurs verront tout de suite la nouvelle.

Et merci beaucoup de l'attention et de la patience que vous mettez à m'aider. J'apprécie vraiment.
Marc-Andre a écrit :
Et c'est là que le script doit entrer en jeu. Dès que j'envoie le tout dans la base, elle doit générer un URL automatiquement et la page sur laquelle les lecteurs verront tout de suite la nouvelle.

Heu non, c'est pas comme ça que ça marche. Ce serait plutôt:
- j'enregistre mes nouvelles en base de données, avec au moins un identifiant, une date de publication, ce genre de choses;
- la partie «j'affiche une liste de nouvelles» sur ton site est en réalité un script qui interroge la base de données, par exemple pour lui demander les titres, dates de publication et identifiants des 10 dernières nouvelles, classées par date de publication décroissante;
- ce script s'occupe alors de traiter les données récupérées pour afficher une liste de liens.

Voilà pour les liens vers les articles. À toi de voir quel type d'URL tu veux utiliser. Imaginons que c'est simplement: /nouvelle.php?article=## (où les # représentent le numéro identifiant l'article).
Dans ce cas, le fichier nouvelle.php est un script qui interroge la base de données, pour lui demander la nouvelle dont l'identifiant est ##. Cette fois on récupère un seul enregistrement, mais pour cet enregistrement on récupère toutes les données disponible (titre, date de publication, texte de la nouvelle...), et on traite ces données pour générer le code HTML de la page.

Si tout cela te semble obscur, deux solutions:
- acquérir les compétences nécessaires pour que ça ne soit plus obscur (beaucoup de tutoriels à lire sur, mettons, les bases de PHP et MySQL, des bouquins à potasser...);
- utiliser un logiciel qui gère déjà ce genre de considérations (Dotclear...).

Bonne continuation. Smiley smile
a écrit :
Quand je lis tout ce qu'a écrit Foxlerenard, j'ai l'impression que c'est ce que je veux sauf à la fin. Je ne peux pas écrire «Les Androïdes» d'avance puisque je ne sais jamais à l'avance quel sera le titre de la nouvelle que je vais publier. Je le sais au moment où je publie. Et c'est là que le script doit entrer en jeu. Dès que j'envoie le tout dans la base, elle doit générer un URL automatiquement et la page sur laquelle les lecteurs verront tout de suite la nouvelle.


Bien sur car tu peux avoir une page de "menu" automatiques en complément de ce que je t'ais donné !
donc un simple PHP qui lit tout les articles et a chaque article fabrique le lien en utilisant les elements de la base de donnée,

Tu vois tu as tout ce qu'il faut, mais je pense comme Florent V. qu'il te faut potasser un peut, mais utiliser tous les matériaux que je t'ais donnés devrait t'aider a te jeter a l'eau et aprofondir
Bon courage Smiley biggrin
Alors un gros merci pour ce que vous m'avez donné jusqu'à maintenant. Je comprends qu'il faut que je mettes mes mains dans le cambouis (c'est comme ça que vous dites, je pense).

Je vois ce que je peux faire et reviendrai un de ces quatre vous en donner les résultats!

Merci encore!
Ok reviens donner des nouvelles Smiley biggrin
a écrit :
Je vois ce que je peux faire et reviendrai un de ces quatre vous en donner les résultats!
Merci encore!