PHP require-include bloque tout

Résolu/Fermé
aryal888 Messages postés 12 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 2 février 2012 - 1 févr. 2012 à 23:19
LeDebatDesPrimaires Messages postés 1 Date d'inscription jeudi 19 janvier 2017 Statut Membre Dernière intervention 19 janvier 2017 - 19 janv. 2017 à 21:46
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


A voir également:

9 réponses

dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 63
Modifié par dariumis le 2/02/2012 à 00:05
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.
0
afrnos Messages postés 59 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 12 avril 2012 16
2 févr. 2012 à 00:08
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 ?
0
aryal888 Messages postés 12 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 2 février 2012 1
2 févr. 2012 à 08:31
@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??
0
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 ?
0

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

Posez votre question
aryal888 Messages postés 12 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 2 février 2012 1
2 févr. 2012 à 08:57
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
0
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.
0
aryal888 Messages postés 12 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 2 février 2012 1
2 févr. 2012 à 10:48
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
0
aryal888 Messages postés 12 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 2 février 2012 1
2 févr. 2012 à 10:56
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
0
LeDebatDesPrimaires Messages postés 1 Date d'inscription jeudi 19 janvier 2017 Statut Membre Dernière intervention 19 janvier 2017
19 janv. 2017 à 21:46
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.)
0