Forum Clubic

Problème avec ma fonction include

Bonjour, j’ai un fichier index.php qui appelle un autre: menu.php via la fonction include. Le fichier css de menu.php est stocké dans un autre dossier. Mon problème est le suivant: lorsque je lance ma page index.php elle génère correctement ma page mais sans inclure la page menu.php. Je n’ai pas trouvé ma réponse sur d’autres forum … Je mets un bout de code des 2 fichiers pour que vous compreniez mieux le problème.

index.php

Test

Recherche:
<?php include "menu.php"; ?>

Accueil

menu.php

    Je vous évite la suite interminable.

    J’ai donc un dossier contenant index.php, menu.php et un dossier nommé: css contenant stylemenu.css. Wampserveur est bien allumé.
    (Pour être clair)

    Vous avez une petite idée ?

    Merci

Salut Aymeric,

Tu as la balise qui va se trouver incluse dans la balise et c’est ça qui embrouille le navigateur je pense.
Donc, la balise dans menu.php (ou plutôt le groupe <link … />), je la placerai plutôt dans index.php, avant .
De toutes façons, après le passage du préproc, il ne te restera plus qu’un fichier html.

C’est ce que je me suis dis mais est-ce que je peux placer deux feuilles CSS dans une même page php ? Et qu’est-ce que tu entends par préproc ?


Donc j'ai pour ma page index.php j'ai: Titre

TEST

Recherche:
<?php include "menu.php"; ?>

Accueil

et pour ma page menu.php j’ai:

    [...]

    Mais ca ne fonctionne toujours pas …
    Edité le 25/09/2013 à 18:45

Attention à ne pas confondre php & html. Tu peux inclure tout et n’importe quoi en PHP, tant que c’est syntaxiquement correct, mais tu ne peux pas rendre (ou produire) du HTML n’importe comment.

En outre, ça :

[b]<?php include 'menu.php'; ?>[/b]

menu.php ne peut produire / contenir que du code HTML valide dans l’élément

: www.w3.org…

Et ou n’en font pas parties.

Tu peux par contre faire ça :

<?php include 'header.php'; ?>
... contenu spécifique de ta page ...
<?php include 'footer.php'; ?>

Avec header.php : …… ton menu …
Et footer.php :


Au passage, tu dis que ça ne fonctionne pas, précise ce qui se passe.

Il y a qu’un include pour l’instant. Je ne comprend pas tes explications. Tu essayes de me dire que je ne peux pas générer une page en HTML en appelant une page avec du code HTML ou que je ne peux pas mettre d’include dans une div ? Je débute -_-
Et quand je dis qu’il y a rien qui se passe je veux dire que mon navigateur affiche correctement ma page index.php et génère également le php de cette page mais c’est comme s’il ne lisait pas le include, donc c’est comme s’il n’était pas codé.

Salut,

oui, plusieurs fichiers css pour une page html, c’est possible. C’est même conseillé si tu as beaucoup de définitions de style, ça t’évitera de parcourir des fichiers css de plusieurs pages.

Non, il te disait que comme tu inclue ton menu.php entre deux balise

, tu ne dois y mettre que ce que tu as le droit d’y mettre. Dans ton cas, les balises ne peuvent être placées à cet endroit. Le navigateur essaiera de la digérer, il n’y aura pas de “plantage” à proprement parler, mais les résultats seront imprévisibles, tout dépendra de comment le navigateur décidera d’interpréter cette erreur de syntaxe.

Sinon nous décrire avec plus de précisions les dysfonctionnements, illustrés de quelques screenshot, nous aiderait beaucoup oui.
Une fois que tu as ouvert le index.php dans ton navigateur, qu’est-ce te donne l’affichage du code source ? Y retrouves tu les balises

… de ton fichier menu.php ?

preproc = pré-processeur
Il va faire un premier passage sur ton code pour en traiter toutes les instructions qui le concerne. Ce résultat sera traité à nouveau par un autre programme (ici un navigateur web), c’est pourquoi on parle de “pré-”.
Y a d’autres pré-processeur que PHP, notamment en xml ou encore en c (les #define). D’ailleurs, c’est ce que veux dire PHP : PHP : Hypertext Preprocessor (c’est un acronyme récursif :s)
Edité le 25/09/2013 à 20:40

Expliquer ou est le problème est compliqué, avec ou sans le include ca ne fonctionne pas, il y a aucune différence. Je ne sais pas si c’est important mais ma page menu.php n’est pas limité par les balises de php. j’ai lu sur un forum qu’il falait mais ca me semble incorrect, juste ?

Sinon, pour ton édite, j’ai enlevé le head et mis le lien vers la feuille de css dans index.php.
Edité le 25/09/2013 à 20:48

Justement, nous dire que “cela ne fonctionne pas” ce n’est pas suffisant.
Ca ne fonctionne pas :

  • rien dans le navigateur ? page blanche ?
  • il te dit qu’il y a une erreur php ?
  • qu’utilises tu pour développer ? wamp ? lamp ?
    Dis toi bien que nous ne sommes pas devant ton PC avec toi, tu nous “guide aux instruments”, et si tu ne nous donnes pas assez de détails on ne sait pas vers où on se dirige.

Ensuite, non un fichier php n’a pas besoin d’obligatoirement commencer et finir par <?php et ?>. Donc ce n’est pas le souci.
En fait, on conseille même de ne pas fermer par ?> dans les fichiers en include (généralement pour éviter les erreurs de type “header already sent”).

Peux tu copier la source de ta page telle que vue par ton navigateur ? (Ctrl U sous Firefox).

<?php /* il faut demarrer la session*/ session_start(); if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire { ?> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?> Test.be

Titre

Recherche:
<?php include "menu.php"; ?>

Accueil

Bievenue sur

BLAAAAAAA !

Grâce à ce site, vous pourrez faire .......

Copyright Zozor - Tous droits réservés
Me contacter !

</body>
Edité le 27/09/2013 à 16:12

Ce n’est pas ce qu’on te demande en fait.
On voudrait que tu nous donnes le code source de tes pages, tel qu’il arrive dans ton navigateur quand tu ouvres ta page.
Ca permettra de voir si l’include a fonctionné correctement et si le code qui en résulte est correct.

Bha c’est ce que j’ai fait en faisant ctrl + U

Si c’est ça, alors, pour être sûr, crée un fichier phpinfo.php, avec juste <?php phpinfo();

Et si quand tu ouvres la page dans ton navigateur, tu n’as pas un truc de ce genre :

[Photo supprimée]

Alors c’est que php n’est pas activé sur ton serveur.

Source de l’image: symfony.com…

Juste pour être sur, tu te connectes bien à localhost… depuis ton navigateur pour tester ton site ? Si tu ouvres directement le fichier dans ton navigateur, ça ne marchera pas. Les fichiers doivent être placés dans un répertoire spécial :
C:[i]répertoire_de_wamp[/i]\www

De même, même si Wampserver tourne, il se peut que ce ne soit que le panneau de contrôle de wamp qui ait été lancé, il te faudra ensuite lancer apache, mysql depuis ce même panneau de contrôle.
Edité le 27/09/2013 à 13:34

La page n’est pas sur un serveur mais sur wamp, donc serveur local. Donc mon code, comme vous le saviez, est de toute manière le même que dans mon code.

Ah bha voila, je me demandais bien quand mon navigateur allait m’afficher des messages d’erreur … Ok merci, j’étais pas en localhost tout bêtement -_-" Un grand merci :slight_smile: