Homepage selbermachen 7.853 Themen, 35.654 Beiträge

Automatisch blättern (Mysql und PHP)

Schnurbart / 6 Antworten / Baumansicht Nickles

Hi, wenn ich einen 1000 zeichen text aus meiner db hole, ist das auf einer seite etwas viel statt dessen will ich ihn auf 3 seiten anzeigen lassen, wie kann ich schreiben, wenn ich automatisch eine weitere seite haben will, also die dann die nächsten 200 zeichen zeigt etc etc. also so dass er automatisch erkennt, wie viel text ist in der db vorhanden und dann für immer die nächsten 200 zeichen eine neue seite anlegt und unten dann die seitenzahlen zum blättern stehen.

bei Antwort benachrichtigen
xafford Schnurbart „Automatisch blättern (Mysql und PHP)“
Optionen

die SQL-Syntax unterstützt das wortkonstrukt LIMIT (a,b,) damit gibst du per a einen offset an und per b eine länge.
SELECT * FROM tabelle LIMIT (0,50)
liefert dir 50 ergebnisse ab dem ersten
SELECT * FROM tabelle LIMIT (51,50)
liefert dir die nächsten 50 einträge.
das ist die elegante lösung und die schnelle, da SQL die arbeit erledigt.
eine andere ist, du holst alles aus der datenbank, überprüfst dann mit mysql_num_rows die anzahl und gibst erst einen teil aus, reichst dann das komplette aray weiter an die nächste seite und lässt diese dann ausgeben.
ratsamer ist aber lösung 1.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Schnurbart xafford „die SQL-Syntax unterstützt das wortkonstrukt LIMIT a,b, damit gibst du per a...“
Optionen

das ist mal ein geiler tipp, danke dir vielmals.

jetzt kann ich doch einfach sowas wie nächste seite mit dem entsprechenden link anzeigen lassen oder gibts da probleme?

für die zukunft: wie kann ich denn solche tricks herausfinden, ohne dass ich alle nas lang hier fragen muss? php.net spuckt ja nur die befehle aus, wenn ich schon genau weiss was ich suche

bei Antwort benachrichtigen
xafford Schnurbart „das ist mal ein geiler tipp, danke dir vielmals. jetzt kann ich doch einfach...“
Optionen

sowas findest du heraus, wenn du dir ein tutorial zu z.b. mysql von www.mysql.com herunterlädst. es ist immer sinnvoll sich nicht nur mit der eigentlichen sprache zu beschäftigen, die du verwendest, sindern auch mit den spezifikationen eventueller schnittstellen, die du mitnutzt, wie in diesem fall SQL.
es gibt ein nettes beispiel zu guter und schlechter programmierung, das ich mal gelesen habe:
die aufgabe war, aus einer mitarbeiterdatenbank herauszufiltern, wie weit alle mitarbeiter altersmäßig von 30 entfernt sind. der eine programmierer hat das folgendermaßen gelöst:


  • alle mitarbeiter aus datenbank in das script laden

  • bei jedem mitarbeiter den abstand von 30 berechnen

  • die mitarbeiter nach diesem berechneten abstand sortieren


das ganze war ein code mit an die 30 zeilen und einem enormen speicher und rechenbedarf, da alle mitarbeiterdaten in den speicher mussten, alle 2 mal durchlaufen werden mussten und das neue ergebnis in einen neuen speicherbereich geladen werden musste.
der 2. programmierer löste es mit einer sql-anfrage. der sql-server suchte die daten schon geordnet mit dem entsprechenden altersabstand von 30 heraus und lieferte es i der richtigen reihenfolge. alles mit einer einzigen zeile code und in einem bruchteil der verarbeitungszeit.
man sollte also alle aufgaben immer von dem glied in der kette lösen lassen, die es am besten und schellsten kann.
Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Heinz_Malcher Schnurbart „Automatisch blättern (Mysql und PHP)“
Optionen

Hallo, es kann sein, dass ich da was miss(t)verstehe aber ich denke es ist eher folgendes gefragt oder?

("select LEFT(string,länge) as string from tabelle")

bei Antwort benachrichtigen
xafford Heinz_Malcher „Hallo, es kann sein, dass ich da was miss t verstehe aber ich denke es ist eher...“
Optionen

wenn schon, dann
SELECT SUBSTRING(string,start,length)

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Schnurbart xafford „wenn schon, dann SELECT SUBSTRING string,start,length “
Optionen

geht beides, danke euch ,aber ich wollte wirklich das mit dem limit wissen.

bei Antwort benachrichtigen