[résolu] Afficher les enregistrements par groupes


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

[résolu] Afficher les enregistrements par groupes

Message le Ven Mar 09, 2007 10:17

Bonjour,


Je débute en php et m'excuse déjà si ma question est c... , mais bon, là, j'ai beau essayer, je sèche lamentablement !

Voilà, n'étant pas capable de faire ce que je veux tout seul, j'ai récupéré un bout de script que j'essaye d'adapter à mon cas ... mais malgré tt, ça coince encore !

Je voudrais récupérer les enregistrements d'une table en les classant par catégorie, par groupes de 10. Jusque là tt va bien, du moins pour les 10 premiers enregistrements. En effet, le problème survient lorsqu'on clique sur le lien permettant d'afficher les 10 enregistrements suivants : malgré une valeur différente attribuée à $start, j'obtiens toujours les 10 mêmes résultats !

Voilà le code :
Code: Tout sélectionner
if (!isset($start)) {
   $start=0;
   } else {
   $start=$_GET['start'];
   }
   $req = mysql_query("SELECT * FROM annuaire WHERE categorie LIKE '$categorie' ORDER BY '$categorie' LIMIT ".$start.",".$nb);
   $compte = mysql_query("SELECT COUNT(*) from annuaire WHERE categorie='".$categorie."'");

if (mysql_result($compte,0) == 0) {  // S'il n'y a pas encore de site ds la catégorie
   echo "<p>Il n'y a pas encore de site dans cette catégorie. Profitez-en donc pour y ajouter le vôtre s'il y correspond !</p>";
}
else {
    while($row=mysql_fetch_assoc($req))
    {
    ?>
<--------- code html/php pour l'affichage ------------------------------>

<?php
$result=mysql_query("SELECT COUNT(*) from annuaire WHERE categorie='".$categorie."'");
$row = mysql_fetch_row($result);
if (!isset($_GET['start'])) {
   $start == "0";
}
else $start = $_GET['start'];
if ($start == "0") {
   echo"<b><font size=\"1\" face=\"Verdana\">[1]</font></b>";
}   else {
       echo"<a href=\"sites.php?categorie=$categorie&start=0\">[1]</a>";
   }
for($index=1;($index*$nb)<$row[0];$index++) {
   $pg = $index+1;
   if(($index*$nb)!=$start) {
      print("&nbsp;<a href=\"sites.php?categorie=$categorie&start=".($index*$nb)."\">");
      echo"[".$pg."]";
      print("</a>");
   }
   else {
       echo" <b><font size=\"1\" face=\"Verdana\">[".$pg."]</font></b>";
   } }
?>


Il y a des redondances et le code n'est pas optimisé mais vu que je suis en train de me battre avec, je balance un peu la sauce à tout vent, je réglerai ça après.

Voilà, si qq pouvait m'aider à y voir plus clair, ça m'ferait plaisir !

Par ailleurs, si vous aves des suggestions quant à la syntaxe que j'utilise ou l'optimisation du code, je suis preneur également.

Merci d'avance à ceux qui pourront m'aider à me sortir de cette impasse

SuperCureuil
Dernière édition par SuperCureuil le Ven Mar 09, 2007 12:18, édité 1 fois.


xTrade
WRInaute passionné
WRInaute passionné
 
Messages: 2289
Inscription: 11 Déc 2006

Message le Ven Mar 09, 2007 10:42

Regarde la réponse de Tilt à ma question : http://www.webrankinfo.com/forums/viewtopic_69068.htm

J'ai l'impression que tu as le même problème que celui que j'avais exposé.


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Ven Mar 09, 2007 11:05

Merci pour le tuyau, il y a en effet une corrélation avec mon problème mais la deuxième solution que tu as trouvée ne s'applique pas à mon cas, et je ne ne parviens pas à extrapoler car je ne veux pas afficher les résulats entre tel et tel id ou autre champ mais bien à partir d'un nombre de résultats (pffffff vous suivez car j'ai l'impression que c'est vraiment pas clair ? :wink: )

Merci quand même xtrade, je continue à chercher en ce sens en tentant d'appliquer le limit différemment ...

EDIT : En fait, je crois que plutôt que d'un limit, j'aurais besoin d'une instruction signifiant "à partir de". Doit y'avoir ça en stock, je :arrow: faire des recherches :lol:

Re-EDIT : ben non apparemment le limit tel qu'il est exprimé devrait fonctionner ... je n'y comprends rien et je ne vois pas du tout où se situe le problème !


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Ven Mar 09, 2007 12:12

Je progresse :wink: : le problème vient en fait du bout de code suivant :

i
Code: Tout sélectionner
f (!isset($start)) {
   $start=0;
   } else {
   $start=$_GET['start'];
   }


En fait la variable start est censée être passée en paramètre dans l'url mais ce n'est pas le cas et donc le sinon n'est jamais executé ...
Est-ce que cela provient de la structure de l'url ->
Code: Tout sélectionner
.../index.php?categorie='$categorie'&start='...


Comment puis-je faire passer ce paramètre ? L'erreur est-elle causée par la présence de deux paramètres ?

Merci pour vos lumières


SuperCureuil
WRInaute impliqué
WRInaute impliqué
 
Messages: 673
Inscription: 9 Mar 2007

Message le Ven Mar 09, 2007 12:21

j'ai remplacé

Code: Tout sélectionner
if (!isset($start))


par

Code: Tout sélectionner
if (!isset($_GET['start']))


Et ça roule (forcément) !

C'était pas très fut' fut ':oops:

Bonne continuation à tous


xTrade
WRInaute passionné
WRInaute passionné
 
Messages: 2289
Inscription: 11 Déc 2006

Message le Ven Mar 09, 2007 13:46

SuperCureuil a écrit:j'ai remplacé

Code: Tout sélectionner
if (!isset($start))


par

Code: Tout sélectionner
if (!isset($_GET['start']))


Et ça roule (forcément) !

C'était pas très fut' fut ':oops:

Bonne continuation à tous


Ah oui, pas vu :oops:

De programmer majoritairement dans des langages du type c++ fait que je n'ai pas l'habitude de voir ce genre d'erreur. Ca plante tout de suite à la compilation, c'est pratique!


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité