Titre de la page depend d'une requete SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Titre de la page depend d'une requete SQL

par Fredy07 » 01 août 2009, 05:46

Merci pour vos reponses :o

par FuZZyLine » 30 juil. 2009, 09:10

Re,
Je détaille maintenant:
J'ai une table sur laquelle je stocke des donnees:

Code : Tout sélectionner

create table histoire id titre histoire
et le site est généré par des pseudo frames au centre avec un menu en top:
centre.php
if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}
elseif ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
} 
else
{
include 'defo.php';
$titre = 'mon titre par défaut';
} 
Si je me trouve sur l'une des pages ci-dessus je récupère le titre, ça cause aucun problème, mais si je me trouve sur une des histoires (de la table histoires), du genre: index.php?page=page2&id=4
sur cette URL je veux afficher le titre de id=4 et non de page2.
Je pense que tu vois la chose dans un context difficile d'accès.
Le principe d'une DB c'est de scinder un aximum d'information (c'est mon point de vue, hein).
Déja je te propose ceci:

Code : Tout sélectionner

DB Ton_Site: Table : Titres [idtitre] *index, comment: variable id de la Table Pages [titlename] CHAR(32) UNIK Table : Pages [id] *DOUBLE, Primary_Key [body] TEXT, comment: Peut-être ce que tu veux. un fichier ou directement le script html
S'entend, c'est juste une piste. A toi de modifier pour adapter exactement à ton désir.

@+ bon code ;)

par Fredy07 » 30 juil. 2009, 08:51

Je détaille maintenant:

J'ai une table sur laquelle je stocke des donnees:

Code : Tout sélectionner

create table histoire id titre histoire
et le site est généré par des pseudo frames au centre avec un menu en top:

centre.php
if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}
elseif ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
} 
else
{
include 'defo.php';
$titre = 'mon titre par défaut';
} 
Si je me trouve sur l'une des pages ci-dessus je récupère le titre, ça cause aucun problème, mais si je me trouve sur une des histoires (de la table histoires), du genre: index.php?page=page2&id=4


sur cette URL je veux afficher le titre de id=4 et non de page2.

par graffx » 30 juil. 2009, 08:16

a mon avis tu dosi definir la variable titre

Ensuite, tu le recupere dans l' url du genre

w*w.ton_site/fofo/index.php?categorie=Faq&topic=Comment...&page=3&titre=le_titre_de_mon_sujet


J' aurai fait comme ca pour la simplicité, mais attend une confirmation de quelqu' un d' autre :)

par Fredy07 » 30 juil. 2009, 04:20

Stef ce que je veux faire c'est ce que FuZZyLine a montré:

Code : Tout sélectionner

w*w.ton_site/fofo/index.php?categorie=Faq&topic=Comment...&page=3 Ce qui donnerait : Bienvenue dans le forum. Catégorie Faq, Massage: Comment..., page 3
Alors si j'arrive a id:

w*w.ton_site/fofo/index.php?categorie=Faq&topic=Comment...&page=3&id=2

qu'est ce que je dois faire pour récupérer le titre?

par FuZZyLine » 29 juil. 2009, 17:32

Salut,
J'ai des pages comme ca:
<head>
<title><?php echo $titre; ?></title>
</head>
<body>
un menu haut et le centre
<?php
include 'menu.php';
include 'centre.php'; // dedans une fonction qui génère les liens suivant le menu top du genre:
if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}
if ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
}
?>
Ce que je veux faire si la page demande existe dans la liste qu'on génère on inclue la page avec son titre et si la page demande est dans la table de la base de donnée on inclue la page avec son titre stocke dans la table
Je ne sais si j'ai bien "capish" mais si c'est ca, tu as donné la réponse dans ta démo ci-dessus.

Suffit de récupérer l'url et de la scinder de façon à obtenir la page active.
De récuperer le GET ou le POST de façon à avoir le fragment

Ainsi tu peux interroger ta BD et récupérer le titre puis le compléter par les fragments:

Exemple:

w**w.ton_site/fofo/index.php?page=25
Ce qui donnerait : Bienvenue dans le forum.

w*w.ton_site/fofo/index.php?categorie=Faq&topic=Comment...&page=3
Ce qui donnerait : Bienvenue dans le forum. Catégorie Faq, Massage: Comment..., page 3

Ca me parait être ce que tu cherches à faire, non?
Du reste ce type de rapatriement de fichiers me fait penser à un topic pas trop vieux:
qui est celui-ci http://www.phpfrance.com/forums/voir_sujet-249149.php

Tout se joue sur $_SERVER, $_GET ou $_POST, un while (eventuel) sur le nombre d'éléments
de l'url puis un switch. Tu fais un foreach sur les fragments et t'associes le tout.

Un bémol si, biensur, tu utilises le Rewriting mais l'approche reste la même.

@+ bon code ;)

par Stef » 29 juil. 2009, 17:05

Tu as avais dit qu'il y a une fonction dans centre.php....

J'ai des pages comme ca:
<head>
<title><?php echo $titre; ?></title>
</head>

<body>
un menu haut et le centre

<?php
include 'menu.php';

include 'centre.php'; // dedans une fonction qui génère les liens suivant le menu top du genre:

if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}

if ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
}
?>
Ce que je veux faire si la page demande existe dans la liste qu'on génère on inclue la page avec son titre et si la page demande est dans la table de la base de donnée on inclue la page avec son titre stocke dans la table
or là, dans le code que tu montres il n'y en a pas...
hello,

tu peux montrer le contenu de centre.php stp?
if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}

if ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
} 
Je veux bien continuer à réfléchir pour t'aider à trouver une solution mais ça me parait nébuleux tout ça...

Alors je vais essayé de résumer pour mieux comprendre:

D'un coté dans ta bdd t'as des pages (ça c'est pas clair! c'est quoi une page dans ta bdd? le titre, le contenu?),
de l'autre côté dans certaines de tes pages tu as une liste de liens généré (par une fonction qui n'existe pas apparement),
bien, à partir de ça tu veux déterminer quel est le titre à insérer dans la balise <title>...

Là, moi je nage... si t'as des explications plus abordables je suis preneur! sinon ben j'espère que quelqu'un de plus compétent te viendra en aide.

par Fredy07 » 29 juil. 2009, 05:06

hello,

tu peux montrer le contenu de centre.php stp?
if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}

if ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
} 

par Stef » 28 juil. 2009, 08:03

hello,

tu peux montrer le contenu de centre.php stp?

par Fredy07 » 28 juil. 2009, 00:46

Ce que je veux faire si la page demande existe dans la liste qu'on génère on inclue la page avec son titre et si la page demande est dans la table de la base de donnée on inclue la page avec son titre stocke dans la table
houla, y a un truc qui n'est pas clair pour moi dans ton énnoncé: tu parles d'une liste générée... mais à partir de quoi?
ensuite tu parles d'un titre à inclure si la page est dans la table...

ça me parait confus...
Le centre.php génère des pages du genre pseudo frames

par Stef » 27 juil. 2009, 21:48

Ce que je veux faire si la page demande existe dans la liste qu'on génère on inclue la page avec son titre et si la page demande est dans la table de la base de donnée on inclue la page avec son titre stocke dans la table
houla, y a un truc qui n'est pas clair pour moi dans ton énnoncé: tu parles d'une liste générée... mais à partir de quoi?
ensuite tu parles d'un titre à inclure si la page est dans la table...

ça me parait confus...

par Fredy07 » 27 juil. 2009, 07:14

Fredy je suis vraiment pas sûr de comprendre ce qe tu veux.... m'enfin, si t'as une $_GET, tu peux faire:
J'ai des pages comme ca:
<head>
<title><?php echo $titre; ?></title>
</head>

<body>
un menu haut et le centre

<?php
include 'menu.php';

include 'centre.php'; // dedans une fonction qui génère les liens suivant le menu top du genre:

if ($page == 1)
{
include 'page1.php';
$titre = 'mon titre1';
}

if ($page == 2)
{
include 'page2.php';
$titre = 'mon titre2';
}
?>
Ce que je veux faire si la page demande existe dans la liste qu'on génère on inclue la page avec son titre et si la page demande est dans la table de la base de donnée on inclue la page avec son titre stocke dans la table

par Stef » 26 juil. 2009, 10:21

Stef n'oublie pas les mysql_connect , et mysql_close.
Oui, j'ai supposé qu'à ce niveau de son code il avait déjà ouvert une connection...
quant à mysql_close...?

Fredy je suis vraiment pas sûr de comprendre ce qe tu veux.... m'enfin, si t'as une $_GET, tu peux faire:
<?php

$titre = "Valeur par défaut";

if (isset($_GET['id']) {

    $query = mysql_query('SELECT titre, texte FROM table WHERE id='.$_GET['id']);
    $result = mysql_fetch_array($query);
    $titre = $result['titre'];

}

?>

<html>
<head>
<title><?php echo $titre; ?></title>
</head>

par Fredy07 » 26 juil. 2009, 00:37

J'ai bien compris le code par Stef, juste que certaines pages vont appeler au titre de leurs pages par défaut, et si je me trouve sur des pages que je dois me connecter a une base de donnée, je dois afficher le titre dans la table.
<title>
<?php echo $titre; // au cas ou je suis sur une page du type: page.php?id=id ?> 
</title>
et en cas ou je suis sur une page normale, type: page.php

Code : Tout sélectionner

<title>le titre de la page</title>

par thehawk » 25 juil. 2009, 23:34

Fredy , re-regarde le code donné par stef qui correspond en tout point a ta demande.

En effet le titre n'est jamais textuelle relayé par le biais de la variable.

Donc apres c'est sans doute un probleme de compréhension , dit nous ce que tu comprend pas dans le code.

Stef n'oublie pas les mysql_connect , et mysql_close.

je sens que le code donnée dans le 1er post est le script complet sans aucun appel vers d'autre script :p

Bye Hawk