Ptit problème avec un code que j'utilise depuis longtemps...

Rupert Pupkin

Membre confirmé
15 Septembre 2004
16
0
39
Suisse
Voilà j'utilise pour chacun de mes sites un code permettant d'inclure une page dans un tableau.
Je m'explique :

Au lieu de créer 10 pages avec a chaque fois un menu entier codé dans la page, le javasctipt en haut de pages, etc... j'ai une seul page appelée index, un tableau au centre duquel j'inclus une page.

Mon code se décompose comme ceci (je pense être loin d'etre le seul à utiliser ce petit truc) :

en haut de la page :

if (!isset($HTTP_GET_VARS["page"])) $page="accueil";

Je vérifie si la variable $page existe, si ce n'est pas le cas je l'initialise à accueil. Ce qui veut dire que lorsqu'on atterit sur le site, l'adress n'est que "www.monsite.com/index.php" et on n'envoie aucune variable, donc il faut l'initialiser. Si elle existe par contre on ne change rien.

Ensuite dans le cadre ou j'inclus la page :

if (file_exists($page.".php")) include ($page.".php");
else echo ('Désolé mais la page demandée ('.$page.'.php) n\'est pas disponible');


Je vérifie si le fichier page.php existe (des fois qu'un petit malin s'amuserais à m'envoyer un nom invalide dans l'adresse genre : www.monsite.com/index.php?page=dantonku) si oui je l'inclus, sinon j'affiche un message d'erreur.

Je ne comprend pas pourquoi, mais il n'affiche que la page accueil, même si je m'amuse a lui envoyer une autre valeur pour la variable (pour une page existante ou non). Apparement, soit la variable ne s'envoie pas au travers de get, soit il ne la récupère pas...

Est-ce que c'est à cause de php 5 ? avez-vous déclé l'erreur ? Alors appelez tout de suite pour gagner un réfrigérateur et... heu pardon.

Merci d'avance !
 
iMatthieu a dit:
Mhh je pense qu'il te faut utiliser $_GET['page']...

Un moyen que j'aime bien de faire ton premier if :

$page = isset($_GET['page']) ? $_GET['page'] : '';

Ah oui ! Ca faisait très longtemps que je l'avais plus écrit (enfin autrement qu'en faisant du copy cut depuis un autre fichier) du coup j'avais oublier la syntaxe exacte. Merci beaucoup ça fonctionne ! (et j'adore ton "if" :) )

:up:

sinon Niconemo c'est pour mon site local, donc php 5 ;)
 
En fait ça pose tjs un petit problème.

Avec ma version en $_GET ça marche uniquement lorsque je passe aucune variable (il me prend accueil par défaut, dans le cas contraire il me fait un undidentified variable) avec ta version du "if" c'est le contraire, dès que y a une variable envoyé ça fonctionne, dans le cas contraire : nop.

Comme je sais pas comment remonter un peu ton if....
 
iMatthieu a dit:
Bizarre... j'ai aussi php5 et chez moi ça fonctionne niquel (j'utilise aussi souvent ce principe de pseudos-frames très pratique)...

Tu passes donc bien tes variables par l'url c'est ça ? index.php?page=accueil

Copies-moi ton code à la limite :)

Oui tout à fait, en fait le truc c'est quand je passe aucune variable. Et j'ai envie que, par défaut sans passer de variable, il prenne la page accueil !

Mon code en gros (ouais cé pas du XHTML Strict je sais, je m'occuperai de tout ça plus tard :D):

Bloc de code:
<?
 	$page = isset($_GET['page']) ? $_GET['page'] : '';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>My XANADU >> <? echo ($page); ?></title>
<script type="text/javascript">
 function menu(message,champ)
 {
  if(document.getElementById)
  document.getElementById(champ).innerHTML = message;
 }
</script>
</head>
<body>
<table align="center" style="background:#FFFFFF;border-collapse:collapse;width:700px; height:100%">
	<tr>
		<td style="width:200px;height:88px;border-left:1px solid #853A23;border-right:1px dotted #99604E;background-image:url(images/myxanadu.jpg);background-repeat:no-repeat"><div style="width:100%;height:100%" onmouseover="this.style.cursor='pointer'" onclick="location.href='index.php'"></div></td>
		<td style="width:100px;background-image:url(images/cv.jpg);background-repeat:no-repeat;border-right:1px solid #853A23">&nbsp;</td>
		<td style="width:100px;background-image:url(images/creation.jpg);background-repeat:no-repeat;border-left:1px dashed #FBFBFB">&nbsp;</td>
		<td style="width:100px;background-image:url(images/contactme.jpg);border-left:1px solid #853A23;background-repeat:no-repeat">&nbsp;</td>
		<td style="width:200px;background:#8F2B0B;border-left:1px dotted #99604E;border-right:1px solid #853A23"></td>
	</tr>
	<tr>
		<td style="width:200px;height:8px;border-right:1px dotted #99604E;border-left:1px solid #853A23;border-bottom:1px solid #853A23;background-image:url(images/xanadu-bas.jpg);background-repeat:no-repeat">
		 &nbsp;
		</td>
		<td style="width:100px;background:#F7F7F7;border-right:1px dotted #99604E;border-bottom:1px solid #8F2B0B;border-top:1px solid #8F2B0B;background-image:url(images/mavie.jpg);background-repeat:no-repeat" onmouseover="this.style.borderTop='1px solid #E6C7BD';this.style.cursor='pointer'" onclick="location.href='cv.php'" onmouseout="this.style.borderTop='1px solid #853A23'">&nbsp;</td>
		<td style="width:100px;background:#F7F7F7;border-right:1px dotted #99604E;border-bottom:1px solid #8F2B0B;border-top:1px solid #8F2B0B;background-image:url(images/monoeuvre.jpg);background-repeat:no-repeat" onmouseover="this.style.borderTop='1px solid #D7A99B';this.style.cursor='pointer'" onclick="location.href='creations.php'" onmouseout="this.style.borderTop='1px solid #853A23'">&nbsp;</td>
		<td style="width:100px;background:#F7F7F7;border-right:1px dotted #99604E;border-bottom:1px solid #8F2B0B;border-top:1px solid #8F2B0B;background-image:url(images/contacts.jpg);background-repeat:no-repeat" onmouseover="this.style.borderTop='1px solid #D7A99B';this.style.cursor='pointer'" onclick="location.href='contacts.php'" onmouseout="this.style.borderTop='1px solid #853A23'">&nbsp;</td>
		<td style="width:100px;background:#8F2B0B;border-right:1px solid #853A23;border-bottom:1px solid #853A23;vertical-align:bottom;text-align:right;padding-right:8px">
		</td>
	</tr>
	<tr>
		<td colspan="5" style="font-size:12px;width:500px;border-left:1px solid #853A23;border-right:1px solid #853A23;background:#FFFFFF;padding:10px;vertical-align:top;text-align:justify">
		&nbsp;
<?
	if (file_exists($page.".php"))  include ($page.".php");
	else echo ('D&eacute;sol&eacute; mais la page demand&eacute;e ('.$page.'.php) n\'est pas disponible');
?>
		</td>
	</tr>
</table>
</body>
</html>
 
C'est plutôt ça qu'il te faut mettre non ? :)

$page = isset($_GET['page']) ? $_GET['page'] : 'accueil';


Au passage, la syntaxe expression booléenne ? valeur si vrai : valeur si faux est vraiment très pratique pour éviter de devoir faire un if-then-else dans certains cas.
 
molgow a dit:
C'est plutôt ça qu'il te faut mettre non ? :)

$page = isset($_GET['page']) ? $_GET['page'] : 'accueil';


Au passage, la syntaxe expression booléenne ? valeur si vrai : valeur si faux est vraiment très pratique pour éviter de devoir faire un if-then-else dans certains cas.


J'avoue que je ne connaissais pas cette technique (faut dire qu'en php je me suis toujours débrouillé pour pas avoir à apprendre trop de syntaxe, les bases me suffisaient) et je remarque en fait que j'ai été complétement idiot en recopiant le truc sans comprendre la syntaxe :rose:

Enfin bon, là ça marche nickel, merci beaucoup à vous et je risque de réutiliser cette petite syntaxe fort souvent !