par
cmoi » 28 sept. 2010, 14:23
Bonjour,
de façon inattendue, le code ci-dessous ne fonctionne plus comme avant. Il affiche 4 articles sur 2 colonnes (ça c'est bon) et propose une page suivante à partir du 5e article. Sauf qu'en cliquant sur "page suivante", on retrouve les 4 mêmes articles.
Où est le bug et pourquoi, mystère ?
Merci à ceux qui voudront bien mettre le nez dans le code !
<?php
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
$nombre = 4; // on va afficher 4 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois
// on met limite à 0.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT count(id) FROM ballerines';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = 'select * FROM ballerines WHERE validation=1 ORDER BY id DESC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$nbCols = 2; // nombre de colonnes du tableau
$cpt = 0;
$rs = mysql_query($select);
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
// si on a récupéré un résultat on l'affiche.
// début du tableau
echo '<table>';
echo '<tr>';
echo '</tr>';
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while ($row=mysql_fetch_assoc($rs)) { // parcours des résultats
// début d'une ligne
if ($cpt%$nbCols==0)
echo '<tr>';
// Je prépare ma cellule
$cellule = '<td align="center" valign="top"><span class="style1">';
$cellule .= '<strong>'.$row['nom'].' </strong>';
$cellule .= '<br/><br/>';
$cellule .= $row['presentation'];
if (!empty($row['logo'])) { // le logo s'il existe
$cellule .= ' <img src="http://'.$row['logo'].'" height="30"/>';
$cellule .= '<br/>';
}
$cellule .= '<br/>';
$cellule .= '<a href="http://'.$row['photo'].'" target="_blank"><img src="http://'.$row['photo'].'" width="220" border="0"/></a>';
$cellule .= '<br/>';
$cellule .= $row['suite'];
$cellule .= '<br/>';
$cellule .= $row['prix'];
$cellule .= '<br/>';
$cellule .= $row['paypal'];
$cellule .= '</span></td>';
// et je l'affiche
echo $cellule;
if ($cpt%$nbCols==($nbCols-1))
echo '</tr>';
$cpt++; // on incrémente le compteur pour savoir où on en est
}
// Au cas où ...
if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'"> </td>'; // ... on complète avec une cellule vide de la bonne taille...
echo '</tr>'; // ... et on ferme la ligne
}
echo '</table>';
// fin du tableau.
// on libère le résultat
mysql_free_result($result);
//récupération de $limite
if(isset($_GET['limite']))
$limite=$_GET['limite']; else $limite=0;
function verifLimite($limite,$total,$nombre) {
// je verifie si limite est un nombre.
if(is_numeric($limite)) {
// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
// j'assigne 1 à $valide si $limite est entre 0 et $max
$valide = 1;
}
else {
// sinon j'assigne 0 à $valide
$valide = 0;
}
}
else {
// si $limite n'est pas numérique j'assigne 0 à $valide
$valide = 0;
}
// je renvois $valide
return $valide;
}
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'"> | Page Suivante</a>';
}
?>
Bonjour,
de façon inattendue, le code ci-dessous ne fonctionne plus comme avant. Il affiche 4 articles sur 2 colonnes (ça c'est bon) et propose une page suivante à partir du 5e article. Sauf qu'en cliquant sur "page suivante", on retrouve les 4 mêmes articles.
Où est le bug et pourquoi, mystère ?
Merci à ceux qui voudront bien mettre le nez dans le code !
[php] <?php
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
$nombre = 4; // on va afficher 4 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois
// on met limite à 0.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT count(id) FROM ballerines';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = 'select * FROM ballerines WHERE validation=1 ORDER BY id DESC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$nbCols = 2; // nombre de colonnes du tableau
$cpt = 0;
$rs = mysql_query($select);
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
// si on a récupéré un résultat on l'affiche.
// début du tableau
echo '<table>';
echo '<tr>';
echo '</tr>';
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while ($row=mysql_fetch_assoc($rs)) { // parcours des résultats
// début d'une ligne
if ($cpt%$nbCols==0)
echo '<tr>';
// Je prépare ma cellule
$cellule = '<td align="center" valign="top"><span class="style1">';
$cellule .= '<strong>'.$row['nom'].' </strong>';
$cellule .= '<br/><br/>';
$cellule .= $row['presentation'];
if (!empty($row['logo'])) { // le logo s'il existe
$cellule .= ' <img src="http://'.$row['logo'].'" height="30"/>';
$cellule .= '<br/>';
}
$cellule .= '<br/>';
$cellule .= '<a href="http://'.$row['photo'].'" target="_blank"><img src="http://'.$row['photo'].'" width="220" border="0"/></a>';
$cellule .= '<br/>';
$cellule .= $row['suite'];
$cellule .= '<br/>';
$cellule .= $row['prix'];
$cellule .= '<br/>';
$cellule .= $row['paypal'];
$cellule .= '</span></td>';
// et je l'affiche
echo $cellule;
if ($cpt%$nbCols==($nbCols-1))
echo '</tr>';
$cpt++; // on incrémente le compteur pour savoir où on en est
}
// Au cas où ...
if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'"> </td>'; // ... on complète avec une cellule vide de la bonne taille...
echo '</tr>'; // ... et on ferme la ligne
}
echo '</table>';
// fin du tableau.
// on libère le résultat
mysql_free_result($result);
//récupération de $limite
if(isset($_GET['limite']))
$limite=$_GET['limite']; else $limite=0;
function verifLimite($limite,$total,$nombre) {
// je verifie si limite est un nombre.
if(is_numeric($limite)) {
// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
// j'assigne 1 à $valide si $limite est entre 0 et $max
$valide = 1;
}
else {
// sinon j'assigne 0 à $valide
$valide = 0;
}
}
else {
// si $limite n'est pas numérique j'assigne 0 à $valide
$valide = 0;
}
// je renvois $valide
return $valide;
}
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'"> | Page Suivante</a>';
}
?>
[/php]