Bonjour,
Je n'arrive pas à faire fonctionner un require (ou include) en php. La fin du script ne s'exécute pas dès que l'instruction apparaît.
J'ai index.php :
=============================
<!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">
<head>
<meta charset="utf-8" />
<title>Site essai</title>
</head>
<body>
<h1> Titre h1 </h1>
<div>
<p> début texte </p>
</div>
<?php
include ("menu.php");
echo 'OK ';
$menu=" Voilà le menu";
echo $menu;
?>
<div>
<p> Fin texte </p>
</div>
</body>
</html>
============================
puis menu.php :
===================
<?php
function affiche_menu()
{
$menu="Le menu ne s'affiche pas";
return $menu;
echo $menu;
}
$menu="Menu forcé";
echo $menu;
?>
========================
Je précise que ces 2 fichiers sont au même niveau dans l'arborescence.
Lors du test, j'ai :
Titre h1
début texte
puis plus rien
lorsque je déplace "INCLUDE", je constate que rien ne s'exécute dès l'instruction rencontrée
Bien sûr, pareil avec REQUIRE
J'ai cherché partout des heures entières, je ne comprends rien (je débute)
Salut , je trouve ton code assez bizarre, je vois pas trop ce que tu veux faire avec ton fichier menu.php. je te conseil de ne faire que des fonctions qui retourne des variables dans les fichier que tu inclus, comme ça tu peux faire tout tes include en haut de tes fichier, elles n'ont pas besoin de ce retrouver dans le body, évite les echo.
En tous cas dans ta fonction affiche_menu() tu fais un echo après un return, et ça je pense pas que ce soit valide.
@dariumis : j'ai volontairement retiré tout le code utile qui était dans menu et même dans index pour simplifier et tester
@afrnos : je travaille en local. J'ai déjà fait un site qui fonctionne très bien en local,. J'utilise MAMP et je teste en cliquant sur "Ouvrir la page d'accueil". Ca marche toujours, sauf pour ce script. Si j'enlève l'"INCLUDE",
le script se déroule jusqu'au bout , j'obtiens :
Titre h1
début texte
Fin texte
Merci à vous 2 d'essayer de m"aider. Je vous ai mis mes fichiers dans leur intégralité, peut-être manque-t-il quelque chose??
Si tu n'enlèves que le "include", ça devrait encore t'afficher 'OK' et 'Voilà le menu'.
Est-ce bien le cas ?
As-tu regardé le source de la page générée (Crtl-U dans le navigateur) pour voir si la balise <?php est là ou pas ?
Rajoute au tout début de ton script (avant le <!DOCTYPE) :
<?php error_reporting(E_ALL); ?>
Ça fera peut-être apparaître un message d'erreur.
Autre essai à faire : effacer le contenu de menu.php pour voir si c'est l'include ou le contenu du fichier qui pose un problème.
J'ai rajouté la ligne <?php error_reporting(E_ALL); ?> comme demandé, pas de message d'erreur
Dans menu.php, j'ai mis comme seule instruction echo "coucou";
même problème
j'ai supprimé écho "coucou"; donc il me reste :
<?php
?>
et là miracle tout s'affiche, (je comprends encore moins !!!)
Re miracle
Je viens de remettre echo 'coucou';
avec simples quotes, cela fonctionne
j'ai remis les doubles , cela marche aussi
Donc, je vais remettre mes véritables instructions pour voir si je m'en sors...
Je suis débutante dans ce domaine, mais j'ai développé "dans ma jeunesse" des logiciels, et je me souviens avoir eu avec des collègues des problèmes bizarres, cad il suffisait de tout effacer et ressaisir le texte pour que cela fonctionne, nous en déduisions qu'il devait y avoir des caractères parasites invisibles dans certains cas, car là j'ai tout effacé et ressaisi... !!!!???
Ton fichier inclu finissait certainement par un commentaire non fermé. C'est à dire que tu avais débuté un commentaire à la fin du ficher sans le refermé avec une balise fermante. Donc l'include a commenté le reste de ton code qui a reçu l'include et l'a donc rendu invisible. Je viens de me résoudre le même problème tout seul. :)
(Je sais que je déterre un vieux message mais comme ce topic est référencé par google et qu'aucune vraie solution n'a été apportée alors je le mets à jour.)