Toujours le chiffre 1 qui s'affiche

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 11:10

Bonjour à tous,

Ayant voulu faire des essais avec du Php, comme avant, je ne travaillais qu'en Html (1998), je me rends compte que c'est beaucoup plus flexible en Php.

Ce qui m'intrigue, c'est que le fichier "header.php" ne s'affiche pas au bon endroit, et ensuite, c'est le chiffre "1" qui s'affiche bien que dans mes scripts, ça n'y est pas.
]Image

index.php
<?php

$pages = [
	"accueil" => [
		"titre" => "Accueil",
	],
	"apropos" => [
		"titre" => "A propos",
	],
	"contact" => [
		"titre" => "Contact",
	],
	
];


if (	!isset($_GET["page"])
	||	!isset($pages[$_GET["page"]])
) {
	
	$code_page_par_defaut = "accueil"; // page par défaut
	
} else {
	
	$code_page_par_defaut= $_GET["page"];
	
}


$informations_page = $pages[$code_page_par_defaut];


?>

	
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8"/>
	<title><?php echo htmlspecialchars($informations_page["titre"]);?></title>
	<link rel="stylesheet" href="css/style.css">
	<link rel="stylesheet" href="css/header.css">
	<link rel="stylesheet" href="css/footer.css">
</head>
<body>

<!-- ----- Header.php ----- -->

<header>
	<?php echo include_once "header.php";?>
</header>

<!-- ----- menu ----- -->
<nav>	
	<?php foreach ($pages as $code_page => $tab_page) {?>
			
		<a href="?page=<?php echo htmlspecialchars($code_page);?>">
		<?php echo htmlspecialchars($tab_page["titre"]);?></a>
			
	<?php }?>
</nav>

<!-- ----- Conteneur des pages html ----- -->

	<div id="conteneur_page">
		<?php require_once "contenu/$code_page_par_defaut.php";?>
	</div>


<!-- ----- Footer.php ----- -->
<footer>		
	<?php echo include_once "footer.php"; ?> 
</footer>
	
</body>
</html>
header.php
header {
/*	width: 350px;
	height: 120px;*/
/*	margin: 0 auto;*/
/*	border-style: double;*/
	border-style: outset;
	background: yellow url(2img/logo/logo.jpg) not-repeat top;
}
footer.php
<?php
echo '<!DOCTYPE html>';
echo '<html lang="fr-FR">';
echo '<head>';
echo '	<meta charset="UTF-8" />';
echo '	<link rel="stylesheet" href="/css/footer.css" />';
echo '	<title></title>';
echo '</head>';
echo '<body>';
echo 'C\'est le footer qui s\'affiche<br />';
echo '<br />';
echo 'Et normalent, c\'est uniquement le texte de la page d\'accueil qui doit s\'afficher.<br />';
echo '</body>';
echo '</html>';
?>
Merci d'avance de vos réponses.

Cordialement,
JLB59430

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9513 Messages

24 janv. 2023, 12:19

include() inclus le contenu d'un fichier PHP directement en quelque sorte un peu comme si tu faisais un copier coller du fichier à l'emplacement de ton include()

Mais dans ton code, tu as fait un echo de include() => du coup tu demande à afficher le résultat de la fonction include(), comme elle s'exécute bien ça renvoie 1 pour dire que ça s'est bien passé. :-D

Supprime donc ton echo devant include() et tu n'auras plus de problème !
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 12:41

Merci, ça fonctionne, seulement j'ai perdu et la page footer.php et son css ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9513 Messages

24 janv. 2023, 12:55

Regarde le code HTML généré pour comprendre comment ça fonctionne car là tu fais un peu n'importe quoi.
Et commence par une page HTML ultra simple après tu complexifieras avec plusieurs include()
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 12:58

Avant :
Image

Après :
Image

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 13:00

Avant :

Après :
La syntaxe est bonne pourtant, mais rien ne s'affiche avec IMG, par contre avec QUOTE, ça va !

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 13:56

Regarde le code HTML généré pour comprendre comment ça fonctionne car là tu fais un peu n'importe quoi.
Et commence par une page HTML ultra simple après tu complexifieras avec plusieurs include()
J'ai peut-être fait une erreur quelque part en mélangeant html et php !
Mon site en ligne est fait pratiquement en html, mais c''est assez contraignent !

Je veux bien te croire en disant que j'ai certainement fait une erreur... mais laquelle ?

Mammouth du PHP | 1890 Messages

24 janv. 2023, 14:48

ce qui me choque directement,
ton css contenu dans header.php est contenu dans une balise <header> ce n'est pas comme cela qu'on insère une feuille de style. si ton style n'est pas dynamique, autant ne pas utiliser include mais bien la balise <link> que tu utilise pour les autres feuille de style

pour ton footer, tu inclu une page complète avec les balise doctype, html, head, body hors tout cela est dèjà inclu dans ta page de base, ne met que le code html du footer

ton css agit sur la balise <header> qui ne contient pas de texte, est-ce normal ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 18:05

ce qui me choque directement,
ton css contenu dans header.php est contenu dans une balise <header> ce n'est pas comme cela qu'on insère une feuille de style. si ton style n'est pas dynamique, autant ne pas utiliser include mais bien la balise <link> que tu utilise pour les autres feuille de style

pour ton footer, tu inclu une page complète avec les balise doctype, html, head, body hors tout cela est dèjà inclu dans ta page de base, ne met que le code html du footer

ton css agit sur la balise <header> qui ne contient pas de texte, est-ce normal ?
Je te comprends très bien, mais comme je n'arrivais pas à mettre en forme les header et footer, je me suis dis qu'en mettant le css directement dans le code, ça pourrait peut-être aller mieux.
Mais ça ne marche pas que ce soit avec ou sans !

Je pensais que la nouvelle fonction du html <header></header> pouvait permettre que le style soit relié directement avec la nouvelle fonction.
Je dis nouvelle car quand j'ai écrit mon site en 97, ça n'existait pas encore, pas à ma connaissance tout du moins !


Désolé, je n'ai pas trop compris !

C'est vrai que cela serait mieux, un peu comme le header, donc, je vais faire, tout au moins essayer de faire, au mieux pour que le code soit correct.

Avatar du membre
Eléphanteau du PHP | 42 Messages

24 janv. 2023, 18:29

J'ai essayé de faire au plus simple, mais apparemment, les "include" ne fonctionnent pas, peut-être que l'inverse, ça irait mieux (Page en php eppelant une page html).
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8"/>
	<link rel="stylesheet" href="style.css">
	
</head>
<body>

<header>Header
	<?php include "header.php"; ?> 
</header>

<nav>Nav
	<?php include "nav.php"; ?> 
</nav>

<div id="conteneur">
	Conteneur
	<section> Section </section>	

	<article> Article </article>

	<aside> Aside </aside>

</div>

<footer>Footer
	<?php include "footer.php"; ?> 
</footer>

</body>
</html>
J'ai mis le nom des endroits pour me faire une idée de ce que ça donnerait !

Y a pas plus simple, mais rien ne va, sauf le style !
<?php
echo 'Header compilation';
?>]
Normalement, il y a ici la capture d'écran, mais même avec la bonne orthographe, ça ne n'affiche pas.
Image
Par contre, en faisant ça, c'est OK !
http://qi98.free.fr/images/temp/Image4.jpg

Mammouth du PHP | 1890 Messages

25 janv. 2023, 11:38

Il est clair que la page contenant les include doit être en php, la page inclue peut être en php ou non selon le besoin qu'elle soit interprété ou non.

Regarde toujours le code source de la page généré, tu y verra plus d'indice pour ton debuggage. si php n'est pas interprété tu y verra ton code php mais il ne sera pas visible dans le navigateur

Basé sur le code de ton premier post, header.php ne contient que du code CSS qui après inclusion ne sera pas compris par le navigateur car incorrectement inclus. Quand bien même il serait compris, il n'agit que sur la balise header qui ne contient que ce style

Encore une chose, que ce passe t il si je vais sur ta page avec l'argument ?page=spols ? tu devrais inclure la gestion des comportements non voulu.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphanteau du PHP | 42 Messages

25 janv. 2023, 12:33

Il est clair que la page contenant les include doit être en php, la page inclue peut être en php ou non selon le besoin qu'elle soit interprété ou non.

Regarde toujours le code source de la page généré, tu y verra plus d'indice pour ton debuggage. si php n'est pas interprété tu y verra ton code php mais il ne sera pas visible dans le navigateur

Basé sur le code de ton premier post, header.php ne contient que du code CSS qui après inclusion ne sera pas compris par le navigateur car incorrectement inclus. Quand bien même il serait compris, il n'agit que sur la balise header qui ne contient que ce style

Encore une chose, que ce passe t il si je vais sur ta page avec l'argument ?page=spols ? tu devrais inclure la gestion des comportements non voulu.
Ce qui voudrait dire que je dois refaire la page en php ?


Pourtant, j'ai vu sur https://tutowebdesign.com/inclusion-fichiers-php.php qu'un fichier php pouvait être appelé depuis une page html !
http://qi98.free.fr/images/temp/Image5.jpg
Pourtant, ce n'est que du html !
Je comprends plus !!!!

Justement, c'est mon problème, est-ce que je vais arriver à faire cela !

Avatar du membre
Eléphanteau du PHP | 42 Messages

25 janv. 2023, 12:58

Effectivement, quand l'index est en php, tout s'affiche bien.
Seulement, je ne peux pas laisser les scripts html, je mettre tout ça dans "echo" pour que ça fasse du bon php !
Y a rien de compliqué et je vais faire ça... en espérant que tout se passera bien !

Merci pour tes conseils et ta patience Spols.

Je ne vais pas mettre comme résolu de suite, mais je le ferais certainement bientôt.

Mammouth du PHP | 1890 Messages

25 janv. 2023, 14:55

Par défaut un serveur est configuré pour interpréter le php que dans les fichier .php. Il est possible de modifier ce comportement mais je ne te le conseille pas.

il n'y a par contre aucun soucis à ne pas avoir de php dans un fichier .php
Ou seulement une partie, seule les scripts entre les balises php <?php ?> seront interprété, le reste est envoyé tel quel au navigateur.
le html n'est pas un language de script, mais un language de balise, il n'y a aucun soucis à laisser le html fixe (non dynamique) en dehors des balise php pour l'envoyer tel quel. C'est d'ailleur ce que tu avais en premier post.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphanteau du PHP | 42 Messages

25 janv. 2023, 16:42

En fait, d'après ce que tu dis, si un fichier nommé en php ne contient que du code html avec une ou plusieurs balises php, ça fonctionnerait quand même ?
Alors, là, je ne comprends plus ! :(
Parce que j'avais fait ça, l'index était en majeure partie écrit en html avec quelques script php et était en html, et bien, ces derniers n'étaient pas interprétés.
Par contre, dès que l'index.html a été renomme en index.php, tout allait bien !
Mais si je mets dans des balises "echo" toutes lignes html encadrées par <?php et ?>, plus rien n'a fonctionné !

C'est pour ça que je m'y perds un peu !
C'est assez complexe car j'ai tendance à mélanger le html et le php, je ne sais pas ce qui est bien ou pas, alors, je suis obligé d'y aller à tâtons... il suffit d'une petite faute d'orthographe ou autre pour que ça bug !