[PHP] problème avec include

Fermé
Darshu - 5 juil. 2006 à 09:16
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 5 juil. 2006 à 17:52
Bonjour, je débute en PHP et je voulais utiliser la fonction include() de PHP pour inclure des pages différentes selon le lien sur lequel on a cliqué.

J'ai installé easyphp pour voir mes pages en local, et quand je lance ma page voila l'erreur que j'obtiens :
Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 32

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 33

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 34

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 35

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 36

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 40

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 44

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 48

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 49

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 50

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 51

Voila mon code, si quelqu'un pouvait m'expliquer pourquoi ça ne marche pas, merci ! Les liens sont du type
<A HREF="index.php?page=roulage&log=ATOM">Temps de roulage (ATOM)</A> et au début j'appelle juste la page index.php sans préciser la valeur de page. Quand je clique sur les liens, j'ai les même erreurs et les pages à inclure ne le sont pas ...

<?
if ($page=='contact') { include('Contact.html'); }
elseif ($page=='application') { include('Applications.html'); }
elseif ($page=='ATOM') { include('ATOM.html'); }
elseif ($page=='MILORD') { include('MILORD.html'); }
elseif ($log=='ATOM') {
if ($page=='lancement') { include('ATOM.html#lancement'); }
elseif ($page=='creneaux') { include('ATOM.html#creneaux'); }
elseif ($page=='roulage') { include('ATOM.html#roulage'); }
elseif ($page=='etat') { include('ATOM.html#etat'); }
elseif ($page=='annules') { include('ATOM.html#annules'); }
elseif ($page=='deroutes') { include('ATOM.html#deroutes'); }
elseif ($page=='ponctualite') { include('ATOM.html#ponctualite'); }
}
elseif ($log=='MILORD') {
if ($page=='lancement') { include('MILORD.html#lancement'); }
elseif ($page=='creneaux') { include('MILORD.html#creneaux'); }
elseif ($page=='roulage') { include('MILORD.html#roulage'); }
elseif ($page=='ponctualite') { include('MILORD.html#ponctualite'); }
}
else { include('defaut.html'); }
?>
A voir également:

6 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2006 à 09:59
Apparement, tu n'as pas défini la variable $page.

Le variable $_POST['page'] a été créée. Il te manque en haut :
$page=htmlentities($_POST['page'])
0
Heu, il n'y a pas d'autre code PHP que ce que j'ai mis ici. Comment je définis la variable page alors, sachant qu'elle ne sert que dans l'URL pour savoir quelle page doit être incluse par la suite ? Merci beaucoup :)
0
J'ai rajouté au code PHP ce que tu m'a dis, et il reste encore 3 erreurs :

Notice: Undefined index: page in c:\program files\easyphp1-8\www\plateau html\index.php on line 48
Notice: Undefined variable: log in c:\program files\easyphp1-8\www\plateau html\index.php on line 53
Notice: Undefined variable: log in c:\program files\easyphp1-8\www\plateau html\index.php on line 62

Avec, aux lignes 48, 53 et 62 :

$page=htmlentities($_POST['page']) ;
elseif ($log=='ATOM') {
elseif($log=='MILORD') {

(le code est inchangé, j'ai juste rajouté en première ligne $page=htmlentities($_POST['page']) ;

Quelqu'un voit d'où vient le soucis SVP ? Merci.
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2006 à 11:23
Re-bonjour,

Arf, désolé, je me suis planté :s il fallait mettre :

$page=htmlentities($_GET['page])
$log=htmlentities($_GET['log'])

Pardon, j'espère que ça va marcher !
0
Maintenant les include marchent, mais quand je lance index.php pour la première fois (donc sans page= ...), il me sort la même erreur ! Et donc la même pour log aussi, à chaque fois qu'il n'est pas définit dans l'URL.

Je me demandais aussi, est-ce qu'il est possible d'inclure une page (par exemple contact.html) mais en voulant lui spécifier quelle partie de la page dois être vue (contact.html#personne) pour que l'on voit une partie bien ciblée du document, sans devoir faire tout défiler ?

Encore uen fois merci !
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2006 à 12:59
if ((isset($_GET['page']) && (isset($GET['log']))
{
    //ici le code jusqu'à présent
}
else
{
    include('page_par_defaut_ie_index.html')
}


Pour cibler une page, on appelle cela une ancre.
Page.html :
<body>
<--!blabla ta page-->
<div id='contact_28'>
<--!blablabla ton contact-->
</div>
<--!blabalabla suite page-->
</body>


Pour y aller : Page.html#contact_28
0
J'ai essayé ton code, il n'y a plus les erreurs mais il n'y a plus les include non plus ! Il ne rentre jamais dans le premier if isset, et inclue donc systématiquement la page par defaut ...

Quant aux ancres, je connais le principe et je sais m'en servir. Ce que je voulais, c'était faire include('contact.html#personne'); pour que ça charge la page Contact.html, MAIS en allant direcement à l'ance personne. Seleulement, écris comme cela ce n'est pas correct, aussi je voulais savoir si c'était faisable ou pas.

Merci :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bon, après un peu de réflexion et en m'inspirant de ton code, j'ai solutionné le problème des include, maintenant tout marche et sans aucun message d'erreur, donc merci beaucoup !

Pour mon autre problème, je vois qu'une seule solution : faire plein de sous pages qui correspondraient à l'ancre uniquement, et les charger lors de l'appel par include() plutôt que de vouloir faire include('Contact.html#personne'); c'est-à-dire faire include('Personne.html'); en écrivant la page personne.html à la main ... Quelqu'un voit une autre solution que celle la ?
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
5 juil. 2006 à 17:52
Ok,
bon courage !
0