Einzelnen Beitrag anzeigen
  #9 (permalink)  
Alt 22-05-2007, 21:44
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ahhh jepp, i see...

da ist noch ein dreher in den variablen drin...

die abfrage soll wohl im klartext heißen:

falls aktuelle id < max_id, dann mache dieses
falls aktuelle id == max_id, dann mache jenes...

die aktuelle id steht aber nicht in $ids, sondern in $show

das sollte helfen...

=============
wann es merklich langsamer wird, hängt davon ab, wie viele daten in der tabelle (außer id) sonst noch drin stehen...

um die geschwindigkeit einigermaßen gut zu halten, ohne die logik zu verändern, solltest du in der query nur holen, was du wirklich brauchst...

also statt SELECT * FROM

nur SELECT id FROM

das geht schon mal um einiges schneller, außer, du benötigst natürlich vollständige datenbankzeilen an anderer stelle im script...

für eine einfache seite denke ich, ist das script gut für ca. 1000 einträge, je nachdem, wie schnell der server ist, auf dem das ganze läuft... wenn du wirklich performance benötigst, dann solltest du die logik ändern

beispiel...
du übergibst im link nicht die nächste id oder die vorherige, sondern
du übergibst die aktuelle und ggf in einem zweiten parameter ein "next" oder ein "prev"...

die aufgerufene seite würde dann hin gehen und folgendes tun:
falls kein schlüsselwort, dann hole den datensatz mit genau dieser ID (WHERE id=$my_id), falls schlüsselwort "next", dann hole den datensatz mit der ersten ID, die größer ist, als ID (WHERE id>$my_id ORDER BY id ASC LIMIT 1), falls dort kein datensatz zu finden ist, dann hole den ersten datensatz in der liste... falls schlüsselwort "prev" dann hole den datensatz mit der ersten ID, die kleiner ist als ID (WHERE id<$my_id ORDER BY id DESC LIMIT 1) falls dort keine zu finden ist, dann hole den letzten datensatz in der liste...

damit musst du im normalfall nur einen einzigen datensatz mit einer einzigen query aus der datenbank holen.
einzige ausnahmen sind die beiden extrema, die eine zweite query erfordern, weil es keinen vorherigen bzw. nächsten datensatz mehr gibt. in diesem fall wäre aber auch nur ein datensatz abzuholen, weil die erste query in einem leeren ergebnis endet.

wofür ist denn die anwendung gedacht?

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten