8725 sujets

Développement web côté serveur, CMS

salut
je suis débutant Smiley confused et j'ai suivi attentivement sur le site quelques astuces pour scinder son site en plusieurs pages dynamiques via PHP.
http://www.alsacreations.com/tuto/lire/579-Inclure-un-fichier-dans-un-autre-grace-a-PHP.html

mais je n'arrive pas à faire une chose et je me tourne donc vers vous car je ne vraiment pas...

j'ai un menu principal qui appelle différentes pages, pas de soucis pour cela (chacune en php) à l'aide de la fameuse commande "include".

Ensuite je veux faire un sous menu (une sidebar) présent dans une de ces pages celui-ci appellera un contenu apparaissant dans la partie droite, le contenu changeant à l'appel de chaque bouton

comment faire pour coller dans la div "contenu" les pages appelées???

<div id="sidebar">

<ul>
<li><a href="pages/test2.php">bt1</a></li>
<li><a href="pages/test2.php">bt2</a></li>
<li><a href="pages/test3.php">bt3</a></li>
</ul>

</div>

<div id="contenu">
<?php
include('test_bidon.html')
?>
	
</div>

à l'entrée de la page l'include s'affiche bien dans la div, et le voudrais que cela soit ainsi pour les autres boutons? mais ici on ne fait que se diriger vers une nouvelle page elle ne s'inclût pas pas la div?? ce que je ne sais faire? quel syntaxe dois-je pour assigner chaque page au clic dans la div contenu?

j'ai fait un petit schéma (comme on dit: mieux vaut un dessin qu'une explication compliquée Smiley sweatdrop )
upload/49725-testpage01.jpg

ne vous remerciant de me lire
cordialement

pouvez-vous m'aidez?
Modifié par cartonman (08 May 2013 - 19:45)
Si j'ai bien compris ce que tu demandes, tu souhaites n'avoir qu'une seule page où ta div contenu change à la volé au clic d'un des boutons du menu ? sans recharger la page ?

Si recharger la page n'est pas important, tu fais toutes tes pages .php sur le même schéma avec les mêmes includes et tu ne changes que la div contenu.

Autrement si c'est important, tu dois te diriger vers de l'AJAX (pas compliquer si tu cherches un peu sur Google à "ajax jquery").
Modérateur
Bonjour,

si tu veux tout faire par php tu est parti sur une mauvaise architecture. Cette architecture est très utilisée par les CMS et des systèmes avancés, mais demande un code assez conséquent. L'architecture inverse, ou dans chaque page tu appelles l'en-tête de page (avec le menu) et le pied de page est beaucoup plus simple à mettre en place proprement.

C'est bien expliqué ici:

http://www.alsacreations.com/actu/lire/254-le-point-sur-la-fonction-include-php.html
bonsoir merci d'avoir répondu
pour le cas présent celui de la page correspond à "menu00" qui s'affiche au niveau inférieur les intitulés appelés par la sidebar(sous-menu) s'afficheraient à côté là où j'ai indiqué "contenu".
à chaque fois on clique et le contenu apparaît (c'est pour faire des galeries photos...). Il y aura l'intitulé, le nom et on clique et on voit les miniatures d'images à côte (galerie d'images).

Je pensais qu'il était facile de coller une page php ou html dans une div... mais je ne vois pas comment on écrit cela????? mais effectivement Apoooo cela correspond à cela. Est-ce cohérent? que doit-on écrire pour chaque bouton?

Kustolovic l'architecture générale est basée sur l'assemblage que tu évoques, ici l'index appelle le header (où se trouve le menu général) ainsi que le footer. le header renvoi à différentes pages du menu.

merci de votre aide j'ai espoir d'y arriver mais je suis bloqué le iframe pourrait être intéressant mais bon, ça semblait si simple avec le "include".
merci
Modérateur
Ah oui je vois donc ce que tu veux faire, pas besoin d'iframe, de frame ou quoi que ce soit, plusieurs solutions:

#1 basique

page d'appel:

<?php
$submenu = 'monmenu';
include('header.php');
?>
etc.


header.php :

… des trucs …
// si $submenu est défini alors on inclut 'monmenu.php'
if (isset($submenu)) include($submenu.'.php');
… des trucs …


#2 basique :

page d'appel:

<?php
include('header.php');
?>
<div id="truc">bla bla bla</div>
<?php
include('sousmenu1.php');
?>


Là tu peux jongler entre les besoins Smiley langue

Il y a encore d'autres options plus avancées, mais je vais en rester là pour le moment
Modifié par kustolovic (09 May 2013 - 00:12)
Modérateur
cartonman a écrit :

Kustolovic l'architecture générale est basée sur l'assemblage que tu évoques, ici l'index appelle le header (où se trouve le menu général) ainsi que le footer. le header renvoi à différentes pages du menu.

Ou alors j'ai mal compris un truc: Si dans ton header tu inclus le contenu c'est là que ça coince:
selon ce modèle tu aura donc un truc du genre:

historique.php

<?php
  include('header.php');
?>
Le contenu de ma page ici!
<h1>Historique</h1>
<p>La société faitière des cultivateurs de choux-de-bruxelles est née de la synergie … </p>
<?php
  include('footer.php');
?>
merci d'avoir répondu, c'est très gentil,

pour avancer j'ai fait une page sidebar.php

la gestion générale du site via les include fonctionne, à l'heure présente j'ai cela:

1- Un index qui appelle le header, le footer, le contenu des pages(qui sont chacune des pages PHP)

code pour l'index (en remerciant les tutos et leurs auteurs sans quoi je n'y serait jamais arrivé)


<head>

<div id="page">

<?php include('inc/header.php');?>

<div class="content"></div>

<?php
			
			if (!empty($_GET['page'])) {
			
			$page = strtolower($_GET['page']); 
			
			$page_inc = 'pages/'.$page.'.php';
			
				if(file_exists($page_inc)) {
				
					include($page_inc);
				
				} else {
				
					echo '<h2>Big Error !</h2>';
					echo '<p>La page que vous recherchez n\'existe pas.</p>';
				}
				
			} else {
			
			?>

<h1>
page ABOUT
</h1>

</head>

<body>
<?php }?>

<?php include('pages/footer2.php');?>
</body>

</div>


2- un header avec une liste permettant d'afficher un menu dirigeant vers des pages qui apparaissent visuellement quand elles sont appelées en dessous.

le code:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<!--lien vers la page de code css-->
<link rel="stylesheet" href="style.css"/>
<script src="jquery.js"></script>
<script src="jojo.js"></script>

<title>le_site_de_lolo</title>
</head>

<header>
	<img id="logo_lolo" src="img/Logo_OK_01.png"/>
    <h1 id="logo"><a href="#"> My first web site</a></h1>
    
    
</header>

<body>

<!--ensemble des liens menant aux diverses pages-->
	<ul id="menu">
    	<li <?php if(empty($_GET['page'])) { echo 'class="active"'; } ?>><a href="index.php">ABOUT</a></li>
        
    	<li <?php if(!empty($_GET['page']) && $_GET['page'] == 'projets_artistiques') { echo 'class="active"'; } ?>><a href="index.php?page=page_projets_artistiques">ARTWORK</a></li>
        
        <li <?php if(!empty($_GET['page']) && $_GET['page'] == 'photo') { echo 'class="active"'; } ?>><a href="index.php?page=page_photo">PHOTO</a></li>
        
        <li <?php if(!empty($_GET['page']) && $_GET['page'] == 'Movie') { echo 'class="active"'; } ?>><a href="index.php?page=page_Movies">MOVIES</a></li>
        
        <li <?php if(!empty($_GET['page']) && $_GET['page'] == 'Games') { echo 'class="active"'; } ?>><a href="index.php?page=page_Games">GAMES</a></li>
        
        <li <?php if(!empty($_GET['page']) && $_GET['page'] == 'Music_video') { echo 'class="active"'; } ?>><a href="index.php?page=page_Music_vidéo">MUSIC VIDEO</a></li>
        
		<li <?php if(!empty($_GET['page']) && $_GET['page'] == 'Commercial') { echo 'class="active"'; } ?>><a href="index.php?page=page_Commercial">COMMERCIAL</a></li>        

	<li <?php if(!empty($_GET['page']) && $_GET['page'] == 'Contact') { echo 'class="active"'; } ?>><a href="index.php?page=page_Contact">CONTACT</a></li>
           
    </ul>


3- un footer (rien de très compliqué)

à cet instant nous avons une structure cohérente fonctionnant via des includes

mon gros soucis, mon impasse Smiley bawling est ici (quand on rentre dans de sou-pages): la création de pages diviser en deux où on trouve une sidebar (avec des boutons) permettant d'afficher à côté un contenu.

je comprend comment on colle la sidebar dans la page appelé par le menu général.

ici il s'agît du code de la page s'affichant via un clic sur une rubrique du menu, la page apparaissant dessous. Elle présente deux choses: une sidebar, et un div colorée destner à faire apparaitre en son sein le contenu de chaque rubrique évoqué dans le sou-menu

ici pas de soucis: la side bar est appelée et nous trouvons la div contenu qui contient justement un test php

<link rel="stylesheet" type="text/css" href="projet_artistique.css">

<div id="sidebar">

<?php
include('sidebar.php')
?>

</div>


<div id="contenu">

<?php
include('test_bidon.html')
?>
	
</div>


mais impossible pour moi appréhender le code pour commander un bouton du sous-menu afin qu'il s'affiche dans la div id="contenu", juste à côté.

maintenant le problème réside dans le code de la page sidebar.php de la liste du sous-menu


<ul>

<li><a href="pages/test2.php">Armes coquillages</a></li>
<li><a href="pages/test3.php">Robe de chambre</a></li>
<li><a href="#2">Clôchard Stycker </a></li>
<li><a href="#3">Charentaises</a></li>
<li><a href="#4">Tente Death Metal</a></li>
<li><a href="#5">Mini boîte de nuit</a></li>
<li><a href="#6">Boite de nuit<br> individuelle</br></a></li>
</ul>
 

car bien entendu là (comme l'exemple de la première ligne) ça ne colle pas... ici on ne fait qu’appeler une page (par exemple test2) qui s'affiche dans une nouvelle page du navigateur.

comment faire pour que cette ligne:


<li><a href="pages/test2.php">Armes coquillages</a></li>


appelle la page PHP "test2.php" et se colle dans la div id="contenu" au sein de la page

est-ce un problème de chemin ou autre????

merci pour vos retours je ne vois pas du tout ce qu'il faut faire est-ce un problème de chemin