[php mysql] problème de order, limit et pages

Fermé
fabfabou Messages postés 4 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 16 mars 2007 - 9 mars 2007 à 11:45
 lural - 13 janv. 2008 à 13:31
Bonjour

Premiers pas en php et sur CCM...

Alors voilà. J'ai un problème avec un affichage de résultats sur plusieurs pages.

J'ai besoin d'extraire des listes de produits (avec les infos qui vont avec) d'un site pour en faire un fichier xml (pour l'importer ensuite dans des applications). Chaque fichier xml correspondant à un type de produit (il y a plusieurs types de produits dans le site). J'ai donc une première page avec la liste des types de produits, un bouton et hop, ça génère le xml.

Lorsqu'il n'y a pas beaucoup de produits dans le type sélectionné, tout va bien. L'xml est créé, etc.

Par contre, lorsqu'il y a beaucoup de produits, c'est trop long, et donc il faut découper en plusieurs pages. Et c'est là qu'est le problème.

Mon prédecesseur avait préparé ceci :

Première page : on choisit le type de produit et une page. Voici le code pour choisir la page :

echo "<SELECT NAME=\"limite\">
	<option value=\"non\">__</option>
	<option value=\"0\">0</option>
	<option value=\"1\">1</option>
	<option value=\"2\">2</option>
	<option value=\"3\">3</option>
	<option value=\"4\">4</option>
	<option value=\"5\">5</option>
	<option value=\"6\">6</option>
	<option value=\"7\">7</option>
	<option value=\"8\">8</option>
	<option value=\"9\">9</option>
	<option value=\"10\">10</option></select>"; 
echo "<input type=\"submit\" value=\"Valider\"></form>";


Suivi dans la page suivante de :

$limit=$_POST['limite'];
if($limit=="non")
	{
	$limit1=0;
	$limit2=999999;
	}
else
	{
	$limit1=$limit*200;
	$limit2=$limit1+200;
	}


Ensuite, je passe les détails pour récupérer le type de produit etc., mais voici la requête principale :

$result = mysql_query("SELECT id, titre FROM videos WHERE genre ='".mysql_escape_string($genrepost)."' AND visible ='1'  ORDER BY titre LIMIT ".$limit1.",".$limit2."") or die (mysql_error());


Suivi d'un while et de tout ce qu'il faut pour récupérer les informations supplémentaires et les afficher correctement dans un fichier.xml.

Lorsqu'on choisit la page 1, tout va bien, les premiers résultats s'affichent dans l'ordre alphabétique. Les problèmes arrivent dès lors qu'on affiche les pages suivantes.
Ainsi, lorsqu'on affiche la page 2 ou la page 3, les résultats sont dans l'ordre alphabétique mais on trouve certains résultats en commun sur la page 2 et la page 3. La 2 et la 3 commencent avec des produits différents et finissent avec les mêmes produits.

J'ai vu que mysql arrête de trier dès qu'il a trouvé la limite. Est-ce la raison de mon problème ? Est-il ailleurs ?

En tout cas, merci beaucoup à quiconque pourra éclairer ma lanterne !

2 réponses

Salut,

J'ai le même soucie avec un script différent mais le résultat rechercher semble être le même et les problème identique comme si le limit ne fonctionné pas correctement. Jaimerais aussi avoir la solution.

Merci
0
Bonjour, bonjour !

Même souci pour moi.
J'ai d'abord penser que le serveur ou la version d'Oracle (pour mon cas) ne prenait pas cette fonction, mais je n'ai pas trouver d'autres renseignements.
Gérer cela en php me parait assez crade, surtout s'il existe une possibilité SQL ...

Si quelqu'un peut aider, ou donner une autre possibilité pour le même résultat, merci bien ;)
0