8791 sujets

Développement web côté serveur, CMS

Salut à tous,

J'ai lu ce tuto mais il fait pas ce que je veux j'ai l'impression.

Je veux utiliser un "système" avec un fichier index.php qui reçois comme une structure/gabarit, les autres pages du site :

Du type :
index.php reçois contact.php
index.php reçois actualite.php
etc

Je suis une quiche, j'utilise un "jeu de fichier" au taff sui marche bien mais chez moi je m'en sort pas.
Je suis intégrateur, pas dév...please be cool...

Quelqu'un t-il un lien vers un tuto pour faire ça ?

Sinon :

Voila ce que j'ai été habitué a voir (et ce avec quoi je bricole actuellement...):
Un index.php

<?php
define('ROOT', dirname(__FILE__));
define('WEBROOT', (isset($_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF']) and !empty($_SERVER['HTTP_HOST']) and !empty($_SERVER['PHP_SELF'])) ? 'http://' . htmlentities(trim($_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']), chr(32).chr(9).chr(10).chr(13).chr(0).chr(11).'/'), ENT_QUOTES ) . '/' : '');
define('CURRENTURL', (isset($_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF']) and !empty($_SERVER['HTTP_HOST']) and !empty($_SERVER['PHP_SELF'])) ? 'http://' . htmlentities(trim($_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'], chr(32).chr(9).chr(10).chr(13).chr(0).chr(11).'/'), ENT_QUOTES ) : '');
include ROOT . '/include/prepend.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>XXXXXXXXXXXX</title>
		<meta http-equiv="Content-Script-Type" content="text/javascript" />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<link rel="stylesheet" type="text/css" href="css/screen.css" />
	 
		<script type="text/javascript" src="js/mootools.js"></script>
		<script type="text/javascript" src="js/flashmessage.js"></script>
		<script type="text/javascript" src="js/functions.js"></script>
		<script type="text/javascript" src="js/replacement.js"></script>
	</head>
	<body>
            <div id="content">
                 <p><a href="contact.html">Contact test</a></p> 
                 <?php include ROOT . '/content.php'; ?>
            </div>
	</body>
</html>
<?php include ROOT . '/include/append.php'; ?>


Ce fichier, au click sur un lien comme contact.php par exemple, charge le fichier contact.php dans lui meme : dans index.php, à l'endroit où il est écrit :
<?php include ROOT . '/content.php'; ?>


content.php contient :


<?php

if( !isset( $_GET['page'] ) or in_array( $_GET['page'], array( 'index', 'content' ) ) ) {
	$_GET['page'] = 'home';	
}

if( ctype_alnum( $_GET['page'] )  ) {
	
	if( in_array( $_GET['page'], array('aproposdenous','aproposdenousbis', 'vision', 'missionmetier', 'strategie', 'pragmatisme', 'clients', 'partenaires','developmanage') ) ) {
		$currentpage = null;
		$rqt = "SELECT `id` FROM `pages` WHERE `nompage`='".mysql_real_escape_string( $_GET['page'] )."'";
		$resultat = mysql_query($rqt);
		if($resultat and mysql_num_rows($resultat) == 1){
			$currentpage = mysql_fetch_assoc($resultat);
			include( ROOT . '/pagestatique.php' );
		}
		unset($rqt, $resultat, $currentpage);
	}
	elseif( file_exists( ROOT . '/' . $_GET['page'] . '.html' ) ) {
		readfile( ROOT . '/' . $_GET['page'] . '.html' );
	} elseif( file_exists( ROOT . '/' . $_GET['page'] . '.php' ) ) {
		include( ROOT . '/' . $_GET['page'] . '.php' );
	} else {
		include( ROOT . '/404.php' );
	}
} else {
	include( ROOT . '/404.php' );
}

?>



Il y a aussi un .htacess...souvent...hum...bon.

Son contenu :


Options +FollowSymlinks
Options -Indexes
Options -Multiviews

###
# Rewrite config
###
RewriteEngine on

RewriteRule ^article-([0-9]+)\.html$  index.php?page=article&id=$1 [L]
RewriteRule ^articles-([0-9]+)\.html$  index.php?page=articles&numpage=$1 [L]


RewriteRule ^confirm-([0-9]+)-([0-9A-Za-z]+)\.html$  index.php?page=newsletter&idinsc=$1&coderetour=$2 [L] 
RewriteRule ^([0-9A-Za-z]+)\.html$  index.php?page=$1 [L]


L'index reçois bien la page par defaut qui est définie dans .content : la home.php mais si je clique sur contact il me l'inclue pas dans l'index...


Merci d'avance : )
Modifié par Hum (26 Feb 2009 - 15:37)
Salut,

Hum a écrit :
Je veux utiliser un "systeme" avec un fichier index.php qui reçois comme une structure/gabarit, les autres pages du site :

Du type :
index.php reçois contact.php
index.php reçois actualite.php
etc
Un site dynamique en somme. Smiley cligne


Edit: le lien mène vers un tuto qui stocke le contenu dans Mysql. Pour un "équivalent" à base d'include tu peux t'inspirer de ce sujet.
Modifié par Heyoan (25 Feb 2009 - 20:38)
Salut,

a écrit :
Edit: le lien mène vers un tuto qui stocke le contenu dans Mysql. Pour un "équivalent" à base d'include tu peux t'inspirer de ce sujet.


Ce deuxième lien semble etre ce que je veux , puisqu'on fait ça sans base de données.
Mais je galère...pas capable de composer avec deux sources de tutos différentes Héyoan....

J'essaye avec ça en vain dans mon index :
Un tuto d'ici


<?php
    if ($_GET['page'] == "index")
    {
        include("home.php");
    }
    
    if ($_GET['page'] == "photosGal")
    {
        include("photosGal.php");
    }
    
    if ($_GET['page'] == "forum")
    {
        include("forum.php");
    }
    
    ?>


Smiley decu
Hum a écrit :
Mais je galère...pas capable de composer avec deux sources de tutos différentes
C'est ou l'un ou l'autre mais le mix est effectivement compliqué. Smiley cligne

Sinon quel est ton problème (le code semble correct) ?


Notice: Undefined index: page in C:\Program Files\EasyPHP 2.0b1\www\chaos2\index.php on line 58

Notice: Undefined index: page in C:\Program Files\EasyPHP 2.0b1\www\chaos2\index.php on line 63

Notice: Undefined index: page in C:\Program Files\EasyPHP 2.0b1\www\chaos2\index.php on 


Une page en ligne aiderai ?
Hum a écrit :
Une page en ligne aiderai ?
Pour du PHP il faudrait plutôt voir le code. Smiley cligne

Mais en l'occurrence tu as ces warnings car tu testes la valeur d'une variable qui n'existe pas (faire une recherche sur register_globals).

Tu pourrais faire :
<?php
$page = isset($_GET['page']) ? $_GET['page'] : 'index'; // Récupération de la variable page si elle existe. Sinon 'index' par défaut
switch($page) {
    case 'index' :
		$page_a_inclure = 'home.php';
		break;
    case 'photosGal' :
		$page_a_inclure = 'photosGal.php';
		break;
    case 'forum' :
		$page_a_inclure = 'forum.php';
		break;
    default :
		$page_a_inclure = 'home.php';
}
include $page_a_inclure;
?>
Ton erreur c'est que la variable $_GET['page'] n'existe pas, c'est plutôt un problème dans ton lien/formulaire d'accès, qui ne défini pas cette variable. Ou peut-être qu'elle est définie, mais en POST?

Ca manque un peu de code oui pour savoir d'où vient exactement ton soucis, mais ton erreur c'est bien une variable (enfin, un index dans le tableau $_GET) qui n'existe pas.
Modifié par Planplan (26 Feb 2009 - 10:18)
ok merci à vous, j'avance j'ai l'impression mais....

Avec ton code HeYoan, la home s'inclue bien.
Mais les autres pages non, comme ma page photosGal.php par ex.

J'essaye avec des liens du type :
href="index.php?id=photosGal"


Autrement, Héyoan, je comprend assez bien ton bout de code, le switch avec les cases, "ça me cause" a part que j'arrive pas a faire ce que je veux avec ! ; )

Par contre si je remplace home par photoGal pour $page_a_inclure du permier case du Switch, alors la page photoGal.php est incluse dans l'index.

Faudrai pas faire un tableau avec ma liste de page ?


index.php :
Désolé pour l'indentation...





<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
	   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title> </title>
		<meta http-equiv="Content-Script-Type" content="text/javascript" />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<link rel="shortcut icon" href="favicon.ico" />
		<meta name="robots" content="noindex, nofollow" />
		    
	</head>
	<body>
  
  
   <div id="content">
	<div id="colonne_one"><!-- colonne_one --> 
	
<ul id="menuP">
	<li>
	 <span><span><a href="index.php">Accueil / Homepage</a></span></span> 
	</li>
	<li>
	 <span><span><a href="chaos1.php">Projet "Le chaos ordinaire"</a></span></span> 
	</li>
							
	<li>
		<span><span><a href="index.php?id=photosGal">Photos</a></span></span> 
	</li>
	<li>
		<span><span><a href="video.php">Vidéos</a></span></span> 
	</li>
	<li>
		<span><span><a href="artwork.php">Art work</a></span></span> 
	</li>		
	<li class="contactArtist">
		<span>
			<span>
				<a href="contactArtist.php">
					<span>
						Contacter les artistes du projet<br />
						Le chaos ordinaire
					</span>
				</a>
			</span>
		</span> 
	</li>	 	
	<li>
		<span><span>
		<a href="paypalPage.php">Get notek 20 for Real...</a></span></span> 
	</li>	 														
</ul>	 
		       
 </div><!-- colonne_one --> 
			  

<div id="colonne_two1">
			 
 
	 
	 <?php

$page = isset($_GET['page']) ? $_GET['page'] : 'index'; // Récupération de la variable page si elle existe. Sinon 'index' par défaut

switch($page) {

    case 'index' :

		$page_a_inclure = 'home.php';

		break;

    case 'photosGal' :

		$page_a_inclure = 'photosGal.php';

		break;

    default :

		$page_a_inclure = 'home.php';

}

include $page_a_inclure;

?>

 
 						 
		<hr style="clear: both; visibility: hidden; height: 0" /> 
					 </div><!--  / colonne_two1 -->
			   </div><!--  / colonne_two -->
			 
	  </div><!--  / content  -->	
	</body>
</html>
 	  


Smiley smile Merci...
Modifié par Hum (26 Feb 2009 - 14:37)
Hum a écrit :
J'essaye avec des liens du type :
href="index.php?id=photosGal"
Hum... (<- gag désopilant Smiley lol ) il va falloir revoir la récupération des variables en GET : avec $_GET['page'] c'est plutôt
href="index.php?[b]page[/b]=photosGal"
Excellent. Super !

Ca fonctionne.

Smiley jap Rapides, sympa, et toujours efficaces les gars d'ici... Smiley jap