par
Cyrano » 22 sept. 2005, 21:31
Plusieurs choses :
-1- Quand tu mets du code, regarde au dessus de la zone de saisie, il y a des boutons [
code] et [
php] : c'est pas pour décorer, utilise les pour mettre du code dans tes messages.
-2- Le sujet n'a pas grand chose à voir avec le forum "Base de données", j'ai donc déplacé ic où c'est le sujet;
-3- : quand tu fais du code, essaye de faire ça de façon lisible et opitimisée dès le départ, on repère les bugs beaucoup plus vite.
Ton erreur vient de ce que tu envoies en paramètres d'url une valeur dont on a rien à faire : f est toujours supérieur a debut de 10, j'en ai rapidement conclu que tu pointais la fin. Mais en fait, tu dois spécifier au départ un nombre de lignes à afficher par page dans une variable qui reste dans la page et que tu n'as pas besoin de passer en paramètre.
Ensuite, sépare le PJHP du HTML, c'est beaucoup plus propre, c'est plus lisible, et c'est meilleur également pour les performances : essaye comme ça:
<?php require "bienvenue/BIneuf/BIneufConfig.php";?>
<table width="670" class="TABpage">
<tr>
<td class="sous-titre"><h3>Actualité des chemins et sentiers</h3></td>
</tr>
<tr>
<td height="10"></td>
</tr>
<tr>
<td>
<?php
// Début du tableau
?>
<table width="100%" border="0" cellspacing="2" cellpadding="4">
<tr height="20" align="center" valign="top">
<td class="TABcolonne" width="90">Dates</td>
<td class="TABcolonne" width="570">Sujets</td>
</tr>
<?php
// Liste des articles
/* On récupère la page de départ s'il y en a une de précisée, sinon ce sera 0 par défaut */
$debut = isset($_GET['debut']) ? $_GET['debut'] : 0;
/* On définit le nombre de ligne par défaut */
$npages = 10;
// Ouverture de la BD $Articles
mysql_select_db($database_Articles, $Articles);
$requete = "SELECT * FROM articles WHERE theme = 'Actualité' AND typelangue = 'FR' ORDER BY date DESC LIMIT ".$debut.", ".$npages."";
$resultats = mysql_query($requete) or die ("<p align=center class=text>Lecture des articles impossible</p>");
$nb_resultats = mysql_num_rows($resultats);
$requete_nb = "SELECT * FROM articles";
$resultats_nb = mysql_query($requete_nb) or die ("");
$nb_resultats_nb = mysql_num_rows($resultats_nb);
$nb_pages = ceil($nb_resultats_nb/$npages);
// Liste des articles
while ($row = mysql_fetch_array($resultats))
{
$sujet = $row['sujet'];
$lien = $row['lien'];
$resume = $row['resume'];
$auteur = $row['auteur'];
$theme = $row['theme'];
$date = $row['date'];
list($annee,$mois,$jour) = split( '[/.-]', $date );
// Différence de dates pour la nouveauté des sujets
$timestamp = mktime(0,0,0,$mois,$jour,$annee);
$d2 = time();
$d3 = $d2 - $timestamp;
$d4 = floor($d3 / 86400);
$nouveau = ($d4>30) ? "" : "Nouveau";
// Affichage du "par"
$par = ($auteur=="") ? "" : "par";
?>
<tr>
<td bgcolor="#ECECEC" width="90" align="center" valign="top" class="sansretrait"><?php echo($jour."/".$mois."/".$annee); ?><br><font size="1" color="#FF0000"><?php echo($nouveau); ?></font></td>
<td bgcolor="#ECECEC" width="430" align="left" >
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="15" valign="top" class="sansretrait">
<strong><a href="<?php echo($lien); ?>"><?php echo($sujet); ?></a></strong><br>
<font size="1" color="#BCBCBC"><?php echo($par." ".$auteur); ?></font>
</td>
</tr>
<tr>
<td class="sansretrait">
<font size="1"><?php echo($resume); ?></font>
</td>
</tr>
<tr>
<td height="5"> </td>
</tr>
</table>
</td>
</tr>
<?php
}
// Fin du tableau
?>
</table>
<?php
// Fermeture de la BD $Articles
mysql_close($Articles);
?>
<br><center>
<font size="1" color="#99CC33" face="Verdana, Arial, Helvetica, sans-serif">
<?php
// Bouton "Précédent"
if ($debut!="0")
{
$debut_new1=$debut-$npages;
$f_new1=$debut;
?>
<a href="principal.php?section=comprendre&langue=<?php echo($_SESSION['langue']); ?>&page=COactualite&num=Liste&debut=<?php echo($debut_new1); ?>&f=<?php echo($f_new1); ?>"><font color="#55811B"> Précédent </font></a> |
<?php
}
// Affichage n° pages
if ($nb_pages > 1)
{
for ($i=0;$i<$nb_pages;$i++)
{
if(isset($debut_page))
{
$debut_page=$debut_page+$npages;
}
else
{
$debut_page="0";
}
$f_page = $f_page+$npages;
$num_page=$i+1;
if($debut==$debut_page)
{
echo $num_page."\n";
}
else
{
if ($debut_page<$nb_resultats_nb)
{
?>
<a href="principal.php?section=comprendre&langue=<?php echo($_SESSION['langue']); ?>&page=COactualite&num=Liste&debut=<?php echo($debut_page); ?>&f=<?php echo($f_page); ?>"><font color="#55811B"><?php echo($num_page); ?></font></a>
<?php
}
}
}
}
// Bouton "Suivant"
if ($f<$nb_resultats_nb)
{
$debut_new2=$f;
$f_new2=$f+$npages;
?>
| <a href="principal.php?section=comprendre∓langue=<?php echo($_SESSION['langue']); ?>&page=COactualite&num=Liste&debut=<?php echo($debut_new2); ?>&f=<?php echo($f_new2); ?>"><font color="#55811B"> Suivant </font></a>
<?php
}
?>
</font>
</td>
</tr>
<tr>
<td height="10"> </td>
</tr>
</table>
Regarde les lignes 22 et 24, j'ai modifié et rajouté des commentaires, tu devrais comprendre. En principe le reste devrait être bon.
Plusieurs choses :
-1- Quand tu mets du code, regarde au dessus de la zone de saisie, il y a des boutons [[b]code[/b]] et [[b]php[/b]] : c'est pas pour décorer, utilise les pour mettre du code dans tes messages.
-2- Le sujet n'a pas grand chose à voir avec le forum "Base de données", j'ai donc déplacé ic où c'est le sujet;
-3- : quand tu fais du code, essaye de faire ça de façon lisible et opitimisée dès le départ, on repère les bugs beaucoup plus vite.
Ton erreur vient de ce que tu envoies en paramètres d'url une valeur dont on a rien à faire : f est toujours supérieur a debut de 10, j'en ai rapidement conclu que tu pointais la fin. Mais en fait, tu dois spécifier au départ un nombre de lignes à afficher par page dans une variable qui reste dans la page et que tu n'as pas besoin de passer en paramètre.
Ensuite, sépare le PJHP du HTML, c'est beaucoup plus propre, c'est plus lisible, et c'est meilleur également pour les performances : essaye comme ça:
[php]<?php require "bienvenue/BIneuf/BIneufConfig.php";?>
<table width="670" class="TABpage">
<tr>
<td class="sous-titre"><h3>Actualité des chemins et sentiers</h3></td>
</tr>
<tr>
<td height="10"></td>
</tr>
<tr>
<td>
<?php
// Début du tableau
?>
<table width="100%" border="0" cellspacing="2" cellpadding="4">
<tr height="20" align="center" valign="top">
<td class="TABcolonne" width="90">Dates</td>
<td class="TABcolonne" width="570">Sujets</td>
</tr>
<?php
// Liste des articles
/* On récupère la page de départ s'il y en a une de précisée, sinon ce sera 0 par défaut */
$debut = isset($_GET['debut']) ? $_GET['debut'] : 0;
/* On définit le nombre de ligne par défaut */
$npages = 10;
// Ouverture de la BD $Articles
mysql_select_db($database_Articles, $Articles);
$requete = "SELECT * FROM articles WHERE theme = 'Actualité' AND typelangue = 'FR' ORDER BY date DESC LIMIT ".$debut.", ".$npages."";
$resultats = mysql_query($requete) or die ("<p align=center class=text>Lecture des articles impossible</p>");
$nb_resultats = mysql_num_rows($resultats);
$requete_nb = "SELECT * FROM articles";
$resultats_nb = mysql_query($requete_nb) or die ("");
$nb_resultats_nb = mysql_num_rows($resultats_nb);
$nb_pages = ceil($nb_resultats_nb/$npages);
// Liste des articles
while ($row = mysql_fetch_array($resultats))
{
$sujet = $row['sujet'];
$lien = $row['lien'];
$resume = $row['resume'];
$auteur = $row['auteur'];
$theme = $row['theme'];
$date = $row['date'];
list($annee,$mois,$jour) = split( '[/.-]', $date );
// Différence de dates pour la nouveauté des sujets
$timestamp = mktime(0,0,0,$mois,$jour,$annee);
$d2 = time();
$d3 = $d2 - $timestamp;
$d4 = floor($d3 / 86400);
$nouveau = ($d4>30) ? "" : "Nouveau";
// Affichage du "par"
$par = ($auteur=="") ? "" : "par";
?>
<tr>
<td bgcolor="#ECECEC" width="90" align="center" valign="top" class="sansretrait"><?php echo($jour."/".$mois."/".$annee); ?><br><font size="1" color="#FF0000"><?php echo($nouveau); ?></font></td>
<td bgcolor="#ECECEC" width="430" align="left" >
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="15" valign="top" class="sansretrait">
<strong><a href="<?php echo($lien); ?>"><?php echo($sujet); ?></a></strong><br>
<font size="1" color="#BCBCBC"><?php echo($par." ".$auteur); ?></font>
</td>
</tr>
<tr>
<td class="sansretrait">
<font size="1"><?php echo($resume); ?></font>
</td>
</tr>
<tr>
<td height="5"> </td>
</tr>
</table>
</td>
</tr>
<?php
}
// Fin du tableau
?>
</table>
<?php
// Fermeture de la BD $Articles
mysql_close($Articles);
?>
<br><center>
<font size="1" color="#99CC33" face="Verdana, Arial, Helvetica, sans-serif">
<?php
// Bouton "Précédent"
if ($debut!="0")
{
$debut_new1=$debut-$npages;
$f_new1=$debut;
?>
<a href="principal.php?section=comprendre&langue=<?php echo($_SESSION['langue']); ?>&page=COactualite&num=Liste&debut=<?php echo($debut_new1); ?>&f=<?php echo($f_new1); ?>"><font color="#55811B"> Précédent </font></a> |
<?php
}
// Affichage n° pages
if ($nb_pages > 1)
{
for ($i=0;$i<$nb_pages;$i++)
{
if(isset($debut_page))
{
$debut_page=$debut_page+$npages;
}
else
{
$debut_page="0";
}
$f_page = $f_page+$npages;
$num_page=$i+1;
if($debut==$debut_page)
{
echo $num_page."\n";
}
else
{
if ($debut_page<$nb_resultats_nb)
{
?>
<a href="principal.php?section=comprendre&langue=<?php echo($_SESSION['langue']); ?>&page=COactualite&num=Liste&debut=<?php echo($debut_page); ?>&f=<?php echo($f_page); ?>"><font color="#55811B"><?php echo($num_page); ?></font></a>
<?php
}
}
}
}
// Bouton "Suivant"
if ($f<$nb_resultats_nb)
{
$debut_new2=$f;
$f_new2=$f+$npages;
?>
| <a href="principal.php?section=comprendre∓langue=<?php echo($_SESSION['langue']); ?>&page=COactualite&num=Liste&debut=<?php echo($debut_new2); ?>&f=<?php echo($f_new2); ?>"><font color="#55811B"> Suivant </font></a>
<?php
}
?>
</font>
</td>
</tr>
<tr>
<td height="10"> </td>
</tr>
</table>
[/php]
Regarde les lignes 22 et 24, j'ai modifié et rajouté des commentaires, tu devrais comprendre. En principe le reste devrait être bon.