J’ai un problème d’include:
j’ai mis les PAGE=accueil, mais dans la page index.php, il n’y affiche rien, tandis que index.php?page=accueil, il affiche le texte que j’ai marqué dans accueil.php.
Voilà la question:
Comment mettre la page ACCUEIL.PHP dans INDEX.PHP ?
Voilà mon code de index.php:
<html><head>
<link rel="stylesheet" media="screen" type="text/css" title="Essai" href="txt.css" >
</head>
<body bgcolor="black" link="#00ccff" vlink="#00ccff">
<TABLE width=800 height=2000 bgcolor=white align="center">
<TR>
<TD colspan=3 style="border: solid; border-width: thin; border-color: #99ccff" width="800" height="148" background="pics/banniere.png"></TD>
</TR>
<TR> <TD width=150 valign=top style="border: dashed; border-width: thin; border-color: #99ccff">
<?php
include('menu.htm'); // Nous appelons notre menu
?>
</TD>
<TD width=640 valign=top style="border: dashed; border-width: thin; border-color: #99ccff">
<?php
// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('accueil' => 'accueil.php');
// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
include($pageOK[$_GET['page']]); // Nous appelons le contenu central de la page
}
?>
<br>
</TD>
</TR>
</TABLE>
Tu veux que par défaut la page accueil.php s’affiche (si rien n’est spécifié) ?
<html><head>
<link rel="stylesheet" media="screen" type="text/css" title="Essai" href="txt.css" >
</head>
<body bgcolor="black" link="#00ccff" vlink="#00ccff">
<TABLE width=800 height=2000 bgcolor=white align="center">
<TR>
<TD colspan=3 style="border: solid; border-width: thin; border-color: #99ccff" width="800" height="148" background="pics/banniere.png"></TD>
</TR>
<TR> <TD width=150 valign=top style="border: dashed; border-width: thin; border-color: #99ccff">
<?php
include('menu.htm'); // Nous appelons notre menu
?>
</TD>
<TD width=640 valign=top style="border: dashed; border-width: thin; border-color: #99ccff">
<?php
// Page par défaut
// ----------------------------------------------------
define('DEFAULT_PAGE', 'accueil');
// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('accueil' => 'accueil.php');
// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
$page = isset($_GET['page']) && isset($pageOK[$_GET['page']]) ? $pageOK[$_GET['page']] : DEFAULT_PAGE;
include($page); // Nous appelons le contenu central de la page
?>
<br>
</TD>
</TR>
</TABLE>
</body>
</html>
Ainsi si aucune page n’est spécifiée, ou que la page demandée n’existe pas, la page par défaut sera ouverte Et tu avais oublié le </body></html> à la fin
Ok.
Au fait, si je comprend bien, il faut mettre:
// Page par défaut
// ----------------------------------------------------
define(‘DEFAULT_PAGE’, ‘accueil’);
Ca marche pas, ça affiche toujours une page blanche.
Je n’ai pas changé que ça non, tu n’as qu’à tester mon code en entier. define(‘DEFAULT_PAGE’, ‘accueil’) définit une constante, qui dans notre cas nous sert à savoir quelle est la page par défaut… Mais après il faut changer le code pour qu’il utilise cette constante quand la page n’est pas spécifiée ou incorrecte.
include(‘menu.htm’) : mal vu. ici le fichier htm va être parsé comme un fichier PHP. Ecrit plutôt :
echo file_get_contents(‘menu.htm’);
Tu iras un petit plus vite puisque PHP ne cherchera pas à parser un document htm (sauf si c’est ce que tu veux).
include c’est une instruction, donc pas de parenthèses ! : include ‘menu.htm’ c’est mieux.
Pour finir, un exemple adapté à ton code d’inclusion par défaut :
<?php
// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('accueil' => 'accueil.php');
// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
include isset( $_GET['page'] ) && isset( $pageOK[$_GET['page']] ) ?
$pageOK[$_GET['page']]:
reset($pageOK);
?>
reset remet à zéro le pointeur interne du tableau passé en paramètre, et renvoie le premier élément (ici : accueil). Bien sûr, tu peux utiliser une constante ou foutre directement $pageOK[‘accueil’] mais bref.