[PHP] Pagination relationeel met getallen en letters

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De meeste PHP programmeurs hebben Pagination wel eens toegepast, dit is namelijk best makkelijk zo nu en dan.

De meeste paginations werken gewoon met een limit waarbij je aan de hand van je query paginanummers aanmaakt en per paginanummer wat uit je query laat zien.

Nu bestaat er ook een Alphabetic variant van welke op alfabet werkt.

Ik zou beide graag willen toepassen alleen dan voor wat relevant is aan de gand van de query.

Stel ik heb:

1Appel
2Appels
3Peren
Banaan
Manderijn
9Sinasappels

In mijn database staan, dan wil ik een pagination kunnen creëren van:

1 2 3 9 B

En niet standaard al 1 2 3 4 5 etc A B C D E F etc

Opzich is het wel leuk om de wel beschikbare cijfers en letters vet af te drukken en de niet beschikbare niet.

Nu zijn er eigenlijk 2 vragen welke ik hierbij stel:


Is dit haalbaar om te doen ? opzich wel omdat je 2 manier van querien moet combineren, hoe moet ik uitzoeken.

Voordat ik ga uitzoeken, gaat dit niet een vreselijke performance bunch per pagina opleveren ? Je moet eerst een algehele query doen, dan moet je filteren op cijfers en letters en daarna nog een keer op cijfers+letters en ook nog op letters en letters 1A 1B en Aa Ab Ad.

Ik heb nog geen voorbeelden kunnen vinden welke beide toepassen overigens. Normale en Alfabetische paginations wel uiteraard.

Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Hint:
Voordat ik ga uitzoeken, gaat dit niet een vreselijke performance bunch per pagina opleveren ?
Meten is weten.

[ Voor 22% gewijzigd door WouZz op 24-06-2009 19:36 ]

On track


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Daar kan ik al wat mee, dank je.

Tja, meten is zeker weten !

Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Een SELECT DISTINCT is over het algemeen niet de meest snelle query die je kan bedenken. En tenzij je DB alles uit een index kan halen moet ie nog een hele table scan doen ook. Het is dus nogal afhankelijk van hoeveel records je in de tabel hebt staan. Maar goed, mocht het echt een probleem worden, dan kan je gaan cachen.

On track


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je kunt die query toch cachen :) Als je een wijziging doet aan je database (via CMS neem ik even aan) dan verwijder je die cache-entry weer zodat ie altijd blijft kloppen.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
WouZz schreef op donderdag 25 juni 2009 @ 08:35:
Een SELECT DISTINCT is over het algemeen niet de meest snelle query die je kan bedenken. En tenzij je DB alles uit een index kan halen moet ie nog een hele table scan doen ook. Het is dus nogal afhankelijk van hoeveel records je in de tabel hebt staan. Maar goed, mocht het echt een probleem worden, dan kan je gaan cachen.
Het DISTINCT gedeelte is op zich niet het gedeelte wat een full-table scan forceert. Het disctinct zorgt er alleen voor dat er nog een keer over de result set geitereerd moet worden. Doordat je in dit geval de complete table selecteert ( door het ontbreken van een where clause ) komt dat idd wel overeen met een full table-scan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of een volledige scan over de index. ;)

Anyway, ook hier is reeds meten=weten gezegd. :P

{signature}

Pagina: 1