Code basique de Php pour une navigation dynamique

Kyonyx
Invité n'ayant pas de compte PHPfrance

12 sept. 2006, 19:33

Bonjour,

J'aimerais connaître le moyen le plus simple de faire apparaitre les différentes pages de mon site dans le cadre centrale.

Pour le moment j'ai un fichier index.php qui contient tout la structure graphique de mon site avec le code suivant dans le cadre là où je veux que toutes les pages apparaissent:

J'ai également la page accueil.php qui s'affiche bien dans le cadre.

Mon problème à présent est de savoir quel code inscrire dans les différentes pages de mon site afin qu'elles s'affiche comme il faut, et quel lien je dois mettre dans les menus.

Merci d'avance

Eléphant du PHP | 184 Messages

12 sept. 2006, 19:35

Bonsoir,

Va voir du côté des include() et ne pas oublier la partie "sécurisation" de son utilisation.
Image

Eléphanteau du PHP | 18 Messages

12 sept. 2006, 19:44

Je vais revoir ça.

Pour le moment j'ai ce code dans ma page index.php:

<?php

$pageOK = array('echecs' => 'echecs.php',
'accueil' => 'accueil.php');


if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
include($pageOK[$_GET['page']]);
} else {
include('accueil.php'); }

?>

Je me sert de la page echecs pour tester, avec ce lien: <a href="echecs.php" >Echecs</a>

Cela me renvoi sans arret sur la page d'accueil.

D'où vient le soucis?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 sept. 2006, 19:45

Tu as oublié de passer la variable dans ton URL :
<a href="echecs.php?page=echecs">Echecs</a>

Eléphanteau du PHP | 18 Messages

12 sept. 2006, 19:57

Si je comprend bien dans le menu, comme liens pour appeler la pge echecs je met:
<a href="echecs.php?page=echecs">Echecs</a>

Dans ma page echecs.php jai actuellement du texte brut.
Dois-je mettre un include ou je la laisse sans code?

Car pour le moment, avec ce lien, ca ouvre une page blanche avec le texte de la page echecs.php sans la structure du site.

Y a-t'il un soucis dans mon code de base?
Y en a-t'il de plus simples?

Merci de m'éclairer :)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 sept. 2006, 20:02

<?php 

$pageOK = array('echecs' => 'echecs.php', 
'accueil' => 'accueil.php'); 


if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) { 
include($pageOK[$_GET['page']]); 
} else { 
include('accueil.php'); } 

?>
Ce code te permet de faire des includes. Là tu as stocké dans un tableau les pages qui seront acceptées.

Ensuite tu lui dit que si la variable passé dans ton URL existe alors il va chercher la bonne page : si c'est echecs alors inclure page echecs.php, idem pour l'autre. Si la variable n'existe pas, tu inclus accueil.php par défaut.

Ton lien maintenant, c'est là où tu passes ta variable (qui est récupérée avec $_GET['page']).
<a href="echecs.php?page=echecs">Echecs</a>
Dans ce lien on passe la variable page qui a la valeur "echecs". Donc inclusion de ta page echecs.php.

Ta page echecs.php est une page de données, tu y mets ce que tu veux. Ces données seront affichées à l'endroit de l'inclusion.

C'est plus clair ?
Modifié en dernier par charabia le 12 sept. 2006, 20:03, modifié 1 fois.

Eléphant du PHP | 184 Messages

12 sept. 2006, 20:03

Le code que tu nous as indiqué doit se trouver à l'endroit où tu veux insérer les pages appelées dans la page index.php ceci donnerait plutôt :
<a href="index.php?page=echecs">Echecs</a>
Image

Eléphanteau du PHP | 18 Messages

12 sept. 2006, 20:08

Oui je vois bien le but de
<a href="echecs.php?page=echecs">Echecs</a>
mais quand je rentre ça comme lien pour echecs, la page echecs s'affiche seule sans la structure du site :-(

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 sept. 2006, 20:14

Je ne comprend pas, le pavé qui permet de faire l'include est à mettre à l'endroit où tu veux inclure le fichier. Le reste est bien le gabarit non ?

Eléphanteau du PHP | 18 Messages

12 sept. 2006, 20:21

Oui il se trouve dans le cadre où je veux que le site s'affiche.
Mais quand je clique sur le lien, ca aboutit sur une page blanche avec le texte de la page echecs.php

Voici le site, ca t'éclairera peut être plus: http://kelboreve.chez-alice.fr/index.php

Merci d'avance :)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 sept. 2006, 20:26

Tu as dû mal intégrer quelque chose. L'inclusion n'est pas pris en compte.

En fait en gros c'est comme ça par exemple :

MENU DU HAUT
__________________________________________
Echecs--------| INCLUSION ICI
Tarot----------|
Champignons-|

C'est là où se trouve inclusion ici que tu dois mettre tout le code d'inclusion.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 sept. 2006, 20:33

Je viens de voir quelque chose. En fait tu as appelé echecs.php?page=echecs.

En fait tu dois rester avec ta pag index.php et non changer de page. C4est pour ça que ça t'ouvre une autre fenêtre sans ton gabarit.

Donc ça devra être

Code : Tout sélectionner

http://kelboreve.chez-alice.fr/index.php?page=echecs

Eléphanteau du PHP | 18 Messages

12 sept. 2006, 21:18

J'ai bien rentré <a href="index.php?page=echecs">Echecs</a> comme lien dans le menu à echecs.

En cliquant sur le lien, j'obtient bien la structure du site mais avec la page accueil.php qui s'affiche et non la page echecs.php

Voici le code exact qui se trouve dans le cadre de destination dans la page index.php:

<?php

// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('echecs' => 'echecs.php',
'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
} else {
include('accueil.php'); // Page par défaut quant elle n'existe pas dans le tableau
}

?>

Y a-t'il un soucis à ce niveau?

Eléphanteau du PHP | 18 Messages

12 sept. 2006, 21:59

Je résume clairement ma situation:

Sur mon site actuellement il y a 3 fichiers => index.php accueil.php echecs.php

Les fichiers accueil et echecs ne contiennent que du texte brut.

index.php contient 2 script php dans le cadre où mes pages doivent s'afficher:
<?php
include($_GET['page'].'.php'); // Nous appelons le contenu central de la page
?>

<?php

// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('echecs' => 'echecs.php',
'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
} else {
include('accueil.php'); // Page par défaut quant elle n'existe pas dans le tableau
}

?>

Voici ce qui s'affiche à l'ouverture de mon site dans le cadre prévu pour l'affichage des pages:

Warning: Unable to access .php in index.php on line 159

Warning: Failed opening '.php' for inclusion (include_path='./') in index.php on line 159

Quelqu'un peut-il me dire d'où vient le soucis svp? Se serait vraiment sympa :)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 sept. 2006, 22:07

Tu n'as pas compris le système.

Il ne faut pas que tu rajoutes :
<?php 
include($_GET['page'].'.php'); // Nous appelons le contenu central de la page 
?>
Alors je vais prendre comme exemple un gabarit :
- une 1ère ligne
- une autre avec 2 colonnes
<table>
<tr>
	<td colspan="2">BANNIERE</td>
</tr>
<tr>
	<td>
	<a href="index.php?page=accueil">Accueil</a>
	<a href="index.php?page=echecs">Echecs</a>
	</td>
	<td>
	<!-- Ici inclusion des différents contenu -->
	<?php 
	// On définit le tableau contenant les pages autorisées 
	// ---------------------------------------------------- 
	$pageOK = array('echecs' => 'echecs.php', 
	'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 
	} else { 
	include('accueil.php'); // Page par défaut quant elle n'existe pas dans le tableau 
	} 
	
	?>
	</td>
</tr>
</table>
Comprends-tu mieux avec cet exemple ?

NB : Utilises les bbcodes pour colorer ton code comme je le fait, c'est beaucoup plus lisible.
Modifié en dernier par charabia le 12 sept. 2006, 22:09, modifié 2 fois.