Pagination de la page new.php

9 posts in this topic

Posted · Report post

Bonjour

La pagination n'apparaît pas dans la page des Nouveautés.

Voici le lien : http://www.pearlaccess.com/boutique/achat/new.php

Or, j'ai plus de 500 nouveautés et je ne veux pas les afficher sur une seule page.

Il y a bien la fonction habituelle de pagination en bas de page, mais elle n'apparaît pas sur le site.

Voici le script de pagination complet :

//Boutons précédent et suivant

if($start)

{print("<a class=petit href=\"achat/new.php?catid=".$catid."&start=".($start-$nb)."\">Page précédente</a>");}

$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = $catid AND p.etat = 1 AND p.on_new = 1");

$row=mysql_fetch_row($result);

if($row[0]>($start+$nb))

{

if($start)

{print(" / ");}

print("<a class=petit href=\"achat/new.php?catid=".$catid."&start=".($start+$nb)."\">Page suivante</a>");

}

print("<br>");

//Affichage des pages

if($row[0]>$nb) {// le nombre d'enreg. est > au nb de lignes d'affichage ?

print("Page : ");

for($index=0;($index*$nb)<$row[0];$index++) // oui alors on affiche les numéros de pages

{

?>

<b><a class="pagination" href="<?=$_SERVER['PHP_SELF']."?catid=".$catid."&start=".$index*$nb; ?>">

<?php

echo ($index*$nb == $start) ? "<b>[" : "";

echo $index+1;

echo ($index*$nb == $start) ? "]</b>" : "";

?>

</a></b>  

<?

}

}

// FIN DU SCRIPT

Merci d'avance pour votre aide

Sophie

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Tres beau design ton site ! J'aime bien.

Pourrais-je avoir les sources de la page NEW.php

Logiquement au début de la source on devrait retrouver une valeur comme celle ci

$nb = 30; //nombre d'enregistrement par page

Share this post


: post
Share on other sites

Posted · Report post

Bonjour

Merci pour le compliment.

Voici, ci-dessous, le code complet de la page new.php (et oui, $nb=65 existe)

<?

include("../configuration.inc.php");

if (!isset($_GET['catid'])) { $catid = 0;} else {$catid = intval($_GET['catid']);}

$DOC_TITLE = "[PEEL.FR]";

include("$repertoire_modele/haut.php");

echo "<div class=\"entete\">".NEWS."</div>";

$nb = 65; //nombre d'enregistrement par page

if (!isset($_GET['start'])) {$start=0;} else {$start = intval($_REQUEST['start']);}

// Récupération et affichage des données

$sql = "SELECT p.id, p.reference, p.nom, p.promotion, p.descriptif, p.description, p.image1, p.image2, p.prix, p.prix_revendeur, p.on_stock, p.points, p.on_special, pc.categorie_id FROM peel_produits p, peel_produits_categories pc, peel_categories c WHERE p.id = pc.produit_id AND pc.categorie_id = c.id AND p.on_new = '1' AND p.etat = '1' AND p.lang = '".$_SESSION['langue']."' ORDER BY p.position LIMIT $start,$nb";

$result=mysql_query($sql);

if (mysql_num_rows($result) == 0) {

echo "<div class=\"texte\">".NO_INDEX_PRODUCT."</div>";

} else {

echo "<table border=0 cellpadding=\"3\" cellspacing=0 width=100%>";

$nb_cellules = mysql_num_rows($result);

$nb_colonnes = 5;

$j = 0;

while($prod=mysql_fetch_array($result))

{

if ( $j % $nb_colonnes == 0 ) {

echo "<tr>";

}

if($j % $nb_colonnes !=0 OR $j % $nb_colonnes == 0 ) {

if ( $j % $nb_colonnes == 0 OR $j == $nb_cellules ) { echo "<td class=\"newsCelluleTwo\" width=\"20%\" valign=\"top\">"; } else { echo "<td class=\"newsCelluleTwo\" width=\"20%\" valign=\"top\">"; }

?>

<table align="center" border="0" cellspacing="0" cellpadding="3" width="100%">

<tr>

<td class="normal" align="center" valign="top">

<? if (!empty($prod['image1'])) {

if (!empty($prod['image2'])) {

echo "<a href=\"java script:OpenWin('".$repertoire_images.$prod['image2']."',450,350,'zoom')\">";

}

echo "<a href=\"achat/produit_details.php?id=".$prod['id']."&catid=.$prod['categorie_id]."\"><img src=\"$wwwroot/administrer/upload/".$prod['image1']."\" width=\"80\" border=\"0\" alt=\" ".$prod['nom']." : Cliquez ici pour en savoir plus\" ></a>";

if (!empty($prod['image2'])) {

echo "</a><br /><a class=\"petit\" href=\"java script:OpenWin('".$repertoire_images.$prod['image2']."',450,350,'zoom')\">zoom</a>";

}

} else {

echo "<img src=\"$wwwroot/images/photo-non-disponible.gif\">";

}

?>

</td>

<!-- toutes les autres informations réunies dans une colonne à côté de la photo

<td align="left" valign="top" class="normal">

<a class="titre" href="achat/produit_details.php?id=<?=//$prod['id'] ?>&catid=<?=//$catid?>"><?=//stripslashes($prod['nom']) ?></a><br />

<?php

# Affichage du descriptif

//echo stripslashes($prod['descriptif']); ?>

</td>

-->

</tr>

<tr>

<td valign="top" class="normal" align="center">

<?php

echo "<a class=\"normal\" href=\"achat/produit_details.php?id=".$prod['id']."&catid=.$prod['categorie_id]."\">".MORE."</a><p>";

if (est_identifie()) {

if (a_priv("admin")) {

echo "<div align=\"center\">".stripslashes($prod['reference'])."</div><br>";

echo "<div align=\"center\"><a href=\"administrer/produits.php?mode=modif&id=".$prod['id']."\" class=\"normal\">MODIFIER</a></div>";

}

}

?>

</td>

</tr>

</table>

<?php

}

echo "</td>";

$j++;

if ( $j % $nb_colonnes == 0 OR $j == $nb_cellules ) {

echo "</tr>";

}

}

echo "<td align=\"center\" class=\"normal\" colspan=\"5\">";

//Boutons précédent et suivant

if($start)

{print("<a class=petit href=\"achat/new.php?catid=".$catid."&start=".($start-$nb)."\">Page pr&eacute;c&eacute;dente</a>");}

$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = $catid AND p.etat = 1 AND p.on_new = 1");

$row=mysql_fetch_row($result);

if($row[0]>($start+$nb))

{

if($start)

{print(" / ");}

print("<a class=petit href=\"achat/new.php?catid=".$catid."&start=".($start+$nb)."\">Page suivante</a>");

}

print("<br>");

//Affichage des pages

if($row[0]>$nb) {// le nombre d'enreg. est > au nb de lignes d'affichage ?

print("Page :&nbsp;");

for($index=0;($index*$nb)<$row[0];$index++) // oui alors on affiche les numéros de pages

{

?>

<b><a class="pagination" href="<?=$_SERVER['PHP_SELF']."?catid=".$catid."&start=".$index*$nb; ?>">

<?php

echo ($index*$nb == $start) ? "<b>[" : "";

echo $index+1;

echo ($index*$nb == $start) ? "]</b>" : "";

?>

</a></b>&nbsp;&nbsp;

<?

}

}

echo "</td></tr></table>";

}

include("$repertoire_modele/bas.php");

?>

FIN

Merci d'avance

Share this post


: post
Share on other sites

Posted · Report post

Bonjour

Voici, ci-dessous, le code complet de la page new.php (et oui, $nb=65 existe)

Le nb correspond aux nombres d'article affichés dans la page.

Que ce passe t'il si tu met $nb=30 au lieu de 65 par ex ? As tu ta pagination qui s'affiche ?

Car actuellement tu as bien 65 articles d'affichés !

Share this post


: post
Share on other sites

Posted · Report post

Oui, cela ne change rien. En fait, j'avais déjà plus de 100 nouveautés. Alors, pour varier en attendant de résoudre le problème, je ne faisais que changer (dans la requête sql) ASC et DESC. (donc du pur bricolage !)

J'ai tout de même fait le test. Tu verras : là, il n'y en a que 30 d'affichés.

Mais de mémoire, il me semble que ce problème est valable aussi pour la page special.php (qui affiche les promotions, même si cela pose moins de problèmes vu qu'on ne met jamais beaucoup d'articles en promo en même temps).

Ces problèmes se posent car nous avons plus de 3000 références dans ce site.

Encore merci de ton intérêt (en espérant qu'on trouve la solution)

Sophie

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

A priori j'ai trouvé petit bug ! ;)

Le problème se situe dans la requete pour la pagination !

Toi comme nous tous dans peel nous devons trouver ceci :

//Boutons précédent et suivant 

if($start) 

{print("<a class=petit href=\"achat/new.php?catid=".$catid."&start=".($start-$nb)."\">Page pr&eacute;c&eacute;dente</a>");} 


$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = $catid AND p.etat = 1 AND p.on_new = 1");
Or pour cette pagination la requete interroge la catégorie (qui ne sert à rien car nous voulons que des produits !) Alors dans cette requete nous allons enlever le :
pc.categorie_id = $catid
pour y mettre à la place seulement les produits en nouveautés
p.on_new = 1
. il faut aussi enlever ce morceau dans les lien <a href= ....
catid=".$catid."&
et laisser
<a class=petit href=\"achat/new.php?start=".($start-$nb)."\">

Tout devrait fonctionnier ! :huh:

Share this post


: post
Share on other sites

Posted · Report post

Merci Cédric j'ai testé ton code sur mon site y marche impec, j'ai modifié

<a class=petit href=\"index.php?start=".($start-$nb)."\"> par <a class=petit href=\"achat/new.php?start=".($start-$nb)."\">

et tout marche nikel je met le code a disposition, je vais modifier aussi le code de mes autres pages comme achat/special.php

Bas de page de achat/new.php

//Boutons précédent et suivant 
if($start)
{print("<a class=petit href=\"achat/new.php?start=".($start-$nb)."\">Page précédente</a>");}

$result=mysql_query("SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND p.etat = 1 AND p.on_new = 1");

$row=mysql_fetch_row($result);

if($row[0]>($start+$nb))
{
if($start)
{print(" / ");}
print("<a class=petit href=\"achat/new.php?start=".($start+$nb)."\">Page suivante</a>");
}

print("<br />");

//Affichage des pages
if($row[0]>$nb) {// le nombre d'enreg. est > au nb de lignes d'affichage ?
print("Page : ");
for($index=0;($index*$nb)<$row[0];$index++) // oui alors on affiche les numéros de pages
{
?>
<b><a class="petit" href="<?=$_SERVER['PHP_SELF']."?start=".$index*$nb; ?>"><? echo $index+1; ?></a></b>
<?
}
}
echo "</td></tr></table>";
}
include("$repertoire_modele/bas.php");



?>
[/codebox]

Merci encore à toi

Share this post


: post
Share on other sites

Posted · Report post

Un grand merci.

Tout fonctionne parfaitement.

Bonne journée

Sophie

Share this post


: post
Share on other sites

Posted · Report post

SUper j'ai testé le code su site, génial. Par contre comment faire pour que le nom et le prix du produit apparaisse à côté ou en bas de la photo? Merci beaucoup

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping