Page 1 sur 2
Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 11:10
par jlb59430
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.
]
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
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 12:19
par @rthur
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é.
Supprime donc ton echo devant include() et tu n'auras plus de problème !
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 12:41
par jlb59430
Merci, ça fonctionne, seulement j'ai perdu et la page footer.php et son css ?
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 12:55
par @rthur
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()
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 12:58
par jlb59430
Avant :
Après :

Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 13:00
par jlb59430
Avant :
Après :
La syntaxe est bonne pourtant, mais rien ne s'affiche avec IMG, par contre avec QUOTE, ça va !
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 13:56
par jlb59430
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 ?
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 14:48
par Spols
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 ?
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 18:05
par jlb59430
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.
Re: Toujours le chiffre 1 qui s'affiche
Posté : 24 janv. 2023, 18:29
par jlb59430
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.

Par contre, en faisant ça, c'est OK !
http://qi98.free.fr/images/temp/Image4.jpg
Re: Toujours le chiffre 1 qui s'affiche
Posté : 25 janv. 2023, 11:38
par Spols
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.
Re: Toujours le chiffre 1 qui s'affiche
Posté : 25 janv. 2023, 12:33
par jlb59430
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 !
Re: Toujours le chiffre 1 qui s'affiche
Posté : 25 janv. 2023, 12:58
par jlb59430
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.
Re: Toujours le chiffre 1 qui s'affiche
Posté : 25 janv. 2023, 14:55
par Spols
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.
Re: Toujours le chiffre 1 qui s'affiche
Posté : 25 janv. 2023, 16:42
par jlb59430
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 !