[résolu] Afficher les enregistrements par groupes

WRInaute impliqué
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:
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
 
WRInaute impliqué
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 !
 
WRInaute impliqué
Je progresse :wink: : le problème vient en fait du bout de code suivant :

i
Code:
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:
.../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
 
WRInaute impliqué
j'ai remplacé

Code:
if (!isset($start))

par

Code:
if (!isset($_GET['start']))

Et ça roule (forcément) !

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

Bonne continuation à tous
 
WRInaute passionné
SuperCureuil a dit:
j'ai remplacé

Code:
if (!isset($start))

par

Code:
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!
 
Discussions similaires
Haut