PHP require-include bloque tout [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
2 février 2012
-
Messages postés
1
Date d'inscription
jeudi 19 janvier 2017
Statut
Membre
Dernière intervention
19 janvier 2017
-
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)

Merci de me guider


9 réponses

Messages postés
571
Date d'inscription
mardi 16 mars 2010
Statut
Membre
Dernière intervention
18 avril 2018
59
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.
Messages postés
59
Date d'inscription
mercredi 26 novembre 2008
Statut
Membre
Dernière intervention
12 avril 2012
16
Bonsoir,

Je viens de tester ton code, tel quel, et je ne rencontre aucun problème. J'ai bien le "Menu forcé" qui s'affiche.

Travailles-tu en local ?
Messages postés
12
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
2 février 2012

@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??
Bonjour

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 ?
Messages postés
12
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
2 février 2012

Si je n'enlève que la ligne INCLUDE, j'ai cela :

Titre h1

début texte

OK Voilà le menu
Fin texte

et code source :

<!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>
OK Voilà le menu<div>
<p> Fin texte </p>
</div>
</body>
</html>

====================
lorsque je remet la ligne INCLUDE :
Titre h1

début texte

et le code source :

<!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>

Merci encore de m'aider. C'est vraiment cet include qui ne passe pas (require pareil)
Pas d'erreur, simplement cet arrêt du script

C'est certainement un truc énorme... mais lequel ?
Je répète que je suis débutante dans ce domaine...

Merci
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.
Messages postés
12
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
2 février 2012

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 !!!)

Désolée de vous casser la tête...
Merci
Messages postés
12
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
2 février 2012

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... !!!!???

Merci encore de m'avoir guidée
Messages postés
1
Date d'inscription
jeudi 19 janvier 2017
Statut
Membre
Dernière intervention
19 janvier 2017

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.)