8792 sujets

Développement web côté serveur, CMS

Salut tout le monde, je suis un ptit nouveau, et j'ai un petit soucis, et je compte sur votre grande maitrise pour m'aider Smiley smile .
Aussi vite c'est du à la fatigue..et je vais surement passer pour un c**, mais bon je me lance...
J'ai une erreur de type:
a écrit :
Notice: Undefined variable: page in c:\program files\easyphp1-8\www\regain 1.3\index.php on line 70


quand je test ma page index.php.
Mon code est le suivant:

lg68- <?php 
lg69- if (!isset($_GET['page'])) $page='accueil'; 
lg70- switch ($page)
lg71- {
lg72- case 'accueil': include ('inc_accueil.php');break;
lg73- case 'presentation': include ('inc_presentation.php');break;
lg74- } 
lg75-?>

(j'ai schématisé pour les lignes Smiley cligne )
Merci d'avance!!!
Je comprend vraiment pas....
Modifié par SicK_35 (14 Nov 2006 - 18:00)
Bonjour.

Pourtant c'est très simple.

Tel qu'écrit, $page reçoit une valeur si $_GET['page'] n'est pas renseigné.
Mais dans le cas où $_GET['page'] est renseigné, patatras, $page n'est pas initialisé.

En clair, vous ne traitez pas le cas (isset($_GET['page'])). D'ailleur, vous ne lisez même pas le contenu de $_GET['page']...

alors, forcément...

Donc, deux alternatives s'offrent à vous :


// if then else "classique"
if (isset($_GET['page'])) $page=$_GET['page']; else $page='accueil'; 


ou

// Opérateur ternaire ? : "smart"
$page =(isset($_GET['page'])) ? $page=$_GET['page'] : $page='accueil'; 


Ainsi, dans tous les cas, $page sera initialisé.

Deuxième remarque :
Votre switch ne prévoit pas le cas où le contenu de $_GET ne correspond pas à un cas prévu.
Vous avez prévu, "accueil" et "presentation", mais ne gérez pas d'autres valeurs.
Vous devriez munir votre structure switch avec une option "default" pour gérer les cas non-prévus par votre switch.
Modifié par GeorgesM (14 Nov 2006 - 07:38)
Voilà, c'est aussi simple que ça :
<?php 
$pages=array(
   'accueil'=>'inc_accueil',
   'presentation'=>'inc_presentation',
   'pageX'=>'inc_pageX',
   'pageY'=>'inc_pageY'
);

if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
   include $pages[$_GET['page']]'.php';
else
   include 'inc_accueil.php'; // ou une page d'erreur inc_erreur.php
?>
Bonjour, j'ai un problème aussi avec ce tutoriel que j'essaye de faire marcher. Je reprend exactement le code qui est donner dans le tutoriel dans un premier temps mais ca ne marche toujours pas.
Je vous met directement mon html/css et php dans le meme code car je ne sais vraiment pas d'ou vient l'erreur.

<html>
	<head>
	<style type="text/css">
<!--
body {
margin: 0;
padding:0;
position: absolute;
width: 100%;
height: 100%;
font-family: verdana, arial, sans-serif;
}
.haut {
width: auto;
height: 126px;
background-color: #06C;
color: #fff;
font-size: 36px;
padding: 10px;
}
.conteneur {
height: 338px;
width: 100%;
}
.gauche {
position: absolute;
left: 0;
width: 180px;
height: 338px;
background-image: url(gauche.gif);
}
.frame {
margin-left: 180px; /* on place ce bloc à droite du bloc menu de 180px de large */

width: auto;
height: 338px;
overflow: auto; /* cette propriété va permettre le scroll de ce bloc */
font-size: 14px;
}
.bas {
width: auto;
height: 30px;
background-color: #06C;
color: #fff;
font-size: 12px;
padding: 10px;
}
-->
</style>
	</head>

<body>
<div class="haut"></div>
<div class="gauche">
<ul>

	<li><a href="index.php?page=accueil">Accueil du site</a></li>
	<li><a href="index.php?page=presentation">Présentation</a></li>
	<li><a href="index.php?page=suite">Suite</a></li>

	<li><a href="index.php?page=fin">Dernière page</a></li>
</ul></div>
<div class="frame">

<?php
$pages=array(
   'accueil'=>'accueil',
   'presentation'=>'presentation',
   'suite'=>'suite',
   'fin'=>'fin'
);
if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
   include ($pages[$_GET['page']]'.txt');
else
   include 'accueil.txt';
?>
  
<h1>une présentation sans Frames !</h1>
  <p>test</p>
  <p>test</p>
...
</div>
<div class="bas">Cette partie basse reste fixe</div>
</body>
</html>


Et en executant la page avec easyphp il met met
a écrit :
Parse error: parse error in c:\documents and settings\****\index.php on line 76


Je precise que la ligne 76 est celle ci
include ($pages[$_GET['page']]'.txt');


La solution doit être simple mais je ne vois vraiment pas, si quelqu'un pouvait m'aider ca m'eviterai de me jeter par la fenêtre dans pas lontemps Smiley murf
Il manque un point :
include ($pages[$_GET['page']] . '.txt');

Il faut concaténer la page avec .txt
Administrateur
Bison a écrit :
Raphael, corrige !!!! Smiley confus

Raphaël, peux-tu corriger l'erreur s'il te plaît ?
- Oui avec plaisir.
Merci beaucoup!!! 1000 fois merci, c'est cool qu'il existe encore des gens super pedagoge, Smiley smile !
merci!
Administrateur
SicK_35 a écrit :
Merci beaucoup!!! 1000 fois merci, c'est cool qu'il existe encore des gens super pedagoge, Smiley smile !
merci!

Bravo Smiley smile
Tu considères que ce sujet est [Résolu] ? Smiley cligne
Bison a écrit :
Raphael, corrige !!!

Raphael a écrit :

Raphaël, peux-tu corriger l'erreur s'il te plaît ?
- Oui avec plaisir.

Oui tu as raison, raccourci stupide de nouveau
Smiley cligne
Raccourci ou manque de savoir-vivre !

Tu apostrophes Raphaël, au beau milieu d'un topic dans lequel il n'est même pas intervenu, d'une manière un peu cavalière, tout de même !
Smiley fache
Le maître des lieux n'est ni ton obligé ni un camarade de camp, pas plus que les membres de ce forum !
Vitesse et précipitation... il eut été plus courtois que je lui adressasse missive privée.
Je ne peux donc que vous donner raison, mon presque demi-siècle n'autorisant en rien de quelconques familiarités.