PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmte Anzahl von Datensätzen aus @mysql_fetch_array() anzeigen



Jor
05-09-2007, 09:17
Hallo zusammen,

wie kann ich am besten folgenden Wunsch umsetzen?
In einer Datenbank-Tabelle habe ich X Datensätze, möchte diese aber nur jeweils in einer beschränkten Anzahl auf der Seite anzeigen, was mittels einem Vor- und Rückbutton gesteuert wird.

Ich habe mich schon umgeschaut, viel gelesen und auch einen eigenen Lösungsansatz erstellt, bin mir aber nicht über die Effizienz so ganz im Klaren.
Ganz toll wäre m. E., wenn die Möglichkeit besteht (SQL?) direkt nur die Anzahl von Sätzen aus der DB zuholen, die angezeigt werden sollen (es gibt keinen streng durchnummerierten Schlüssel) z. B. in 10ner Schritten.

Wie kann/soll ich mein Script verbessern, welchen Lösungsweg habt ihr?
Ich freue mich über jeden Hinweis.

Danke, Jor

Pingu
05-09-2007, 11:57
Dafür gibt es das LIMIT Attribut in SQL.

Jor
05-09-2007, 15:55
Hi Pingu,

vielen Dank, werde gleich mal stöbern. :-)

Ansonsten, wer vielleicht auch solch eine Seite als Beispielcode hat, wäre mir auch eine große Hilfe!

jan61
05-09-2007, 19:36
Dafür gibt es das LIMIT Attribut in SQL.

Vorsicht. Das gibt es nicht in allen Datenbanken und gehört nach meiner Kenntnis auch nicht zum SQL-Standard. MySQL und PostgreSQL unterstützen LIMIT und OFFSET, Oracle z. B. nicht (zumindest bis Version 10g). Dort kann man sich nur mit einem Hilfskonstrukt ("WHERE ROWNUM < 1000" z. B.) behelfen.

Jan

Jor
06-09-2007, 12:03
Hallo Jan61,

meine DB liegt auf einem MySQL-Server. So wie ich es ausprobierte, funzte das Holen von z. B. der ersten 5 Datensätze. Aber beim Holen der Datensätze
von 5 bis 10 haute es nicht richtig hin. Entweder habe ich einen Fehler übersehen, oder es geht nicht so (.... limit 5, 10).
Aber mittels ROWNUM werde ich es am Wochenende nochmal versuchen.

Danke!

msi
06-09-2007, 13:02
Hallo Jan61,

meine DB liegt auf einem MySQL-Server. So wie ich es ausprobierte, funzte das Holen von z. B. der ersten 5 Datensätze. Aber beim Holen der Datensätze
von 5 bis 10 haute es nicht richtig hin. Entweder habe ich einen Fehler übersehen, oder es geht nicht so (.... limit 5, 10).
Aber mittels ROWNUM werde ich es am Wochenende nochmal versuchen.

Danke!

nächstes mal google nach limit und lies dir die doku dazu durch, dann
erfährst du auch dass es für die datensätze 6,7,..,10 so gehen muss:
versuchs mal mit limit 5,5

jan61
07-09-2007, 19:47
...
Aber mittels ROWNUM werde ich es am Wochenende nochmal versuchen...

Kenne ich nur - wie bereits geschrieben - von Oracle.

Jan

Jor
08-09-2007, 12:17
@msi: Ich möchte nochmal betonen, dass ich gegoogelt habe! Ich lese auch die Dokus dazu durch und dass, bevor ich hier versuche Hilfe zu bekommen.
Dennoch muss man dabei auch beachten, dass, wenn man von einem Bereich nicht viel, oder nur Basiswissen und Erfahrung hat, wie soll man da wissen, wo nach man für spezielle Informationen suchen kann/muss?

2) @all: Ich habe nach den Angaben mittels Limit versucht einen definierten Teil von Datansätzen zu laden, Rownum kennt MySQL ja nicht (wie von jan61 beschrieben nur bei Oracle), es hat aber nicht so funktioniert wie erwartet. Werde es am Wochenende nochmal versuchen,
falls ich nicht weiter komme werde ich euch nochmals nach dem Post meines Codes um Hilfe fragen.

Schönes Wochenende und vielen Dank an alle!

msi
09-09-2007, 20:42
@msi: Ich möchte nochmal betonen, dass ich gegoogelt habe! Ich lese auch die Dokus dazu durch und dass, bevor ich hier versuche Hilfe zu bekommen.
Dennoch muss man dabei auch beachten, dass, wenn man von einem Bereich nicht viel, oder nur Basiswissen und Erfahrung hat, wie soll man da wissen, wo nach man für spezielle Informationen suchen kann/muss?

2) @all: Ich habe nach den Angaben mittels Limit versucht einen definierten Teil von Datansätzen zu laden, Rownum kennt MySQL ja nicht (wie von jan61 beschrieben nur bei Oracle), es hat aber nicht so funktioniert wie erwartet. Werde es am Wochenende nochmal versuchen,
falls ich nicht weiter komme werde ich euch nochmals nach dem Post meines Codes um Hilfe fragen.

Schönes Wochenende und vielen Dank an alle!


bei google einfach als suchbegriff mysql limit eingeben.
das erste ergebnis beschreibt ganz genau wies geht.

Jor
09-09-2007, 20:46
Hi msi, hi *,

habe es soeben nochmal versucht und es hat geklappt! :)
So wie es eigentlich immer ist, es lag am Skript, ich hatte einen zweiten Eintrag übersehen und... nun, jetzt haut es hin.

Allen Danke!

elrond
10-09-2007, 10:14
mysql hat's gern so:



select * from tabelle limit 10 offset 3


liefert 10 Datensätze ab dem 3. Datensatz

Jor
11-09-2007, 11:33
Hi elrond,

ich habe erfolgreich mit der Angabe "Limit x,y" Datensätze extrahiert, werde aber deinen Vorschlag auhc testen.

Welche Schreibweise ist denn eher richtig oder geläufuger bei MySQL?

Danke. :)

elrond
11-09-2007, 11:35
Welche Schreibweise ist denn eher richtig oder geläufuger bei MySQL?



keine ahnung, ich finde nur, dass die ausführliche leichter verständlich ist... :o