Salut tout le monde !
J'ai cette aprem visionné le tutoriel sur décomposer un site en php ( Texte du lien), tout marche bien à l'exception de quelque chose.
J'ai donc une page index.php qui permet d'inclure la page en fonction du $_GET'p'], ma page template, et un dossiers content avec toutes mes pages. Et j'ai remarqué que lorsque que je fais une requête sql sur ma page news.php situé dans le dossier content, ca m'affiche ceci :
Erreur SQL !
SELECT * FROM news ORDER BY id DESC
Table 'freeheberg.news' doesn't exist
Alors que cela ne le fait pas sur ma page template.
Donc voici ma page index.php qui est la racine :
<?php
define("WEBROOT", "/Url/");
if(!isset($_GET'p'])){ $_GET'p']="index"; }
if(!file_exists("content/".$_GET'p'].".php")){ $_GET'p']="404"; }
ob_start();
include "content/".$_GET'p'].".php";
$content = ob_get_contents();
ob_end_clean();
include "template.php";
?>
Ma page template.php :
<?php
session_start();
require "config.php";
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db(DB_BDD);
mysql_query('SET NAMES "UTF8"');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 STRICT//EN" "http://www.w3.org/TR/xhtml1/DTDxhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:kang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php if(isset($title)): ?>
<?php echo $title; ?>
<?php else: ?>
<title>Life</title>
<?php endif; ?>
<link href="<?php echo WEBROOT; ?>theme/style.css" rel="stylesheet" type="text/css" media="screen" />
<style type="text/css">
.green{
color: green;
}
.red{
color: red;
}
</style>
</head>
<body>
<?php
extract($_POST);
$erreur2 ="";
if(isset($_POST'connect'])){
if(isset($_POST'pseudo']) && isset($_POST'pass'])){
if(!empty($_POST'pseudo']) && !empty($_POST'pass'])){
$pseudo = mysql_real_escape_string($_POST'pseudo']);
$pass = mysql_real_escape_string($_POST'pass']);
$pass = sha1($pass);
$sql=" SELECT COUNT(*) AS nbr FROM membres WHERE pseudo='".$pseudo."' AND pass='".$pass."'";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data'nbr'] == 1){
$_SESSION'pseudo'] = $_POST'pseudo'];
}
elseif($data'nbr'] == 0){
$erreur2 = "Vos identifiants sont incorrects.";
}
}
else{
$erreur2 = " Au moins un champ est vide.";
}
}
}
?>
<div id="barre">
<?php
if(isset($_SESSION'pseudo'])){
echo '<div class="barrel" style="padding-top: 6px;">Bonjour ' . htmlspecialchars($_SESSION'pseudo']) . '. ';
$sql2 = " SELECT level FROM membres WHERE pseudo ='".$_SESSION'pseudo']."'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
$data2 = mysql_fetch_assoc($req2);
$_SESSION'level'] = $data2'level'];
if($_SESSION'level'] == 2){
echo 'Salut chef! ';
}
echo '</div>'; ?>
<div id="menu_options">
<dl>
<dt>Menu</dt>
<dd>
<ul>
<li><a href="#">Lien 1</a></li>
<li><a href="#">Lien 2</a></li>
<li><a href="#">Lien 3</a></li>
</ul>
</dd>
</dl>
</div>
<?php
echo '<div class="barrer"><a href="'.WEBROOT.'users/deconnexion">Se déconnecter</a></div>';
}else{
?>
<div class="barrel">
<form method="post" action="index.php">
Pseudo : <input type="text" name="pseudo"/> Mot de passe : <input type="password" name="pass"/> Mot de passe oublié ? <input type="submit" value="Connexion" name="connect"/>
</form>
</div>
<div class="barrer"><a href="<?php echo WEBROOT; ?>inscription">Inscription</a></div>
<?php
}
?>
</div>
<div id="menu">
<ul>
<li><a href="<?php echo WEBROOT; ?>">Accueil</a></li>
<li><a href="<?php echo WEBROOT; ?>news">News</a></li>
<li><a href="#">Profils</a></li>
<?php if($erreur2){echo "<div id=\"bulle\">".$erreur2."</div>"; } ?>
<li class="right"><a href="#">Contact</a></li>
</ul>
</div>
<div style="clear: left;"></div>
<div id="haut_conteneur"></div>
<div id="content_conteneur">
<div id="contenu">
<?php echo $content; ?>
</div>
<div id="haut_nav"></div>
<div id="contenu_nav">
Top 10 Life :
<br/><br/><br/><br/>
<hr style="width: 50%;">
Top 10 Lifeurs :
<br/><br/><br/>
<hr style="width: 50%;">
Pub
</div>
<div id="bas_nav"></div>
</div>
<div id="bas_conteneur"></div>
<div id="copyright">Life.fr <br/>Copyright © 2011. <br/>Tous droits <br/>réservés </div>
</body>
</html>
Et ma page news.php :
<?php
$title = "<title>News</title>";
$sql_news="SELECT * FROM news ORDER BY id DESC";
$req_news= mysql_query($sql_news) or die('Erreur SQL !<br />'.$sql_news.'<br />'.mysql_error());
while($dataNews=mysql_fetch_assoc($req_news)){
$contenu = $dataNews'contenu'];
$contenu = preg_replace('#\<strong>(.+)\</strong>#isU', '<b>$1</b>', $contenu); // Regex pour remplacer en <b>
echo "<div id=\"haut_contenu\" style=\"margin-top: 15px;\">".htmlspecialchars($dataNews"titre"])."</div>";
echo "<div id=\"content_contenu\">".$contenu."<br/>";
echo "<span align=\"left\">Publié le ".date("j/n/Y G:i",strtotime($dataNews"date"]))." par ".htmlspecialchars($dataNews"pseudo"])."</span><br/><br/><br/>";
$sqlComs="SELECT id FROM comment WHERE news_id={$data"id"]}";
$reqComs= mysql_query($sqlComs) or die('Erreur SQL !<br />'.$sqlComs.'<br />'.mysql_error());
echo "Il y a <a href=\"voir_com.php?id={$data'id']}\" onclick=\"window.open(this.href); return false;\">".mysql_num_rows($reqComs)." commentaires</a> <br/>";
echo '</div>';
echo "<div id=\"bas_contenu\"></div>";
}
?>
J'ai également remarqué quelque chose d'étrange, si je met juste ceci dans ma page news.php cela fonctionne correctement :
<?php
$title = "<title>News</title>";
$sql_news="SELECT * FROM news ORDER BY id DESC";
?>
En espérant avoir été assez clair !
merci pour vos réponses.