timisan
Messages postés10Date d'inscriptionvendredi 8 avril 2005StatutMembreDernière intervention 8 septembre 2005
-
7 sept. 2005 à 01:40
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 2010
-
8 sept. 2005 à 23:48
Bonjour,
je fais une petite application en PHP avec une base de données Access. D'habitude j'utilise MySQL et pour afficher mes enregistrements par page avec un numéro de page j'utilise cette requete :
SELECT * FROM table LIMIT $limit, $enreg_par_pg
($limit : à partir de quel enregistrement on affiche la page
$ enreg_par_pg : nombre d'enregistrement par page)
pour afficher les enregistrements d'une table par ex par 8 enregistrements affichés par pages. Là je voudrais faire la même chose mais la fonction LIMIT n'existe pas en SQL , connaissez vous autre chose ?
Merci beaucoup pour votre aide....
Isabelle
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 7 sept. 2005 à 05:02
Salut Isabelle,
Par le code tu peux limitter le nombre de valeur en utilisant un
compteur et en sortant de ta boucle de parcours du RecordSet ... Vu que
j'ignore la méthode de connexion que tu utilises, je ne peux pas te
donner de code d'exemple.
timisan
Messages postés10Date d'inscriptionvendredi 8 avril 2005StatutMembreDernière intervention 8 septembre 2005 7 sept. 2005 à 22:57
Bonjour ! Merci beaucoup pour ta réponse je fais des tests tout de suite !
PS : je suis en Nouvelle Calédonie alors les jours et temps de réponses sont décalés ....
Isabelle
aurelien0306
Messages postés181Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention 2 mars 2009 8 sept. 2005 à 18:04
salut,
la solution donnée est une solution pour les premiers enregistrements mais pour les suivants?
car TOP 8 prend toujours les 8 premiers résultats... (du num 1 au num
8). Mais quand on passe à la page suivante et que l'on souhaite donc
visualiser les résultats de 9 à 16, la solution de substitution ne
marche pas à mon avis...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 8 sept. 2005 à 18:18
Salut,
Bien evidament
que non ... ça limite le nombre de résultats dans le RecordSet à X
lignes ... Pour afficher par "tranche" de X lignes ... quelque soit le
langage, je ne vois pas la difficultée ...
Je demande à un RecordSet de me rappatrier les données, apres tout se
qui est affichage doit être, selon moi, géré par le code ...
Avec la clause WHERE, elle peut simuler le LIMIT par exemple en
conservant l'id de la last ligne affichée et lorque l'utilisateur
demande la page suivante alors :
SELECT TOP 2 users.id, users.nom, users.prenom
FROM users
WHERE id > 2
A condition, bien sûre, que les données précédement affichées soient
triées par ID croissant (cas par défaut). Sinon, faut completer la
clause where en utilisant un max d'infos possibles. Par exemple pour un tri par nom ASC
SELECT TOP 2 users.id, users.nom, users.prenom
FROM users
WHERE nom > 'martin'
ORDER BY users.nom, users.prenom ASC;
Cette stratégie peux poser probléme en cas de doublons ... donc faut sans doute préciser un autre argument dans le WHERE soit par exemple pour un tri par nom, prénom ASC
SELECT TOP 2 users.id, users.nom, users.prenom
FROM users
WHERE nom > 'martin' or (nom = 'martin' and prenom <> 'paul')
ORDER BY users.nom, users.prenom ASC;
Au final, TOP est la correspondance la plus proche de LIMIT, bien que l'impémentation de Microsoft soit imcompléte.
timisan
Messages postés10Date d'inscriptionvendredi 8 avril 2005StatutMembreDernière intervention 8 septembre 2005 8 sept. 2005 à 23:42
Bonjour à tous, Déjà merci d'avoir répondu à mes questions ! Pour vous dire je n'ai pas encore eu le temps de faire les tests parce que je suis overbookée avec le boulot, mais j'ai eu le temps de faire le test avec la fonction top et c'est vrai quelle permet uniquement d'afficher des enregistrements sélectionnés (par ex seulement 6 et c'est tout). Moi en fait ce que je voudrais c'est afficher des enreg par page (genre 8) et sur la page suivante encore 8 etc... Donc la valeur à afficher de l'enreg est affectée dans la page passée en php (ouhla je sais meme pas comment expliquer !) et la requete sql affiche les enregistrement par ex de 1à8 après c'est de 9 à 16, ensuite etc ...
Je vais me débrouiller aujourd'hui et je vous mets au courant.
Thks a lot folks !