Modification d'un url pour la rendre plus propre

WRInaute discret
Bonjour à toutes et tous :wink:

Pour rendre mes adresses url plus propres et permettre ainsi par la même occasion un meilleur référencement, je voudrais donc pouvoir mettre en place une réécriture d'URL.

Depuis par exemple cette adresse :

http://localhost/blog/article.php?titre=Opera Mobile Emulator&id=31

Je voudrais arriver à ça :

http://localhost/blog/articles/Opera-Mobil-Emulator/31.html

Ceci depuis une requête à la base de données :

PHP:
<span class="syntaxhtml"><p><a href="article.php?titre=<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>&id=<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></a></p></span>

J'ai donc essayé la manière suivante :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^articles/([a-zA-Z0-9-])/([0-9]+).html article.php?titre=$1&id=$2 [QSA,L]

Mais cela ne marche pas...

Sauriez-vous pourquoi ? Car j'avoue ne pas être très à l'aise avec les expressions régulières...

Je vous remercie d'avance et vous souhaite une excellente journée.

Marc :mrgreen:
 
WRInaute occasionnel
hello

Tout simplement en créant le lien adapté...
soit : /articles/Opera-Mobil-Emulator/31.html
et non : /article.php?titre=<?php echo $donnees['titre']; ?>&id=<?php echo $donnees['id']; ?>
Le htacess ne va pas le faire tout seul !
 
WRInaute discret
Salut, merci pour ta réponse :wink:

Tu veux dire par là que le fichier .htaccess ne va pas savoir transformer l'ancienne url en la nouvelle ?

Tu stipules de créer le lien adapté, donc en extension .html, mais j'avoue ( bêtement ) ne pas savoir comment faire ou alors je ne t'ai pas bien compris...

Désolé de faire le boulet :oops:
 
WRInaute occasionnel
Tu dois le faire en deux étape...

D'abord changer les liens de ton site avec la forme que tu désires.
Perso, je te conseil la forme suivant pour le ref
/articles/31-Opera-Mobil-Emulator.html

soit :
Code:
<p><a href="/articles/<?php echo $donnees['id']; ?>-<?php echo transformation_url($donnees['titre']); ?>.html"><?php echo $donnees['titre']; ?></a></p>

Avec une fonction transformation_url() pour corriger les erreurs de syntaxe.
ex : éèê => représente e

Ensuite en htacess, le serveur pointera sur /articles/31-Opera-Mobil-Emulator.html
Paff, inconu....
Il regarde si sa correspond à quelques choses dans htacess...

Et la le serveur interprétera l'url : /article.php?titre=Opera Mobile Emulator&id=31

Voilà
 
WRInaute discret
Salut, merci beaucoup pour ta réponse :wink:

Alors j'ai essayé, voici ce que j'ai fais :

J'ai trouvé une fonction pour enlever les accents

PHP:
<span class="syntaxdefault">function transformation_url</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$str</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $charset</span><span class="syntaxkeyword">=</span><span class="syntaxstring">'utf-8'</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    $str </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$str</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> ENT_NOQUOTES</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $charset</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    <br />    $str </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'\1'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $str</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $str </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'#&([A-za-z]{2})(?:lig);#'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'\1'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $str</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// pour les ligatures e.g. '&oelig;'<br /></span><span class="syntaxdefault">    $str </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> preg_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'#&[^;]+;#'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $str</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// supprime les autres caractères<br /></span><span class="syntaxdefault">    <br />    return $str</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span>

Ensuite j'appelle cette fonction et je profite de mettre des tirets entre les mots

PHP:
<span class="syntaxdefault">$titre </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> transformation_url</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault">    $titre_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">' '</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'-'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $titre</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>

Et je demande la page

PHP:
<span class="syntaxhtml"> <li><a href="/articles/<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>-<span class="syntaxdefault"><?php echo $titre_url</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span>.html"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></a></li></span>

J'ai aussi modifié le htaccess de cette manière

RewriteRule ^articles/([0-9]+).* http://localhost/blog/article.php?id=$1 [QSA,L]

Je me suis inspiré de la page 9 du PDF de la page suivante : ftp://ftp-developpez.com/g-rossolini/tutoriels/seo/yogui-seo-reecriture-url.pdf

Maintenant les accents sont bien éliminés, les tirets mis entre les mots, mais j'obtiens une erreur 404.

Qu'aie-je fais de faux ?

Merci encore pour ta patience :mrgreen:
 
WRInaute discret
Salut :wink:

Ah oui évidemment, j'ai bien mis les fonctions dans la page dans laquelle le code HTML est écrit.

En l’occurrence, c'est la page menu.php .
 
WRInaute occasionnel
Regarde bien ton RewriteRule de ton htacess...
Es tu sur de toi ?
Moi je ne pense pas ^^

Vois-tu ton erreur ?
 
WRInaute discret
Au temps pour moi. Pourquoi ne pas utiliser un CMS, où tout ça est testé et approuvé depuis longtemps par plein de gens ? Mais si c'est juste histoire de se prendre la tête et de faire quelque chose d'intéressant de ses loisirs, je comprends.
Quoi qu'il en soit cette variable ne me semble pas à même d'afficher quelque chose de correct, parce qu'il n'y aura jamais d'espace vide dans une URL :
Code:
$titre_url = str_replace(' ', '-', $titre);
Les caractères invalides sont automatiquement transformés, comme suit :
http://www.php.net/manual/fr/function.urldecode.php

Après, il faudra faire une Regex au lieu d'un "str_replace" pour identifier les caractères à remplacer, un peu comme ça :
Code:
$url_a_passer = $donnees['titre'] . $donnees['id'];
$titre_url = preg_replace( '#%[[:xdigit:]]{2}#', '-', $url_a_passer );
Je suis sûr qu'il y a d'autres erreurs, mais je n'ai pas tout le code sous les yeux. Il faudrait d'abord prendre soin de bien comprendre comment se construit une URL:
http://www.php.net/manual/fr/book.url.php
 
WRInaute discret
Bonjour à vous :wink:

Romu =>

Eh bien non, je ne suis pas sûr de moi, mais pas seulement du htaccess, mais en généralité.

Vu que tu sembles prendre la direction d'une erreur au niveau de ce dernier, je vais me tourner de ce côté.

Afin que l'on soit bien d'accord, la ligne du htaccess que j'ai mise dans mon précédent message n'est qu'un extrait, j'ai bien entendu mis toutes les lignes, cela donnerait donc :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^articles/([0-9]+).* http://localhost/blog/article.php?id=$1 [QSA,L]

J'ai également essayé de :

- Raccourcir l'url comme ça blog/article.php?id=$1

- D'enlever d'abord le QSA, ensuite le L, ensuite les deux

- J'ai essayé de ne pas mettre de *

Je ne peux malheureusement pas essayer d'autres choses car je n'ai pas installé wamp sur mon ordi du boulot.

Je vais encore regarder, mais là j'avoue que je sèche...

ph.gras =>

Pour répondre à ta question, eh bien il s'agit de comprendre comment un blog fonctionne, il est évident qu'une fois que l'on sait comment cela fonctionne, on peut utiliser un CMS, mais dans mon cas j'avais envie de mettre la main à la pâte pour essayer de comprendre comment cela fonctionne, plus d'infos ici : http://www.siteduzero.com/forum-83-723550-p1-pourquoi-utiliser-un-cms- ... -meme.html

Pour la variable, eh bien cela fonctionne, pourquoi dis-tu qu'il ne peut pas y avoir d'espaces vides dans un URL ? D'ailleurs, ne sont sont-ils pas "transformés" en un truc du genre %20?

En tout cas merci !!
 
WRInaute occasionnel
ph.gras à raison : Les espaces vident ne sont pas recommandé...

Pour les URL j'utilise un script maison

Un tableau de caractère :

style : array('a'=>array('à', 'á', 'â', 'ã', 'ä', 'å')....)
Ensuite l'url tu le passes en minuscule
Ensuite avec str_replace tu regarde l'url via les accentes
Un petit trim
Tu remplaces les blanc en -


Pour le htacess :

Tu dois partir de l'url que tu veux

/articles/31-Opera-Mobil-Emulator.html

soit => /articles/(id)-(titre).html

Crois tu que cela ressemble à :
RewriteRule ^articles/([0-9]+).* http://localhost/blog/article.php?id=$1 [QSA,L]

Regarde mieux :

Code:
/articles/31-Opera-Mobil-Emulator.html
/articles/(id)-(titre).html
articles/([0-9]+).*
http://localhost/blog/article.php?id=$1
 
WRInaute discret
Salut :wink:

Eh bien c'était ( peut être naïvement ) voulu.

Je pensais qu'il n'était pas utile de prendre le titre, en fait je me suis inspiré de la page 9 du PDF mis en lien, donc celui-ci :

ftp://ftp-developpez.com/g-rossolini/tutoriels/seo/yogui-seo-reecriture-url.pdf

Il montre l'exemple de la recherche d'une page de profil.

Sur la première ligne du rewriteRule, il ne prends que le numéro du profil, c'est tout.

Pour les espaces vides, ils ne sont normalement pas transmis dans l'URL vu que justement ils sont traités par la fonction qui remplace ces derniers par un tiret.

Ou alors je prends le problème par le mauvais côté...

En tout cas, je patauge dans la semoule :D

Merci pour votre patience !!
 
WRInaute discret
Oui, c'est effectivement mon impression, le problème est pris du mauvais côté. D'abord, il faut écrire une fonction qui envoie une chaîne de caractères adaptée en URL. Puis, donner les bonnes instructions à Apache pour qu'il balance une chaîne de caractère en concordance avec ce que retourne la fonction, et enfin tester tout ça quelque part sur les pages correspondantes dans un champ de test.
Je pense que la manière de procéder de Romu est la bonne. Je suppose aussi, à voir comment les codes sont proposés, qu'il doit y avoir une grosse lacune dans le système de fichiers PHP du site.
 
WRInaute discret
Salut :wink:

Afin que je comprenne bien, laisses moi t'expliquer comment j'ai saisis la chose et corriges moi si je me trompe.

Cela me permettra également d'écrire un article dans mon blog quand il sera au point :mrgreen:

Nous avons une page ( menu.php dans mon cas ) qui propose un certain nombre de liens vers des articles.

On va donc prendre le lien dirigeant vers l'article Opera Mobile Emulator.

En temps normal, si je n'avais pas voulu prendre en compte la réécriture d'url, je mettrais ça :

PHP:
<span class="syntaxhtml"><li><a href="article.php?id=<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span>"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></a></li></span>

Je transmets donc uniquement le numéro de l'id correspondant à l'article demandé.

Si maintenant je veux utiliser la méthode de la réécriture d'url, je vais utiliser la méthode de Romu.

PHP:
<span class="syntaxhtml"><p><a href="/articles/<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>-<span class="syntaxdefault"><?php echo transformation_url</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">]);</span><span class="syntaxdefault"> ?></span>.html"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></a></p></span>

Cela permet ainsi de "rentrer" le titre de l'article stocké dans la base de données dans l'url permettant d'une part à l'utilisateur de lire une url agréable et de permettre également aux moteurs de recherches de référencer la dite page.

Comme le titre de l'article est le même qui sera affiché dans la page demandée, il peut contenir des caractères accentués et surtout des espaces entre les mots.

Nous allons donc utiliser des fonctions php pour envoyer une url "propre".

Par exemple, passer de ça :

le régulateur de pression

A ça :

le-regulateur-de-pression

Si je prends un exemple concret ( en utilisant les fonctions que j'ai citées plus haut dans un précédent message ), en cliquant sur le titre Le régulateur de pression de mon blog, l'url devient ceci :

Code:
http://localhost/articles/30-Le-regulateur-de-pression.html

C'est là que je ne suis pas sûr de comprendre, à quoi sert-il de prendre en compte également le titre alors qu'en soi il ne sert à rien, ormis d'être affiché d'une manière visible dans l'url, tandis que le chiffre également présent sera quand à lui utile pour retrouver l'article désiré.

et enfin tester tout ça quelque part sur les pages correspondantes dans un champ de test.

Là tu veux dire qu'il faut effectuer un test pour savoir si l'article demandé existe bien et si cela n'est pas le cas, d'afficher un message d'erreur ?

Je suppose aussi, à voir comment les codes sont proposés, qu'il doit y avoir une grosse lacune dans le système de fichiers PHP du site.

Très certainement et je dirais même tant mieux, comme on dit, c'est en faisant des erreurs que l'on apprends et comme c'est justement mon but, eh bien je suis content :D

La seule difficulté réside sur le fait que les gens doivent visualiser le code de mon blog, pas facile facile... C'est pourquoi, le premier article de ce dernier expliquera son fonctionnement ( avec tous les codes expliqués au fur à et mesure ), je corrigerais dans la foulée le code et par la même occasion l'article ( tout en conservant une copie de l'original avec les erreurs, comme ça les visiteurs sauront ce qu''il ne faut pas faire ).

Désolé de vous faire perdre du temps... :roll:

Mais merci de votre aide, j'apprécie beaucoup !
 
WRInaute discret
C'est bien ce que je craignais. Il manque plein de choses dans ton approche. Un langage informatique tel que PHP permet d'écrire un certain nombre d'articles sans avoir à toucher à chaque fois au code. Il permet d'organiser les pages et d'effectuer bon nombre d'opérations sans que l'utilisateur soit contraint de pondre une ligne de code. Les CMS bien organisés proposent donc :
1). Des pages fixes avec du code entre des balises (menu.php),
2). Des pages fixes avec une interface de publication, une boîte de texte comme pour poster sur ce forum,
3). Plein de pages de code qu'on n'ouvre que pour le modifier, et qui servent à organiser tout le système.

Quand tu écris un article dans l'interface, il sera envoyé dans la base de données. Quand tu le publies, il sera affiché de manière différente dans une boucle, selon la page (index, article, rubrique, tag, recherche, etc.), et non comme tu le proposes.

Je te conseille vivement de ranger ton idée dans un tiroir quelque temps, et de charger un CMS sur ton serveur, pour regarder un peu comment ça fonctionne. Là, tu es en train de réinventer la roue ! Je crois que tu vas perdre beaucoup de temps à créer ton petit CMS perso, et tâtonner pour des trucs qui sont expliqués de façon redondante, mais parcellaire sur le Web.

Quand tu auras vu le nombre de fichiers qu'il y a dans une usine à gaz bas de gamme comme WordPress, rien que pour afficher correctement une dizaine d'articles, avec des images et des vidéos, tu mettras encore toutes tes factures d'abonnement Internet par dessus le dossier CMS Perso, pour ne plus avoir à y jeter un coup d'oeil…
 
WRInaute discret
Salut :wink:

J'ai un livre de Simon Kern concernant wordpress, je pense donc le lire.

En attendant, je t'ai mis ci-dessous le code de 2 pages de mon blog, la première est la page blog.php qui affiche les 5 derniers articles, tandis que le deuxième est la page article.php qui affiche l'article désiré après avoir cliqué sur le lien de la page blog.php.

Dis moi stp si le code peut tenir la route ou alors s'il faut vraiment tout revoir.

Je comprendrais si tu n'as pas le temps !

Merci en tout cas :mrgreen:

PHP:
<span class="syntaxhtml"><span class="syntaxdefault"><?php<br />session_start</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">?><br /></span><!DOCTYPE html><br /><html lang="fr"><br />  <head><br />   <br />    <title>La partie blog de Marc Schaefges</title><br />    <br />    <meta charset="utf-8"><br />    <meta name="description" content="Articles divers sur différents domaines me passionnants, tel que l'informatique, l'électronique, les sites internet, la mécanique automobile, etc..."><br />    <meta name="keywords" content="Région Morgienne, Vaud, Suisse,informatique, électronique, mécanique automobile,"><br />    <meta name="author" content="Marc Schaefges"><br />    <meta name="geo.placename" content="Morges, Vaud, Suisse"><br />    <meta name="viewport" content="width=device-width"> <br />    <link rel="stylesheet" media="all" href="screen.css"><br /><br />   </head><br />   <br /><body><br /><br /><!-- On déclare les nouveaux éléments html5 pour internet explorer --> <br />    <br /><!--[if lt IE 9]><br />    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>  <br /><![endif]--><br /><br />    <header><br />        <div class="gauche_header"><br />        <br />            <h1><a href="">Marc Schaefges</a></h1><br />            <h2 class="titre">La partie blog....</h2><br />            <br />        </div><br />        <br />        <div class="droite_header"><br />        <br />        <nav class="menu_principal" role="navigation"><br /><br />          <ul><br />            <li><a href="index.php">Accueil</a></li><br />            <li><a href="blog.php" class="actuel">Blog</a></li><br />            <li><a href="contact.php">Contact</a></li><br />          </ul><br />          <br />        </nav><br />            <img class="voiture" src="images/nissan.png" alt="image d'une voiture" /><br />        <br />        </div><br />    </header><br />    <br /><div class="middle"><br />    <br />    <aside><br />        <section class="haut"><br />            <h1 class="categories">Catégories</h1><br /><br />        <nav class="sous_menu" role="navigation"><br />          <ul><br />            <li><a href="menu.php#mecanique">Mécanique auto</a></li><br />            <li><a href="menu.php#informatique">Informatique</a></li><br />            <li><a href="menu.php#electronique">Electronique</a></li><br />            <li><a href="menu.php#divers">Divers</a></li><br />          </ul><br />        </nav>    <br />        <br />        </section><br />             <br />        <section class="milieu"><br />            <h2 class="articles_hasard">Articles au hasard</h2><br />             <nav class="menu_hasard" role="navigation"><br />              <ul><br />              <span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">try<br />{<br /></span><span class="syntaxdefault">    <br />    $pdo_options</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">ATTR_ERRMODE</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">ERRMODE_EXCEPTION</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    $bdd </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new PDO</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'mysql:host=localhost;dbname=blog'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'root'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $pdo_options</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"SET NAMES 'utf8', lc_time_names = 'fr_FR'"</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// JEU DE CARACTERES UTILISE ET heure locale format Français<br /></span><span class="syntaxdefault">    <br />   $reponse </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SELECT id, titre FROM articles ORDER BY RAND() LIMIT 7'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        <br />            <br />            <br />    <br />   <br />    while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetch</span><span class="syntaxkeyword">())<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    ?><br /></span>       <li><a href="article.php?id=<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span>"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></a></li><br />    <span class="syntaxdefault"><?php<br />    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    <br />    $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">closeCursor</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Termine le traitement de la requête<br /><br /></span><span class="syntaxkeyword">}<br />catch(</span><span class="syntaxdefault">Exception $e</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// En cas d'erreur précédemment, on affiche un message et on arrête tout<br /></span><span class="syntaxdefault">    die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Erreur : '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">getMessage</span><span class="syntaxkeyword">());<br />}<br /><br /><br /></span><span class="syntaxdefault">?><br /></span>                </ul><br />             </nav>    <br />        </section><br />        <section class="bas"><br />        <h1 id="newsletter">Abonnez-vous à ma newsletter</h1><br />        <form action="newsletter.php?page=blog.php" method="post"><br />        <input class="mail_newsletter" type="text" name="mail_newsletter" id="mail_newsletter" value="Votre adresse mail" required title="Une adresse mail est requise!" /><br />        <button class="newsletter">Go !</button><br />        </form><br />        <span class="syntaxdefault"><?php<br />    if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">]))<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        echo $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        unset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}</span><span class="syntaxdefault">  <br />  ?><br /></span>        </section><br />        <br />    </aside><br />    <br />    <section class="content"><br />     <h1 class="derniers_articles">Articles brûlants</h1><br /><span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">try<br />{<br /></span><span class="syntaxdefault">    <br />    <br />    <br />  $reponse </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SELECT COUNT(commentaires.id) as nb, DATE_FORMAT( articles.date_creation, \'%d/%m/%Y à %Hh%i\') AS date, articles.date_creation, articles.id, articles.titre, articles.article <br />                        FROM articles<br />                        LEFT JOIN commentaires ON articles.id = commentaires.article<br />                        GROUP BY articles.date_creation, articles.id, articles.titre, articles.article<br />                        ORDER BY articles.id DESC limit 5'<br /></span><span class="syntaxdefault">                        </span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">                        <br />while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetch</span><span class="syntaxkeyword">())<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nb'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> 1 </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        $nombre_commentaire </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'commentaire'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        else<br />        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        $nombre_commentaire </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'commentaires'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        ?><br /></span>        <article class="article"><br />            <h2 class="titre"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></h2><br />            <h3 class="date_creation"><time datetime="<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'date_creation'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>" pubdate="pubdate"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'date'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></time></h3><p><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'nb'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">' '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$nombre_commentaire</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span> </p><br />            <span class="syntaxdefault"><?php $contenu </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'article'</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 500</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Affichage des 500 premiers caractères d'un article et rajout de 3 points à la fin...<br /></span><span class="syntaxdefault">            $contenu </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">" ...<br/>"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">?><br /></span>            <p><span class="syntaxdefault"><?php echo $contenu</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">?></span></p><br />            <p><a href="article.php?id=<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>">Découvrir la suite</a></p><br />        </article><br />        <hr><br />        <br />    <span class="syntaxdefault"><?php<br />    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    <br />    $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">closeCursor</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Termine le traitement de la requête<br /><br /></span><span class="syntaxkeyword">}<br />catch(</span><span class="syntaxdefault">Exception $e</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// En cas d'erreur précédemment, on affiche un message et on arrête tout<br /></span><span class="syntaxdefault">    die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Erreur : '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">getMessage</span><span class="syntaxkeyword">());<br />}<br /><br /></span><span class="syntaxdefault">    ?><br /></span>           <br />    </section><br />    <br /></div><br /> </body></span>

PHP:
<span class="syntaxhtml"><!DOCTYPE html><br /><html lang="fr"><br />  <head><br />   <br />    <title>La partie blog de Marc Schaefges, bienvenue !</title><br />    <br />    <meta charset="utf-8"><br />    <meta name="description" content="Articles divers sur différents domaines me passionnants, tel que l'informatique, l'électronique, les sites internet, la mécanique automobile, etc..."><br />    <meta name="keywords" content="Région Morgienne, Vaud, Suisse,informatique, électronique, mécanique automobile,"><br />    <meta name="author" content="Marc Schaefges"><br />    <meta name="geo.placename" content="Morges, Vaud, Suisse"><br />    <meta name="viewport" content="width=device-width"> <br />    <link rel="stylesheet" media="all" href="screen.css"><br /><br />   </head><br />   <br /><body><br /><br /><!-- On déclare les nouveaux éléments html5 pour internet explorer --> <br />    <br /><!--[if lt IE 9]><br />    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>  <br /><![endif]--><br /><br />    <header><br />        <div class="gauche_header"><br />        <br />            <h1><a href="blog.php">Marc Schaefges</a></h1><br />            <h2 class="titre">La partie blog....</h2><br />            <br />        </div><br />        <br />        <div class="droite_header"><br />        <br />        <nav class="menu_principal" role="navigation"><br /><br />          <ul><br />            <li><a href="index.php">Accueil</a></li><br />            <li><a href="blog.php">Blog</a></li><br />            <li><a href="contact.php">Contact</a></li><br />          </ul><br />          <br />        </nav><br />            <img class="voiture" src="images/nissan.png" alt="image d'une voiture" /><br />        <br />        </div><br />    </header><br />    <br /><div class="middle"><br />    <br />    <aside><br />        <section class="haut"><br />            <h1 class="categories">Catégories</h1><br /><br />        <nav class="sous_menu" role="navigation"><br />           <ul><br />            <li><a href="menu.php#mecanique">Mécanique auto</a></li><br />            <li><a href="menu.php#informatique">Informatique</a></li><br />            <li><a href="menu.php#electronique">Electronique</a></li><br />            <li><a href="menu.php#divers">Divers</a></li><br />          </ul><br />        </nav>    <br />        <br />        </section><br />             <br />        <section class="milieu"><br />            <h2 class="articles_hasard">Articles au hasard</h2><br />             <nav class="menu_hasard" role="navigation"><br />              <ul><br />              <span class="syntaxdefault"><?php<br />              session_start</span><span class="syntaxkeyword">();<br />try<br />{<br /></span><span class="syntaxdefault">    <br />    $pdo_options</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">ATTR_ERRMODE</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">ERRMODE_EXCEPTION</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    $bdd </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new PDO</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'mysql:host=localhost;dbname=blog'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'root'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $pdo_options</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">exec</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"SET NAMES utf8, lc_time_names = 'fr_FR'"</span><span class="syntaxkeyword">);</span><span class="syntaxcomment">// JEU DE CARACTERES UTILISE ET heure locale format Français<br /></span><span class="syntaxdefault">    <br />    <br />      $reponse </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SELECT id, titre FROM articles ORDER BY RAND() LIMIT 7'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    <br />   <br />    while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetch</span><span class="syntaxkeyword">())<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    ?><br /></span>       <li><a href="article.php?id=<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span>"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></a></li><br />    <span class="syntaxdefault"><?php <br />     </span><span class="syntaxkeyword">}</span><span class="syntaxdefault">     <br />    $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">closeCursor</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Termine le traitement de la requête<br /></span><span class="syntaxdefault">        ?><br /></span>            </ul><br />             </nav>    <br />        </section><br />        <section class="bas"><br />        <h1 id="newsletter">Abonnez-vous à ma newsletter</h1><br />        <form action="newsletter.php?page=article.php?id=<span class="syntaxdefault"><?php echo $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span>" method="post"><br />        <input class="mail_newsletter" type="text" name="mail_newsletter" id="mail_newsletter" value="Votre adresse mail" required title="Une adresse mail est requise!" /><br />        <button class="newsletter">Envoyer !</button><br />        </form><br />        <span class="syntaxdefault"><?php<br />        if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">]))<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        echo $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        unset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}</span><span class="syntaxdefault">  <br />        ?><br /></span>        </section><br />    </aside><br />    <br />    <section class="content"><br />    <span class="syntaxdefault"><?php <br />     if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"id"</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!empty(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]))<br /></span><span class="syntaxdefault">     </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">     $reponse </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SELECT DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%i\') AS date_creation, titre, article FROM articles WHERE id=\''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">'\''</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    <br />     while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetch</span><span class="syntaxkeyword">())<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    ?><br /></span>        <h1 class="derniers_articles"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></h1><br /><br />        <article class="article"><br />            <h3 class="date_creation"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'date_creation'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></h3><br />            <span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'article'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?><br /></span>            <hr><br />            <p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/"><img alt="Licence Creative Commons" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /><br />            </a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Dataset" property="dct:title" rel="dct:type">L'article, <strong><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></strong></span> de <br />            <a xmlns:cc="http://creativecommons.org/ns#" href="http://localhost/blog/blog.php" property="cc:attributionName" rel="cc:attributionURL">Marc Schaefges</a> est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/"><br />            licence Creative Commons Attribution - Pas d&#39;Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé</a>.<br />Les autorisations au-delà du champ de cette licence peuvent être obtenues sur la page suivante <a xmlns:cc="http://creativecommons.org/ns#" <br />            href="contact.php" rel="cc:morePermissions">http://localhost/blog/contact.php</a>.</p><br />        </article><br />        <br />    <span class="syntaxdefault"><?php<br />     </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">     </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">     <br />    $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">closeCursor</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Termine le traitement de la requête<br /></span><span class="syntaxdefault">    ?><br /></span>        <article class="commentaires"><br />        <h1 id="ancre">Vos commentaires...</h1><br />        <span class="syntaxdefault"><?php<br />        <br />        if </span><span class="syntaxkeyword">(isset(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">]))<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        echo $_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">        unset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'alerte'</span><span class="syntaxkeyword">]);<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br />        $reponse </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">query</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'SELECT DATE_FORMAT(date_envoi, \'%d/%m/%Y à %Hh%i\') AS date_envoi, id, commentaire, site_internet, adresse_courriel, auteur FROM commentaires WHERE article=\''</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> </span><span class="syntaxstring">'\'ORDER BY id DESC'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        $bdd</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">exec</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"SET NAMES utf8, lc_time_names = 'fr_FR'"</span><span class="syntaxkeyword">);</span><span class="syntaxcomment">// JEU DE CARACTERES UTILISE ET heure locale format Français<br /></span><span class="syntaxdefault">         while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetch</span><span class="syntaxkeyword">())<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        <br />        ?><br /></span>        <p class="poster"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'commentaire'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></p><br />        <span class="syntaxdefault"><?php <br />        <br />        <br />        $image </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"http://2.gravatar.com/avatar/"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'adresse_courriel'</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">"?s=80"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">'<img src="'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$image</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'" alt="votre avatar"/>'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        <br />        <br />        ?><br /></span>        <p class="poste">Posté par <strong><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'auteur'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></strong>, le <span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'date_envoi'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span><br/><br />        Son site web : <a href="<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'site_internet'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span>"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'site_internet'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span></a></p><br />         <span class="syntaxdefault"><?php<br />        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        $reponse</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">closeCursor</span><span class="syntaxkeyword">();</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Termine le traitement de la requête<br /></span><span class="syntaxdefault">        ?><br /></span>        </article><br />        <br />        <hr><br />        <br />        <form id="comment" action="commentaires.php?id=<span class="syntaxdefault"><?php echo $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">?></span>" method="post"><br />        <label for="pseudo"><br />         Votre pseudo:<br />        </label><br />        <input type="text" name="pseudo" id="pseudo" required title="Un pseudo est requis!" /><br />        <label for="site_internet"><br />         Votre site internet:<br />        </label><br />        <input type="text" name="site_internet" id="site_internet"/><br />        <label for="adresse_courriel" title="gravatar permet l'affichage d'une image perso"><br />         Votre adresse mail:<br/><br />         ( pour gravatar )<br />        </label><br />        <input type="email" name="adresse_courriel" id="adresse_courriel"/><br />        <label for="annee"><br />         En quelle année sommes-nous ?<br/>( protection anti-spams ):<br />        </label><br />        <input type="text" name="annee" id="annee" required title="Veuillez svp rentrer l'année en cours!" /><br />        <label for="commentaire"><br />        Votre commentaire:<br />        </label><br />        <textarea required title="Veuillez svp laisser un message!" name="commentaire" id="commentaire" rows="10" cols="50"></textarea><br />        <button>Envoyer !</button><br />        </form><br /></section><br />    <br /></div><br /><span class="syntaxdefault"><?php     <br /></span><span class="syntaxkeyword">}<br />catch(</span><span class="syntaxdefault">Exception $e</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// En cas d'erreur précédemment, on affiche un message et on arrête tout<br /></span><span class="syntaxdefault">    die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Erreur : '</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">getMessage</span><span class="syntaxkeyword">());<br />}<br /><br /><br /></span><span class="syntaxdefault">    ?></span> <br /></body></span>
 
WRInaute discret
C'est l'histoire d'un mec… qui voulait construire une maison sans plans, ni fondations, sans parler des compétences ! Je pense que tu devrais t'embarquer dans des trucs plus simples, et avancer pas à pas. Parce que tu vas mettre beaucoup de temps pour aboutir à un résultat au mieux nul, mais plus sûrement bancal et bourré de failles et d'erreurs : http://youtu.be/_u21mxGnh54
 
WRInaute discret
Au moins cela à le mérite d'être clair, mais tant mieux, c'est ce que je voulais :wink:

En titre de conclusion, mon code ne tient pas du tout la route, ça j'ai compris.

Mais j'aurai voulu svp savoir pourquoi ?

Merci encore pour ta patience envers un cas comme moi :mrgreen:
 
WRInaute occasionnel
Effectivement, je comprend pourquoi tu ne t'en sors pas :mrgreen:
Bref, j'étais comme toi au début et en 1an de temps, la poo et MVC sont devenu mes amis :)
J'en suis a la V3 de mon site avec un CMS maison qui tourne assez bien ne perd pas courage !!!

Je te conseil d'abandonner le procédural direct avec php.
Avant tout essaye de dégroupé ton code pour tendre vers le MVC.
Apprend a faire un fichier php pour le php et un fichier html pour le html...
En utilisant aussi un loyout :p Sa évide d'écrire page par page le design...

Car la le code est indigeste :oops:

Pour en revenir au URL:
EN gros ce qui ne va pas et que dans ton code html, il y a encore des ?id=
Tu n'en a plus besoin car tu veux réécrire ton code !!!
En faite, l'url tu fais ce que tu veux avec... mais le but et que l'url soit référencé Google, d'ou le id titre :D
Sauf qu'il faut comprendre l'action du serveur....

Je mes dans mon code HTML ma nouvelle url => factices
Poufff le serveur va savoir qu'elle existe pas...
Il va regarder ton htacess et dire quoi ?

Voici l'url que je veux et que je m'oblige à mettre sur mon site :
/articles/31-Opera-Mobil-Emulator.html
elle est donc en toute bonne logique égal à :
/articles/(id)-(titre).html
soit :
/articles/(numéro)-(suite de mot avec des -).html
soit avec mes amis les expressions régulières : (si je me rappelle bien :oops: )
/articles/([0-9]+)-([a-z0-9-]+).html

Soit dans le htacess
Code:
RewriteEngine on
RewriteRule ^/articles/([0-9]+)-([a-z0-9-]+).html /article.php?id=$1&titre=$2 [QSA,L]

EDIT :
Tu récupéres GET id pour savoir l'article et get titre pour vérifier si c'est la bonne url :wink:
Au moins tu ne fera pas de duplica de contenu

Je pense que c'est une bonne approche :mrgreen:
Pour la fonction de tes liens je te laisse faire ;-)

Au fur est a mesure de ton apprentissage, tu verras que le mieux et de renvoyer toutes URL vers ton index.php
Après il se débrouille seul pour te redonner la vue :p

PS: Tu ne déranges pas, on est tous les pour apprendre et partager ces connaissances. :wink:
 
WRInaute discret
Salut et merci encore pour ton aide et surtout pour ta patience :wink:

J'avais effectivement entendu parler du modèle MVC, je vais donc m'y plonger plus en détails.

Mais une petite question, le code que j'ai écris ( pour autant que je l'adapte en MVC ) n'est pas si mauvais ?

Bien entendu en faisant fi des gestions d'erreurs et de risque de failles et d'injection.

En ce qui concerne le développement en procédural, je pense que dans un premier temps je vais continuer comme ça et je réserverais la POO pour les versions futurs de mon site, car je pense que j'ai déjà du boulot avec le MVC et que la programmation orientée objet est encore floue pour moi. :mrgreen:

Pour les urls, je commence à saisir gentiment ( mais sûrement ), mais par contre je ne comprends pas cette phrase :

Au fur est a mesure de ton apprentissage, tu verras que le mieux et de renvoyer toutes URL vers ton index.php
Après il se débrouille seul pour te redonner la vue :p

J'ai lu hier soir une partie du chapitre du livre du zéro consacré à PHP et MYSQL, plus particulièrement sur l'architecture MVC, ils ont donc 3 répertoires, modèle, vue, contrôleur et en dehors, ils sont laissés un fichier index.php, est-ce qu'il s'agit de ce fichier dont tu parles ?

En tout cas merci encore et encore :wink:
 
WRInaute occasionnel
De rien, Si tu as d'autre soucis... Hésite pas, même en PV...
C'est ainsi que les communautés grandissent :D
Puis je peux te passer l'adresse de mon site pour que tu vois l'évolution du miens de site qui a débuté comme toi :D

Revenons à nos moutons :D

Code:
Mais une petite question, le code que j'ai écris ( pour autant que je l'adapte en MVC ) n'est pas si mauvais ?

Si je re-Regarde ton code...
Tu vas surement avoir des soucis rapidement 8O

Code:
if (isset($_GET["id"]) && !empty($_GET['id']))
     {
     $reponse = $bdd->query('SELECT DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%i\') AS date_creation, titre, article FROM articles WHERE id=\'' . $_GET['id'] . '\'');

Ok un test pour savoir si get id existe, mais tu es sur que l'id sera un nombre ? si l'utilisateur le change... boom code HS
En plus de la façon que tu as fais...
Tu es peu te faire hacker :oops:
PDO c'est bien, mais tu dois apprendre à l'utiliser !
La ! tu dois utiliser les objets préparés...

Code:
$requete=$pdo->prepare('SELECT * FROM base WHERE id =:id');
		$requete->bindValue(':id', $id, PDO::PARAM_INT);
		$requete->execute();
		while($result = $requete->Fetch(PDO::...........

En gros :D

Ensuite, prudence ! tu n'es pas sur que l'utilisateur renvoie que du texte ou autre....
Alors plutôt que de faire echo $contenu... tu dois sécuriser au mieux... car un peu de JS et je peux renvoyer sur un site pirate...

utilise
Code:
echo htmlspecialchars($contenu);

Voilà pour les exemples rapide que je peux te donner.....


Pour l'index....
C'est pas compliqué...

Tu dis au serveur... toutes les URL n’existent pas....
Comment faire dans ce cas ?
Tout simplement avec ton htacess... tu lui dis que tout URL, plutôt que de suive l'architecture dossier, dois passer par index.php
Le but étant que l'url fictive, soit analyser par l'index et c'est lui qui dira quoi afficher :)

En gros pour : monsite.com/astuces/article/1
Il sera, qu'il dois afficher un article de la catégorie astuces avec l'id 1.

Cette méthode est plus facile de gestion pour le site, et tu gères mieux tes erreurs...


MVC modèle vue contrôleur

En pratique, l'index regarde l'url, il découpe, ici astuces...
Il regarde si un contrôleur existe : dans un dossier contrôleur par ex, fichier astuces_controleur.
Ensuite le contrôleur analysera le reste, je veux un article d'id 1 => Je vais chercher les info dans le modèle....
le modèle est ré-envoyé au contrôleur
=> Je réinjecte le tout à la vue 100% codé en html

J'envoie au navigateur du client...

La tu as un MVC et un code que tu peux gérer a 100%

Voili voilou :D
 
WRInaute discret
Salut salut :wink:

Alors oui bien volontiers pour l'adresse de ton site, je voulais te demander le lien, mais j'ai oublié...

Je suis sinon en train d'essayer de comprendre la PDO, mais rien à faire pour l'instant, je ne trouve pas un tutoriel qui soit clair...

Pour la sécurisation avec HTMLSPECIALSCHARS, pas de problème, je vais mettre ça en place !

Par contre, je suis vraiment désolé, mais le coup de l'url, je n'ai toujours pas compris... :roll:

Tu parles du fichier htaccess et du fichier PHP qui analyse l'URL, mais comment fait-il ?

En fait, c'est de savoir quand est-ce le htaccess agit et quand le fichier index.php agit .

Je suis vraiment désolé, cela est sûrement très simpl, mais je n'ai pas encore eu le déclic :wink:
 
WRInaute occasionnel
Quel est la partie que tu ne comprends pas ?

Car sa fait un peu loin lol Le week a été dure...

Pour la pdo: tu peux regarder sur le SdZ

Moi j'ai appris une grande partie sur ce site :wink:
 
WRInaute discret
Salut,

D'habitude le week-end doit tout être sauf dur :lol:

Tu as dis ceci :

Le but étant que l'url fictive, soit analyser par l'index et c'est lui qui dira quoi afficher

La question que je me pose, c'est comment le fichier index.php peut analyser l'url fictive ?

Car j'imagine que le htaccess n'a pas encore fais son boulot ?

Pour l'instant, je t'avoue que ce n'est pas clair pour moi, c'est même assez sombre :oops:
 
WRInaute occasionnel
:mrgreen: Je ne dirais mot :mrgreen:

Alors c'est très simple.

URL => monsite.com/astuces/article-5-blabla.html

Le navigateur envoi la requête au serveur
Apache regarde le htacess => Attention, tout dois passer par l'index !!!

=> l'index ? Que me demande t'on ?

Allez dans Astuce ? Ok, ma classe controleur existe ?

Oui, www/....blabla/controleur/astuce.class.php existe !!
OK alors on va regarder si la méthode (function de classe) article existe ?
Oui, elle existe ! avec les paramétres : 5-blabla.html
On veux donc l'article ayant une ID 5 avec le titre blabla.
Il existe ? Oui, On va chercher les info dans la classe modèle (www/....blabla/modele/astuce.class.php), on affiche la vue :mrgreen:

Euh, ça ressemble pas au MVC en POO ?
 
WRInaute discret
Salut salut :wink:

Merci encore pour ton aide !

Mais je pense que tu impliques la POO un peu précocement, car là j'ai de la peine avec le MVC, la POO sera la prochaine couche :D

Néanmoins, j'ai trouvé un article sur le SDZ qui me fait déjà voir plus clair, il s'agit du lien suivant : http://www.siteduzero.com/tutoriel-3-31452-adopter-un-style-de-program ... e-mvc.html

J'ai eu quand même un peu de difficultés à le saisir, je m'embrouille car il fait mention de plusieurs inclusion de fichier l'un dans l'autre.

Mais là cela commence à rentrer dans ma tête de pioche :wink:

Je suis actuellement en train de lire un article sur la PDO, d'ailleurs, l'article du SDZ n'en fait pas mention, c'est dommage.

En tout cas, un des premiers articles que j'écrirais sur mon blog consistera à expliquer d'une manière détaillée mais néanmoins simple tout ce que je suis en train d'apprendre, ceci afin d'en faire profiter d'autres qui seront dans mon cas actuel.

Je te tiens au courant de ma progression :D

Merci à toi !!
 
WRInaute discret
Salut Romu et tout le monde :wink:

Je voudrais avoir votre avis sur la base même de mon blog, voici comment il est actuellement :

La structure actuelle est la suivante :

repert10.jpg


1 page index.php

accuei10.jpg


sur laquelle la colonne de droite est actuellement remplie exclusivement de code HTML, sans PHP donc.

Par contre la colonne de gauche, en contient.

Le mot divers en haut correspond à un lien vers le menu, il n'y a pas de PHP à l'intérieur, par contre la liste "articles au hasard" et abonnez-vous à ma newsletter en contient.

La liste "articles au hasard" redirige vers la page blog.php afin d'afficher l'article sélectionné.

Le champ newsletter quand à lui redirige vers la page newsletter.php pour entrer l'adresse mail dans la base de données et redirige vers la page index.php avec une variable super globale pour afficher que l'adresse mail à bien été prise en compte.

1 page blog.php

blog12.jpg


La colonne de gauche est identique à la page index.php, mais la partie centrale affiche les derniers articles rentrés dans la base de données.

En cliquant sur "découvrir la suite", on est dirigé vers la page articles.php avec les commentaires en bas de page.

articl12.jpg


articl11.jpg


Pour l'affichage des commentaires, le formulaire dirige vers la page commentaires.php qui rentre le commentaire dans la base de données et redirige vers la page articles.php.

En ce qui concerne la page contact.php, pour l'instant je ne l'ai pas fini, mais le formulaire de contact dirigera vers la page traitement.php, enverra le mail et redirigera vers la page contact.php.

J'utilise aussi une page d'ajout d'articles, ajout.php qui utilise ckeditor pour la mise en forme du texte.

ajout10.jpg


Le formulaire dirige vers la page news.php qui va rentrer le nouvel article dans la base données.

En ce qui concerne le menu qui est sur toutes les pages ormis la page contact.php ( pour l'instant ), il dirige vers la page menu.php et qui dirige vers la page articles.php pour afficher l'article désiré.

menu10.jpg


Je comptais donc créer 3 répertoires modèle - vue - contrôleur .

Pour chaque page, je créerais un fichier dans chacun d'eux ( avec un fichier index.php frontcontrôleur ), par exemple comme ceci avec justes les pages accueil, blog et articles, mais toutes les pages y seront.

index.php

modèle/

index.php
blog.php
articles.php

vue/

index.php
blog.php
articles.php

contrôleur/

index.php
blog.php
articles.php

Que pensez-vous de ma première approche ? Car déjà là, il y a très certainement des choses à redires..

Merci beaucoup d'avance.

Marc :)
 
WRInaute occasionnel
Je vois que ton projet avance :)
Pourquoi ne le met tu pas en ligne ?

Que les personnes suivent les versions + ton évolution...

Le graphisme semble correcte :mrgreen:
Reste à voir la sémantique par la suite pour le réf.

Perso, CKeditor c'est bien, mais un éditeur perso, pour un cms perso c'est mieux :wink:
Car le code sera plus propre, même si le nouveau CKeditor à fait pas mal de progrès.


Avant de te lancer dans le MVC, je pense que tu devrais te lancer dans l'url rewriting.
Partir de /article?id=7 ) /article-7-titre.html :wink:
Pour ton évolution sa sera mieux :wink:

Ensuite, pour le reste tu dois reprendre par papier ce que tu veux et tout découper !
Déjà faire un layout soit le squelette de base de ton site soit :

.----------------.
| header |
-------------------
|menu|contenu|
-------------------
| Footer |
-------------------

Sa sera ta base
Après :

index
|--------> contrôleur
|----------------> accueil site
|----------------> blog
|----------------> articles
|----------------> commentaire
|--------> modèle
|---------------->Connexion BdD
|--------> vue
|---------------->layout
|---------------->index
|---------------->article


Après tout dépend de ton code !
Mais tu dois être logique. Tu es en procédural, mais tu veux en faire le moins possible...
Donc ton code ne dois pas se répéter !!
Fait des fonctions...
ex: le contrôleur regarde si l'url et ok. Il va chercher les news a récupérer par fonction, puis les envoi à la vue, boucle foreach et end.
 
WRInaute discret
Salut salut :wink:

Oui cela avance gentiment, suivant la motivation :mrgreen:

Pour le graphisme, content que je sois sur la bonne voie !

Pour le mettre en ligne, eh bien je ne sais pas trop, je ne risquais pas justement de me faire hacker ?...

En ce qui concerne ckedidor, tu voudrais que je développe moi-même un BBCODE ?

Mais le problème étant que je voudrais aussi pouvoir mettre de la coloration syntaxique à certains codes de mes articles, c'est possible tu crois ?

Ok pour l'url rewritting !

Dans la vue du modèle MVC que tu proposes, c'est quoi exactement le layout ? C'est la base du design ?

Merci à :D toi
 
WRInaute occasionnel
Moi aussi j'ai du mal en ce moment sur mes projets perso :lol:

Pour le Hack, il faut que tu sois sur de ton code...
Mais, vaut mieux le voir de suite...
Car si ton site devient populaire et que tu n'as plus le contrôle....

Après tu peux toujours demander un audit :mrgreen:

BBcode ou ce que tu voudras.
Euh, normalement tu peux faire ce que tu veux, c'est toi le codeur non ? :lol:
Tu peux aller voir mon forum, c'est mon éditeur ^^

layout = les bases du design, oui :mrgreen:
Ex: header, nav, footer
 
WRInaute discret
Salut :wink:

A voir pour la mise en ligne, je vais réfléchir, mais comme je ne suis pas sûr de mon code actuellement, c'est un risque que je ne suis pas sûr de vouloir prendre...

Ah oui concernant l'architecture MVC, moi qui pensais que je devais avoir le même nombre de fichier dans le contrôleur que dans le modèle par exemple, mais ce n'est pas forcément juste non ?

Le modèle renfermera les différentes requêtes à la base de données en plus de la connexion proprement dite à cette dernière non ?

J'ai sinon lu à un endroit que le modèle MVC pouvait être lourd et pouvait ralentir un blog dans le cas d'une forte affluence, tu en penses quoi ?

Ah oui j'ai essayé l'url rewriting, mais cela ne marche toujours pas, je vais commencer à m'arracher les cheveux qui me restent :lol:

J'ai utilisé le code de l'htaccess que tu m'as donné :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^/articles/([0-9]+)-([a-z0-9-]+).html /article.php?id=$1&titre=$2 [QSA,L]

Et utilisé ce code html :

PHP:
<span class="syntaxhtml"><li><a href="/articles/<span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'id'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span>-<span class="syntaxdefault"><?php echo $titre_url</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span>.html"><span class="syntaxdefault"><?php echo $donnees</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'titre'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></a></li></span>

Cela me marque Not Found..

Pourquoi cela ne veut-il pas fonctionner ?...
 
WRInaute occasionnel
Me faire réfléchir à cette heure :lol:

Avant d'aller plus loin, corrige déjà tes erreurs sinon sa servira a rien car tes bases ne seront pas assez solide...
Si tu veux de l'aide, je suis la :wink:

Ah oui concernant l'architecture MVC, moi qui pensais que je devais avoir le même nombre de fichier dans le contrôleur que dans le modèle par exemple, mais ce n'est pas forcément juste non ?

A Ben non :p
Après c'est un peu plus compliqué...
Le tous et de bien réfléchir pour la construction de ton code :p
Si tu es en procédurale, le MVC peut être utilisé, mais sera moins efficaces quand POO.

Le modèle renfermera les différentes requêtes à la base de données en plus de la connexion proprement dite à cette dernière non ?

Pas vraiement :mrgreen:
En gros, si je prend la structure que j'ai en POO
j'ai un dossier en plus, mon coeur du système en gros, ou une librairie supplémentaire.
elle me permet par ex de choisir le mode de fonctionnement de mon site...
En gros, j'utilise un patern que tu apprendra par la suite qui gére les dépendances :D
Comme cela, si je veux que mon CMS tourne sur tout type de BdD, je suis pret :p et sous leurs différentes forme, style MySQL, MySQLly, PDO....
Mais avec pdo tu peux faire des belles requêtes :p
ex une fonction qui contrôle ce que tu envoies et tu ne gères qu'avec ton modèle ton requête SQL, elle sera exécuté par un autre contrôleur librairie qui renverra tout à ta fonction :p

Dur à comprendre non ?
J'ai plus les idée clair dsl :lol:

Ensuite, tu peux avoir un modèle, visiteur et un autre manager :wink:

J'ai sinon lu à un endroit que le modèle MVC pouvait être lourd et pouvait ralentir un blog dans le cas d'une forte affluence, tu en penses quoi ?

Alors, je dirai que sa dépend du codeur et de sa façon de faire :D
En procédural par ex, tu charges tout, fonction........ en POO tu ne prends que ce que tu n'as besoin pour le bon fonctionnement de ton script.
Mais la ou tu gagnes avec le MVC, c'est la souplesse du code...
Car tu peux reprendre de partout ton modèle... si tu gères bien tes modèles...
Idem le contrôleur peut être redécoupé en plusieurs...


Ah oui j'ai essayé l'url rewriting, mais cela ne marche toujours pas, je vais commencer à m'arracher les cheveux qui me restent :lol:

C'est assez basique tu sais...
si tu connais bien les expressions régulaires PHP, c'est un peu la même chose ^^

Code:
<li><a href="/articles/<?php echo $donnees['id']; ?>-<?php echo $titre_url; ?>.html"><?php echo $donnees['titre']; ?></a></li>

Pour sa, je suis sur que tu utilises directement tes données... sans les retraiter !
id? sur que ce soit un Numérique ?
$titre ? tu es sur de ne rien oublier ???

surtout pour un URL !!!


Cela me marque Not Found..

Car pas de fichier qui correspond...
Ton url ac url et ID fonctionne ?

LA tu utilises pas le MVC du coup ?!!
La tu utilises plus le MVC du coup....
 
WRInaute discret
Salut :wink:

Tu as raison, je vais déjà corriger ce que je dois corriger, mais en passant outre tout ce qui touche au mvc et poo.

Histoire d'avoir une bonne base, car là franchement j'avoue que je nage complètement avec la logique MVC, je dois être nul car je n'y comprends vraiment rien du tout....

Pour l'url rewriting,

Pour sa, je suis sur que tu utilises directement tes données... sans les retraiter !

Je ne sais pas exactement ce que tu veux dire par là, mais je traite bien les données, car si je prends exemple de cette url :

PHP:
<span class="syntaxdefault">http</span><span class="syntaxkeyword">:</span><span class="syntaxcomment">//localhost/articles/30-Le régulateur de pression.html  &nbsp;</span><span class="syntaxdefault"></span>
Donc avec accents et espaces.

J'arrive à ça, c'est ce qui est envoyé au serveur :

PHP:
<span class="syntaxdefault">http</span><span class="syntaxkeyword">:</span><span class="syntaxcomment">//localhost/articles/30-Le-regulateur-de-pression.html &nbsp;</span><span class="syntaxdefault"></span>

Pour ce qui est de l'ID, non, je n'ai rien fais pour être sûr qu'il s'agisse d'un nombre, ce que je voulais avant toute chose, c'est que le la réécriture fonctionne et seulement après j'allais corriger les détails.

Mon fichier .htaccess ressemble à ceci maintenant :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^/articles/([0-9]+).* /article.php?id=$1 [QSA,L]

Je parts dans l'idée que le titre ne m'intéresse pas du tout, c'est juste le numéro de l''ID qui m'intéresse pour retrouver le bon article dans la base de données.

Logiquement et après les recherches que j'ai fais sur google, ce code devrait marcher...

Il faut que je prenne encore un peu de temps pour tenter de comprendre tout ce mic-mac...

Là je t'avouerais que j'en ai un peu marre, mais comme j'ai envie de comprendre, je vais persévérer car c'est mon caractère :wink:

Merci en tout cas pour ta patience infinie :mrgreen:
 
WRInaute occasionnel
Alors :D ,

Tu as raison, je vais déjà corriger ce que je dois corriger,

Bonne résolution :wink:

je dois être nul car je n'y comprends vraiment rien du tout...

Tout dépend, tu assimileras plus vite si tes bases sont plus costaux et si tu pratiques...
Faut juste pas aller trop vite...
Apprend à faire des fonctions, structurer un peu mieux ton code et tu verras sa ira beaucoup mieux.
Ex: un développeur est toujours fainéant :mrgreen: si tu as 2 lignes de code identique... c'est que tu codes mal :D
:arrow: En étant extrême bien sur !

Je ne sais pas exactement ce que tu veux dire par là, mais je traite bien les données, car si je prends exemple de cette url :

Ce que je sous entend, n'est pas forcément avec l'URL rewriting.
En faite, tout ce qui sera requête client ! Tu ne dois pas avoir confiance !

Un exemple :

http://localhost/articles/30-Le régulateur de pression.html => http://localhost/articles/30-Le-regulateur-de-pression.html

Déjà, une erreur ! Pas de MAJ !

Donc revient à :

http://localhost/articles/30-le-regulateur-de-pression.html

Rien me dit que l'utilisateur peut mettre :


Tu dois donc tout vérifier !
Soit
id => int
Titre => chaine de caractère

Pour terminer avec ton .htacess
Peux tu essayer :

RewriteEngine On
RewriteRule ^/articles/([0-9]+)$ /article\.php?id=$1 [L]
Ensuite tu construit un id = 1
Tu vas à l'adresse :
/articles/1
 
WRInaute discret
Tchô :wink:

Je vais revoir le site et te montrerait la structure quand j'aurai fini :mrgreen:

Pour l'url rewriting, oui j'avais compris qu'il fallait prendre en compte que les visiteurs pouvaient commencer à rentrer n'importe quoi, mais je ne m'en suis pas inquiété que la réécriture ne fonctionnait pas.

J'ai fais la modif dans le htaccess et cela ne marche pas...

On va bien y arriver :D
 
WRInaute occasionnel
Déjà dans un premier temps...

Sans La réécriture URL

si tu fais :

Code:
/article\.php?id=1

As-tu quelques choses ? Car c'est ton URL par défaut avec ton code !
Si tu n'as rien, c'est que de base, ton code ne va pas !!!!
 
WRInaute discret
Salut :wink:

Alors oui cela marchait, mais je vais te le confirmer ce soir.

Par contre, faut-il que j'essaye avec le \ avant le point de .php ?

Car ça, je n'ai pas essayé...
 
WRInaute occasionnel
Oupss, non non, je me suis planté dans le copier collé :mrgreen:

Une question aussi bête, as tu activé la réécriture ?

Sinon fais des URL complète !


Pour un test rapide :mrgreen:
Tu crées un dossier test /
dedans tu mets un fichier test.html
Avec dedans : <h1>GOOD !!</h1>

Un htacess avec :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu\.html$  /test/test.html [L]

Et tu te rend à l'adresse :

http://localhost/test/inconnu.html


Si c'est "GOOD !!" ton serveur est OK !

Alors il faut regarder le code htacess !!

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^/articles/([0-9]+)$ /article.php?id=$1 [L]

Tu copies colle et tu vas à l'adresse :

http://localhost/articles/1
 
WRInaute discret
Salut salut :wink:

Alors je viens d'essayer et cela ne marche pas, c'est marqué not found...

Donc c'est bien un problème avec le serveur, pour info j'utilise wampserver 2.0, la ligne d'apache rewrite module est activée.

Bizarre non ?
 
WRInaute occasionnel
Config wamp

Dé-commenter deux ligne dans "httpd.conf" à savoir:

LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c

clique sur l'icone de wamp dans la barre des taches pour sélectionne PHP/Configuration/tu coches les options : hort open tag et allow url fopen


Ensuite, dossiers

|-- /test/
|--------->test.html
|--------->.htacess


Essai :

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu\.html$  /test/test.html [L]

et


Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu.html$  /test/test.html [L]


http://localhost/inconnu.html



ou


Code:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^test\/inconnu\.html$  /test/test.html [L]


http://localhost/test/inconnu.html
 
WRInaute discret
Salut salut :wink:

Donc dans le fichier httpd.conf sous apache de wampserver,

Je n'ai pas tout à fais cette ligne :

LoadModule rewrite_module libexec/mod_rewrite.so

Mais celle-là que j'ai décommentée :

LoadModule rewrite_module libexec/mod_rewrite.so

Par contre je n'ai pas du tout celle-ci :

AddModule mod_rewrite.c

Ensuite, dossiers

|-- /test/
|--------->test.html
|--------->.htacess

Ok fais !


Code:
Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^inconnu\.html$  /test/test.html [L]

Ne marche pas ...


Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu.html$  /test/test.html [L]

Ne marche pas non plus...


Code:
Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^/articles/([0-9]+)$ /article.php?id=$1 [L]

Toujours pas, ceci à chaque fois en utilisant les liens que tu m'as donné.

Je pense presque installer la dernière version de wamp, tu en penses quoi ?
 
WRInaute occasionnel
Oui, met à jour Wamp et regarde bien ta config pour la réécriture...
Car sur mon serveur Web, j'ai pas de soucis...
Je viens de faire le test ;-)
 
WRInaute discret
Bon bon bon, je pense avoir trouvé ce qui n'allait pas...

Je n'ai pas eu le temps de tester hier soir, mais pendant la pause de midi, j'ai installé le dernier wampserver sur le pc du boulot et j'ai donc créé le dossier test.html.

J'y ai également copié le fichier .htaccess et quand j'ai essayé, cela me faisait la même chose que chez moi...

Par contre, j'ai cliqué sur sur localhost de wampserver, ensuite sur test et j'ai suis tombé sur le répertoire du dossier test, j'y ai vu que le fichier htaccess était en extension .txt

Je l'ai donc modifié en enregistrant dans notepad++ par ".htaccess" et maintenant cela fonctionne évidemment...

J'essayerais ce soir ou demain directement sur mon blog chez moi.

En tout cas désolé de la petite étourderie :roll:
 
WRInaute occasionnel
:lol: Y'a pas de mal

ça arrive à tout le monde...

Je n'y ai pas pensé en plus à cette erreurs :D

Bon courage pour la suite :wink:
 
WRInaute discret
Salut, comment ça va ? :wink:

Bon j'ai essayé, mais cela ne marche toujours pas ...

J'ai essayé de mettre à jour wampserver ainsi que de modifier le fichier htaccess sur l'ordinateur que j'ai chez moi et je n'arrive toujours pas à faire le simple test que tu m'avais donné à faire ( affichage good )...

J'ai donc pris les fichiers sur l'ordinateur que j'ai au boulot où ce test fonctionnait, mais en ce qui concerne mon blog, toujours pas...

J'ai essayé ces 2 possibilités :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^/articles/([0-9]+)$ /article.php?id=$1 [L]

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^/articles/([0-9]+).* /article.php?id=$1 [QSA,L]

Mais rien à faire... Je continue de chercher...
 
WRInaute occasionnel
Bonjour,

De retour des vacances :)
Tu peux poster sur mon site également pour que je réponde plus rapidement ^^

Pour ma part, j'ai utilisé Wampserver et j'ai pas eu de soucis !
Pourrais-tu re-décrire l'arborescence ?

As-tu effacé Wampsever pour le réinstaller ?
As-tu fais la config pour l'utilisation de la réécriture URL ???
 
WRInaute occasionnel
Ouep, je suis d'accord...
Mais pour un débutant, gestion de route... Moyen !
En plus, la demande de marcgsuisse est spécifique à son projet ;-)
 
WRInaute discret
Bonjour à vous :wink:

Désolé pour le retard de ma réponse, mais je travaille sur 2 projets en même temps et en plus je ne suis pas trop motivé ces temps :oops:

=> Romu

Pourrais-tu re-décrire l'arborescence ?

As-tu effacé Wampsever pour le réinstaller ?
As-tu fais la config pour l'utilisation de la réécriture URL ???

Je vais regarder et je te redis pour l'arborescence.

Pour wampserver, je crois bien l'avoir effacé complétement, mais il me semble que le répertoire www a subsisté à l'effacement, je travaille donc peut-être avec ce dernier avec le nouveau wamp.

Si tu parles des configurations dans le fichier de wampserveur, oui je l'avais fais.

Merci encore :mrgreen:
 
WRInaute occasionnel
Pas de soucis ^^

Je suis également sur pas mal de projet actuellement également donc pas de soucis.
Tes projets sont dans le web ?
Les neurones chauffent surtout avec ce temps.

Pour Wamp vire tout.
et retire le fichier c:\wamp\

Puis tu réinstalles :)
 
WRInaute occasionnel
Sur le nouveau site, j'ai un bug d'affichage de la partie droite.
Le bandeau noir du haut continu a droite après l'image. Normal ? en haute résolution.
Ensuite, j'ai un peu peur que ce soit un peu gros niveau lecture et autre...
La home me plait sinon ;)
 
WRInaute discret
Salut :wink:

Non non, pas du tout normal, mais je m'embrouille avec les média queries, mais je vais continuer à le développer et voir les différents problèmes l'un après l'autre.

Content que je fasse bonne voie avec le design.

Merci en tout cas :mrgreen:
 
Discussions similaires
Haut