Forum Clubic

[PHP] Problème avec un titre d'une page

Hello, je vous explique mon système en gros :

Dans ma page articles.php, j’ai un système en If get page= alors afficher ceci.

J’utilise ensuite l’url rewriting pour modifier articles.php?id=“creer_site” en articles-créer-un-site-web.html.

L’ennui est que dans mon titre de page (<title>) j’aimerais mettre le titre de l’article.

Si je met echo $get … il va m’afficher creer_site, ce qui est très moche.

Comment insérer le titre complet de mon article ?

Je cherche sans trouver hélas :frowning:

Bonne soirée :wink:

PS : lien pour que vous vous rendiez compte : http://www.jeoffrey54.com

Up, je n’ai toujours pas trouvé de solution a mon problème :frowning:

Jette un oeil à la variable $_SERVER[‘REQUEST_URI’].

$titre= $_GET[‘page’];
<title><?php echo $titre; ?></titre>

nan ? sinon sa depend si tu include le haut de page au tout debut ou dans les if :wink:

et avec ça : ?


$titre = $_SERVER['REQUEST_URI'];
$replace = array( '-' => ' ', 'article' => '', '.html?#39; => ''); // remplace les ?#39; par des simple quotes
$titre = strtr($titre, $replace);

Je viens d’essayer ton code InSiderZ :

Je met ce code avant le doctype (ligne 1):

$titre = $_SERVER['REQUEST_URI'];
$replace = array( '-' => ' ', 'article' => '', '.html?#39; => '');
$titre = strtr($titre, $replace);

Dans la balise title, je met echo $titre.

et j’ai cette erreur au final :

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ‘)’ in /****/articles.php on line 19

Quel est le problème ?

Ce serait pas cette ligne

$replace = array( '-' => ' ', 'article' => '', '.html?#39; => '');

qui pose problème ? Car avec Notepad++ il met tout en gris, et dés que je la supprime, tout reviens bien ! C’est pas trop normal sa ^^

J’ai pas lu le sujet, je passe juste pour corriger les erreurs SYNTAXIQUES d’InSiderZ :o !

$titre = $_SERVER['REQUEST_URI'];
$replace = array( '-' => ' ', 'article' => '', '.html?#39' => '');
$titre = strtr($titre, $replace);

Edit : zappé le point :sweet: !

non il y a bien un point avant html, sinon tu va avoir le point en fin de phrase. Par contre je te précise bien de remplacer ?#39; par un (c’est le forum qui a automatiquement modifié ce parametre dans mon code, pour la sécurité je pense). pense bien à remplacer cela et ça devrait marcher :wink:

Alors, le code marche :smiley:

Donc, quand je vais sur un article, j’ai bien le titre qui s’affiche normalement, sauf que j’ai un / avant le titre de la page :

Jeoffrey54 - / TItre article.

Deuxième chose, quand je vais sur Articles.php, j’ai comme titre : /s.php.

Comment modifier ces deux petits problèmes ?

Pour le deuxieme probleme, il te faut mettre une condition avec des if. Je regarderais plus tard au pire, là je dois filer. Pour le premier, rajoutes juste un slash avant article, comme cela :


$titre = $_SERVER['REQUEST_URI'];
$replace = array( '-' => ' ', '/article' => '', '.html' => '');
$titre = strtr($titre, $replace);

InSiderZ, le prince des solutions non régulières :miam:

Ca marche :smiley: :smiley:

Les titres s’affichent très bien merci InSiderZ

Reste plus que le problème de s.php sur la page articles.php (page défaut).

j’ai fait ça à la va-vite, pour que ça marche au moins dans son cas :stuck_out_tongue:

Jeoffrey > bêtement ça :

$titre = $_SERVER['REQUEST_URI'];
$replace = array( '-' => ' ', '/article' => '', '.html' => '', 's.php' => '');
$titre = strtr($titre, $replace);

Merci ca marche nickel !

@ bientôt :wink:

Bonne soirée !

Je crois que cette solution est bien trop compliquée :smiley: En plus je ne suis pas sûr que le REQUEST_URI soit fiable à 100%.

Une autre solution consiste à créer un fichier d’en-tête commun à toutes les pages, celui-ci contenant les balises HTML d’ouverture ansi que le <body>, mais aussi la balise <title>$titre</title>.
Il suffirait alors d’inclure cette page au début de toutes les autres, en modifiant la variable $titre juste avant.
Un exemple très rapide:

#Contenu du fichier header.php
<[doctype]>
<html>
<head><title>$titre</title></head>
<body>

Maitenant, avant d’afficher chaque page:


<?php
$titre="letitre";
include 'header.php';
// Là tu n'as plus qu'à afficher le contenu de ta page qui n'aura pas les balises <html> et <head>, bien sûr

En fait, si tu récupères le titre précédemment, cette méthode semble un peu moins bourrine que le templacement de caractères dans une chaine.

Si la seule source de ton titre est ton URL, alors il vaut mieux utiliser l’autre méthode.

J’avais pensé à cette méthode, mais j’utilise les GET dans une même page, cela ne pouvais dont pas marcher.

Je ne pouvais pas mettre $titre en fonction de la variable GET :slight_smile: