Pagination de la page new.php

9 messages dans ce sujet

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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 !

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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:

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Un grand merci.

Tout fonctionne parfaitement.

Bonne journée

Sophie

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping