par
Carnyx » 29 janv. 2008, 23:40
Je remets le code après les modifications :
<!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> Mon site </title>
<style type="text/css">
body {
margin-left: 25px;
margin-top: 60px;
margin-right: 20px;
margin-bottom: 10px;
background-color: #FFFF66;
}
</style>
<link href="feuille_de_style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:active {
text-decoration: none;
}
-->
</style>
<!-- pagination : le style -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="Jean Molliné" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
/* <![CDATA[ */
body {
color: #000;
background-color: #efefef;
font-family: verdana, helvetica, sans-serif;
font-size: 80% !important;
}
p.situation {
text-align: right;
padding: 1em;
}
p.navigation {
text-align: center;
font-size: 0.85em;
text-decoration: underline;
}
p.date_nouv {
float: right;
font-size: 0.85em;
}
/* ]]> */
</style>
</head>
<body>
<!-- la fonction include-->
<?php
// on inclut l'affichage de nos news
include ('liste_news.php');
?>
</div>
<!-- ici le code php pour les encarts de la zone1 -->
<div id="zone1">
<?php include("./entetes.php"); ?>
<?php include("./entetes2.php"); ?>
<?php include("./entetes3.php"); ?>
</div>
<!--pagination -->
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<?php
/**
Commençons par fixer les paramètres :
*/
/* Paramètres de connexion */
$admin_bd = "monsite"; /* Le pseudonyme permettant à l'administrateur de se connecter */
$mdp_bd = "mdp"; /* Le mot d passe de l'administrateur de base de données */
$serveur_bd = "ftp.hebergement.net"; /* L'adresse du serveur de base de données */
$base_bd = "monSite"; /* La base de données où sont enregistrées les informations */
/* Paramètres de pagination */
$nb_nouv_par_page = 5; /* Nombre de nouvelles qui seront affichées sur chaque page */
$url = "./Les_Nouvelles.php?page=";
/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee = ($page_en_cours + 1);
/* Connexion au serveur de base de données */
$connexion = mysql_pconnect($serveur_bd, $admin_bd, $mdp_bd);
mysql_select_db($base_bd);
/* Requête pour compter les nouvelles présentes dans notre base de données */
$sql_nb = "SELECT COUNT(*) FROM `news`";
/* Exécution de la requête et récupération du résultat */
$resultat_1 = mysql_query($sql_nb);
$nb_news = mysql_result($resultat_1, 0);
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($nb_news / $nb_nouv_par_page);
/**
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
if($nb_pages > 0)
{
/* On définit une variable qui contiendra les données de navigation */
$barre_nav = "";
/* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
if($nb_pages > 1)
{
/**
Nous avons plusieurs pages: nous allons afficher successivement les liens vers
les pages précédentes s'il y en a, la page en cours et les liens vers les pages
suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
sauf pour la page en cours dont nous mettrons le chiffre en gras
*/
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}
/**
On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une
page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
*/
$barre_nav .= "<strong>". $page_affichee ."</strong>";
/* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
if(($page_affichee) < $nb_pages)
{
/* Il reste encore d'autres pages à afficher */
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++)
{
$p = $j + 1;
$barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
/* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
$page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
}
else
{
/* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
$barre_nav .= "page 1/1";
}
/**
On peut maintenant afficher notre page. On va commencer par récupérer les informations
On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT.
*/
$debut = $page_en_cours * $nb_nouv_par_page;
$sql_n = "SELECT titre, contenu, Date, auteur FROM news LIMIT ". $debut .", ". $nb_nouv_par_page .";";
$news = mysql_query($sql_n);
?>
<p class="situation"><?php echo($page_affichee); ?></p>
<?php
while($nouv = mysql_fetch_assoc($news))
{
?>
<p class="date_nouv">Publié le <?php echo($nouv['Date']); ?></p>
<h3><?php echo($nouv['titre']); ?></h3>
<p><?php echo(nl2br($nouv['contenu'])); ?></p>
<hr />
<?php
}
/* on libère la mémoire */
mysql_free_result($resultat_1);
mysql_free_result($news);
/* On peut fermer la connexion à MySQL */
mysql_close($connexion);
/* On affiche maintenant la barre de navigation */
?>
<p class="navigation"><?php echo($barre_nav); ?></p>
<?php
}
else
{
/**
Nous n'avons aucune page, on peut alors afficher un message autre
sans devoir nous préoccuper de la navigation
*/
?>
<h3>Aucune nouvelle n'a encore été publiée à ce jour</h3>
<hr />
<?php
}
?>
</body>
</html>
<!-- fin de la pagination -->
<!-- Le pied de page -->
<div id="pied_de_page">
<p>Copyright "Le collectif 2007, tous droits réservés</p>
</div>
</body>
</html>
J'ai donc toujours les erreurs mysql :
<b>Warning</b>: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in <b>/home/monsite/Les_Nouvelles.php</b> on line <b>190</b><br />
<br />
<b>Warning</b>: mysql_free_result(): supplied argument is not a valid MySQL result resource in <b>/home/monsite/Les_Nouvelles.php</b> on line <b>201</b><br />
Les news s'affichent entièrement sur la page 1 mais aussi entièrement sur la page 2 (donc deux fois la même page de news)
EDIT: je viens de changer une ligne et ça a l'air d'aller mieux (c'est les champs de ma base)
$sql_n = "SELECT Date, titre, texte_news, auteur FROM news LIMIT ". $debut .", ". $nb_nouv_par_page .";";
Je continue à chercher
Je remets le code après les modifications :
[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> Mon site </title>
<style type="text/css">
body {
margin-left: 25px;
margin-top: 60px;
margin-right: 20px;
margin-bottom: 10px;
background-color: #FFFF66;
}
</style>
<link href="feuille_de_style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:active {
text-decoration: none;
}
-->
</style>
<!-- pagination : le style -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="Jean Molliné" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
/* <![CDATA[ */
body {
color: #000;
background-color: #efefef;
font-family: verdana, helvetica, sans-serif;
font-size: 80% !important;
}
p.situation {
text-align: right;
padding: 1em;
}
p.navigation {
text-align: center;
font-size: 0.85em;
text-decoration: underline;
}
p.date_nouv {
float: right;
font-size: 0.85em;
}
/* ]]> */
</style>
</head>
<body>
<!-- la fonction include-->
<?php
// on inclut l'affichage de nos news
include ('liste_news.php');
?>
</div>
<!-- ici le code php pour les encarts de la zone1 -->
<div id="zone1">
<?php include("./entetes.php"); ?>
<?php include("./entetes2.php"); ?>
<?php include("./entetes3.php"); ?>
</div>
<!--pagination -->
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<?php
/**
Commençons par fixer les paramètres :
*/
/* Paramètres de connexion */
$admin_bd = "monsite"; /* Le pseudonyme permettant à l'administrateur de se connecter */
$mdp_bd = "mdp"; /* Le mot d passe de l'administrateur de base de données */
$serveur_bd = "ftp.hebergement.net"; /* L'adresse du serveur de base de données */
$base_bd = "monSite"; /* La base de données où sont enregistrées les informations */
/* Paramètres de pagination */
$nb_nouv_par_page = 5; /* Nombre de nouvelles qui seront affichées sur chaque page */
$url = "./Les_Nouvelles.php?page=";
/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee = ($page_en_cours + 1);
/* Connexion au serveur de base de données */
$connexion = mysql_pconnect($serveur_bd, $admin_bd, $mdp_bd);
mysql_select_db($base_bd);
/* Requête pour compter les nouvelles présentes dans notre base de données */
$sql_nb = "SELECT COUNT(*) FROM `news`";
/* Exécution de la requête et récupération du résultat */
$resultat_1 = mysql_query($sql_nb);
$nb_news = mysql_result($resultat_1, 0);
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($nb_news / $nb_nouv_par_page);
/**
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
if($nb_pages > 0)
{
/* On définit une variable qui contiendra les données de navigation */
$barre_nav = "";
/* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
if($nb_pages > 1)
{
/**
Nous avons plusieurs pages: nous allons afficher successivement les liens vers
les pages précédentes s'il y en a, la page en cours et les liens vers les pages
suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
sauf pour la page en cours dont nous mettrons le chiffre en gras
*/
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}
/**
On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une
page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
*/
$barre_nav .= "<strong>". $page_affichee ."</strong>";
/* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
if(($page_affichee) < $nb_pages)
{
/* Il reste encore d'autres pages à afficher */
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++)
{
$p = $j + 1;
$barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
/* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
$page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
}
else
{
/* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
$barre_nav .= "page 1/1";
}
/**
On peut maintenant afficher notre page. On va commencer par récupérer les informations
On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT.
*/
$debut = $page_en_cours * $nb_nouv_par_page;
$sql_n = "SELECT titre, contenu, Date, auteur FROM news LIMIT ". $debut .", ". $nb_nouv_par_page .";";
$news = mysql_query($sql_n);
?>
<p class="situation"><?php echo($page_affichee); ?></p>
<?php
while($nouv = mysql_fetch_assoc($news))
{
?>
<p class="date_nouv">Publié le <?php echo($nouv['Date']); ?></p>
<h3><?php echo($nouv['titre']); ?></h3>
<p><?php echo(nl2br($nouv['contenu'])); ?></p>
<hr />
<?php
}
/* on libère la mémoire */
mysql_free_result($resultat_1);
mysql_free_result($news);
/* On peut fermer la connexion à MySQL */
mysql_close($connexion);
/* On affiche maintenant la barre de navigation */
?>
<p class="navigation"><?php echo($barre_nav); ?></p>
<?php
}
else
{
/**
Nous n'avons aucune page, on peut alors afficher un message autre
sans devoir nous préoccuper de la navigation
*/
?>
<h3>Aucune nouvelle n'a encore été publiée à ce jour</h3>
<hr />
<?php
}
?>
</body>
</html>
<!-- fin de la pagination -->
<!-- Le pied de page -->
<div id="pied_de_page">
<p>Copyright "Le collectif 2007, tous droits réservés</p>
</div>
</body>
</html>[/php]
J'ai donc toujours les erreurs mysql :
<b>Warning</b>: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in <b>/home/monsite/Les_Nouvelles.php</b> on line <b>190</b><br />
<br />
<b>Warning</b>: mysql_free_result(): supplied argument is not a valid MySQL result resource in <b>/home/monsite/Les_Nouvelles.php</b> on line <b>201</b><br />
Les news s'affichent entièrement sur la page 1 mais aussi entièrement sur la page 2 (donc deux fois la même page de news)
[b]EDIT[/b]: je viens de changer une ligne et ça a l'air d'aller mieux (c'est les champs de ma base)
$sql_n = "SELECT Date, titre, texte_news, auteur FROM news LIMIT ". $debut .", ". $nb_nouv_par_page .";";
Je continue à chercher