Mon site PHP, afin de gérer un minimum de page PHP, fonctionne de la manière suivante: les liens vers la page jeuxvideo par exemple sera le suivant:
rubriques.php?article=jeux_videos
Et grâce au code suivant:
< ?
$article = $_GET[´article´];
$article2= " articles/$article.php";
if ( file_exists($article2))
{
include ( "$article2");
}
else
{
echo " <BR>";
echo " Désolé, mais le fichier < I>$article</I> n´ existe pas";
}
? >
J´ inclue la page voulue. Mais dans mon site
http://puissance2jeux.free.fr/Site/
quand on change de design j´ utilise la fonction
< A HREF="<? echo getenv(´HTTP_REFERER´) ; ? >">Page précédente < /A>
pour retourner a la page précédente. Seulement le changement de design n´ est pas instantané. il faut cliquer sur le lien pour revenir a l´ ancienne page.
J´ avais donc pensé à ceci
< ? $precedentepage= getenv(´HTTP_REFERER´);
echo $precedentepage; ? >
Ce qui affiche le nom de la précédente page visitée
Exemple: http://puissance2jeux.free.fr/Site/rubriques.php?article=ecole
Mais je ne peux pas mettre par la suite
include ( ´$precedentepage´); car la page
http://puissance2jeux.free.fr/Site/rubriques.php?article= ne correspond a rien. Comment faire pour recuperer la variable de la rubrique recuperée grace a getenv(´HTTP_REFERER´); pour ensuite inclure la page précédente, genre:
< ? $precedentepage= getenv(´HTTP_REFERER´);
$precedentepage2= $_precedentepage[´article´];
$precentepage3 = / article/$precedentepage2.php
include ( ´$precedentepage3´);
? >
vous avez saisi mon bleme??? Merci davance
![]()
dsl, j´ai pas le niveau
![]()
![]()
Je saisis pas bien ton problème...
Il se situe au niveau du changement de design ou au niveau de l´inclusion d´une page?
je voudrais qu´ une fois le design changé il inclue la page précédente pour que le changement soit immédiat. Car si tu vas sur mon site tu constateras qu´ il faut cliquer sur un lien pour que le changement de design se fasse. Ce serait mieux si c´ était instantané comme sur http://www.phpdebutant.org
Pourquoi tu ne leurs demande pas à eux ?
j´ ai deja demandé mais ils ont mis 3 semaines a me repondre un truc vague
![]()
Et le changement de design il se situe à quel niveau? Une feuille CSS?
En fait non
J´ explique tout.
Voulant bénéficier de la fonction include() sur PHP, j´ ai créé seulement 2 pages modifiables PHP pour mon site, index.php ( INDEX) et rubriques.php ( TOUTES
LES AUTRES PAGES).
Les liens vers mes pages sont sous la forme rubriques.php?article=nom_de_l_article
Et Sur rubriques.php, le code suivant:
< ?
$article = $_GET[´article´];
$article2= " articles/$article.php";
if ( file_exists($article2))
{
include ( "$article2");
}
else
{
echo " <BR>";
echo " Désolé, mais le fichier < I>$article</I> n´ existe pas";
}
? >
Me permet d´ inclure le fichier voulu ou de´ afficher le fichier NOM DU FICHIER n´ existe pas. Tout cela grâce à la fonction $article = $_GET[´article´];
Quel est le rapport avec mon design? J´ en viens
Mon design interchangeable marche grâce à un cookie et à une feuille nommée design.php
Quand on veut changer de design, on clique sur un lien send.php?couleurr=couleur_du_design
Sur cette page, send.php se situe le code suivant:
< ?php
$couleurcookie = $_GET[´couleurr´];
$expire=365*24*3600; / / 1 an
setcookie("DESIGNCOOKIE","$couleurcookie",time()+$
expire); / /enregistrement du cookie au nom de DESIGN repris dans design.php3
? >
et sur la page DESIGN.php
< ?
switch ( $DESIGNCOOKIE)
{
case " standart":
$bord_tableau_haut = ´#000000´;
$tableaux_externes = ´#CEE9FF´;
$background = ´images/blue_background.jpg´;
$fleche_liens = ´images/fleche_standart.gif´;
$fond_menus_cellules = ´images/BGC_bleu.jpg´;
$fond_cellules_centrales = ´images/fondcc_standart.jpg´;
$coinhg = ´images/coinhgstandart.gif´;
$coinhd = ´images/coinhdstandart.gif´;
$coinbd = ´images/coinbdstandart.gif´;
$coinbg = ´images/coinbgstandart.gif´;
$fleche = ´images/fleche.gif´;
$banniere= ´images/banniere_normale.jpg´;
$banniere2= ´images/banniere2.gif´;
$fond_colonne_centrale= ´#FFFFFF´;
$style= ´styles/style_standart.css´;
break;
case " bleu":
$bord_tableau_haut = ´#000099´;
$tableaux_externes = ´#CEE9FF´;
$background = ´images/blue_background.jpg´;
$fleche_liens = ´images/fleche_bleu.gif´;
$fond_menus_cellules = ´images/BGC_bleu.jpg´;
$fond_cellules_centrales = ´images/fondcc_bleu.jpg´;
$coinhg = ´images/coinhgbleu.gif´;
$coinhd = ´images/coinhdbleu.gif´;
$coinbd = ´images/coinbdbleu.gif´;
$coinbg = ´images/coinbgbleu.gif´;
$fleche = ´images/fleche.gif´;
$banniere= ´images/banniere_normale.jpg´;
$banniere2= ´images/banniere2.gif´;
$fond_colonne_centrale= ´#FFFFFF´;
$style= ´styles/style_bleu.css´;
break;
case " rouge"
. ..
case " vert"
. ..
case " gris"
. ..
case " mauve"
. ..
default:
. ..
? >
et dans mes pages au lieu de marquer background=... je mets < ? echo $background; ? > Ou $background sera remplacé par la valeur de la page DESIGN.PHP
Quel est le rapport? J´ y viens
Sur la page SEND.PHP voici un code résumé
< ?php
$couleurcookie = $_GET[´couleurr´];
$expire=365*24*3600; / / 1 an
setcookie("DESIGNCOOKIE","$couleurcookie",time()+$
expire); / /enregistrement du cookie au nom de DESIGN repris dans design.php3
? >
design < B><? echo " $couleurcookie"; ? ></B> sélectionné
< BR>
< BR>
< A HREF="<? echo getenv(´HTTP_REFERER´); ? >">Page précédente < /A>
la fonction echo getenv(´HTTP_REFERER´); me donne la valeur de la précédente page visitée, la page ou on était avant de changer de design ( ex
http://puissance2jeux.free.fr/Site/rubriques.php?article=ecole
Le problème, c´ est que le changement de design n´ est pas instantané, car le valeur du cookie DESIGNCOOKIE est modifié sur la page en question. Il faut donc
cliquer sur le lien page précédente pour que le changement de design s´ effectue. Je pensais donc pour remédier le problème faire ce genre de code:
< ? $y = " getenv(´HTTP_REFERER´)";
include ( ´$y´); ? >
mais je ne peux pas inclure la page car $y sous la forme rubriques.php?article=ecole ne correspond a rien. Et je ne peux pas utiliser le code $article =
$_GET[´article´]; car il n´ y a pas de variable dans la barre d´ URL. Donc comment faire quand tu as la variable $y =
http://puissance2jeux.free.fr/Site/rubriques.php?article=ecole pour recuperer juste le terme ecole pour ensuite inclure la page ecole.php???
Selon vous, si je mets < ? include ( ´cookie.php´) ; ? > au début de send.php ou dans cookie.php est situé le code suivant < ?php
$couleurcookie = $_GET[´couleurr´];
$expire=365*24*3600; / / 1 an
setcookie("DESIGNCOOKIE","$couleurcookie",time()+$
expire); / /enregistrement du cookie au nom de DESIGN repris dans design.php3
? > vous croyez que cookie.php sera interprété avant le reste de la page et donc que le changement de design sera immédiat? Merci d´ avance
Vous avez compris mon problème?
vous m´ avez suivis?
MathieuN7
pour répondre a ta question dans mes feuilles CSS ya juste la definition due la couleur des liens et des zones de style dans mes textes ( titres, article, sous-titres...) ce serait plus simple que j´ utilises davantage le CSS?
Alors oui tout à fait je trouve que tu te compliques la vie à définir une 50aine de variables par design, sachant que tu as 5/6 designs en début de page... Ca ralentit beaucoup le ´parsing´ et C un peu casse pied
Pour ta méthode, fait simplement une page define_cookie.php qui n´affichera rien, mais qui, après avoir changé le cookie, chargera la page précédente...
Si tu evux plus d´infos pour tes feuilles CSS va sur
http://openweb.eu.org/
Voilà
si tu désires une rééxplication, n´hésite pas!
j´ ai suivi les conseils de PHPDEBUTANT.ORG
et tu mets quel code dans ta page define_cookie? Merci d´ avance
Bah tu mets le code qui change le design dans le cookie, puis tu rediriges vers la page voulue...
Tu peux utiliser le HTML ou le PHP
bon g pas tout lu, mais comme des le debut du script g vu ca :
$article2= " articles/$article.php";
ca ca m´etonnerai que ca marche
et que visiblement personne n´a fait la remarque, je me dit que tout le monde est passé à coté . ..
$article2= " articles/".$article.".php";
ca ca marche
Non electron_libre ![]()
PErsonne n´est passé à côté vu qu´il n´y a pas d´erreur ![]()
Ca fonctionne comme la fonction echo, c´est à dire:
Si tu fais $article = " article/$article.php" ça fonctionne ( en principe je viens de voir article.php, ça pourrait être une variable? je ne suis même pas sûr )
Normal, avec des doubles quotes, tu n´as pas besoin de concaténer, le serveur cherche les variables tout seul.
Ta " correction " serait juste si tu remplaçais les doubles quotes par des simple quotes, donc:
$article = ´articles/´.$article.´.php´;
Et là, comme ce sont des simple quotes, le serveur ne va pas chercher de variables dedans, et donc tu DOIS concaténer!
Voilà, j´ai été assez clair?
electron_libre le code marche mais ton code a l´ air plus " propre"
tu ve dire quoi par concaténer! matieun7?
et pr mon pb vous en pensez quoi? merci d´ avance
son code a l´air plus propre? je sais même pas si ça fonctionne!
Concaténer, ça veut dire alterner des mots et des variables, par exemple ton truc avec des simple quotes ça donne ça:
$article = ´articles/´.$article.´.php´;
le fait de remettre un simple quote puis un point indique qu´il va y avoir une variable, ensuite tu remets un point puis un simple quote pour dire que tu vas remettre du texte...
Exemple:
$variable = ´texte´.variable.´texte´.variable;
Si ça finit par une variable, tu mets juste un point virgule, pas la peine de mettre . ´ car tu ne mets plus de texte après
En fait ( j´ai l´impression de me répéter )
Tu peux faire:
ou
Pour en savoir plus, reporte toi à ce cours sur http://www.phpdebutant.org:
http://phpdebutant.org/article55.php