HTML en un lien PHP

Petit nouveau ! | 4 Messages

11 févr. 2009, 18:39

Bonjour,

J’ai voulu apprendre un peu le PHP grâce au site du zéro et quelque tuto sur d’autre site et PHP France.

Donc j’ai réussi à faire quelque code pour pouvoir faire se que je veux, par exemple : page.php?p=accueil" au lieu de accueil.html et cela fonctionne plus ou moins, mais j’ai un petit problème, je vous montre se que j’ai fait et me dire d’où viens le problème ainsi je pourrais apprendre mes erreur :
<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8" />
<title>TESTE</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link rel="shortcut icon" href="favicon.ico" />
<link href="style_5.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<?php 
if (!isset($p))
$p="accueil"; 
?>
<div id="contenu">
<div id="menu1"></div>
<div id="menu2">
<ul class="menu3">
<li><a href="?p=accueil"><b>Accueil</b></a></li>
<?php 
if ($p=="accueil"); 
?> 
<li><a href="?p=ref"><b>Produits</b></a></li>
<?php 
if ($p=="ref"); 
?> 
<li><a href="?p=contact"><b>Contact</b></a></li>
<?php 
if ($p=="contact"); 
?>
</ul>
</div>
</div>
<div id="header">
<?php 
$p=preg_replace("/[^a-z0-9_ ]/i","", $_GET['p']);
if(!@include($p.".html")) die (include("accueil.html")); ?> 
</div>
<div id="bat">
<div id="contenu_cr"></div>
<div id="copyright" class="h1"></div>
</div>
</body>
</html>
Le problème indique (Notice: Undefined index: p in J:\wamp\www\Site\page1.php on line 38) J’ai fait plusieurs teste de changer la variable et la valeur de plus via se problème j’ai une barre qui normalement s’affiche en bas du site et la rien probablement a cause de l’erreur :
<div id="bat">
<div id="contenu_cr"></div>
<div id="copyright" class="h1"></div>
</div>
</body>
</html>
Merci

Invité
Invité n'ayant pas de compte PHPfrance

11 févr. 2009, 18:51

Salut faut que tu déclares ta variables p avant en haut de ton fichier.

Petit nouveau ! | 4 Messages

11 févr. 2009, 19:05

Merci, je pense l’avoir fait à moins que je me trompe, serait il se code :
<?php  
if (!isset($p)) 
$p="accueil";  
?> 
Pouvez-vous me dire quel code ou me montré un code pour que ceci fonctionne sans avoir le message d’erreur.

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 févr. 2009, 22:31

"undefined index" signifie que tu fais appel à une clé d'un tableau associatif alors que celle-ci n'existe pas.

En gros, lorsque tu arrives sur ta page sans avoir spécifié de p=xx dans l'url, la valeur $_GET['p'] a laquelle tu fais appel ligne 38 n'existe pas (et donc php affiche un avertissement)

Ton test devrait être :
if (isSet($_GET['p'])) // si une variable est passée dans l'url
  $p=$_GET['p']; // on prend sa valeur
else // sinon
  $p="accueil"; // on défini une valeur par défaut
Tu peux ensuite utiliser ta variable $p dans tout le reste de ton code en étant sur qu'elle sera définie :
...
$p=preg_replace("/[^a-z0-9_ ]/i","", $p);
...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

12 févr. 2009, 12:26

Merci, Merci beaucoup tout fonctionne, j'ai vu mon erreur et merci de vos conseilles.