PHP/MySQL - Praxistutorial 5 - LIMIT
1. Die Abschnitte
2. LIMIT
Mit diesem Bestandteil des SQL-Befehls SELECT
werden wir unsere ganze Anwendung steuern. Damit ihr
zu Beginn ein Verständnis für die Arbeitsweise bekommt, arbeiten wir erst mal nur mit dem MySQL-Frontend eurer Wahl, also zum Beispiel
PHPMyAdmin, HeidiSQL oder der Konsole. Letzteres ist aber nur was für die ganz Hartgesottenen.
3. Abfrage erster Teil
Um möglichst viele Treffer zu bekommen, arbeiten wir mit einer sehr ungenauen Abfrage mittels LIKE
.
Also gebt mal folgendes in euer MySQL-Frontend ein:
SELECT
headline
FROM
suche
WHERE
headline like '%php%';
Erläuterung
Mit LIKE
sollte man immer dann arbeiten, wenn man keine genaue Übereinstimmung, sondern nur eine
"Ähnlichkeit" suchen will, ohne auf die berüchtigten regulären Ausdrücke zurückgreifen zu müssen. Dazu benutzt man
Wildcards, vulgo Platzhalter, in diesem Fall also das Prozentzeichen. Dabei bestimmt die Position die Möglichkeiten:
'php%'
bedeutet, dass alles gefunden wird, das mitphp
beginnt'%php'
bedeutet, dass alles gefunden wird, das mitphp
endet'%php%'
bedeutet, dass alles gefunden wird, wophp
drinsteht'php'
ist tinnef, dafür gibt esWHERE headline = 'php'
(*)
(*) Eine Anmerkung dazu
Man kann auch sinnvoll mit einem like 'irgendwas'
arbeiten, wenn man innerhalb der Zeichenkette mit einem Unterstrich arbeitet. Der ist dann
auch ein Platzhalter. So findet like 'O_P'
zum Beispiel sowohl ein OOP
als auch ein OAP
. Letzteres ist übrigens
ein Old Age Pensioner. Aber ohne weiteren Platzhalter ist und bleibt es Humbug.
So, bisher haben wir 168 Treffer. Als ich das Tutorial schrieb, waren es nur 48. * Seufz und nostalgisch werd*. Auf jeden Fall ist das entschieden zuviel. Also schränken wir das mal scheibchenweise ein.
4. Abfrage zweiter Teil
SELECT
headline
FROM
suche
WHERE
headline LIKE '%php%' LIMIT 0, 10;
SELECT
headline
FROM
suche
WHERE
headline LIKE '%php%' LIMIT 10, 10;
SELECT
headline
FROM
suche
WHERE
headline LIKE '%php%' LIMIT 20, 10;
SELECT ... usw, bis der Arzt kommt
Erläuterung
Probiert die Abfragen mal aus. Dann werdet ihr ganz schnell erkennen, was sie bewirken, nämlich die fortlaufende Ausgabe von jeweils 10 Datensätzen. Der erste Wert bezeichnet die Position des "Startdatensatzes", der zweite die Anzahl der auszugebenden Treffer.
Man kann das auch noch mit einer Sortierfunktion kombinieren, wie zum Beispiel:
SELECT
*
FROM
suche
WHERE
headline LIKE '%php%'
ORDER BY
headline
LIMIT 10,10;
In diesem Fall werden also die Ausgaben alphabetisch sortiert. Das heißt aber nicht, dass die Überschriften zu Anfang kommen, die mit
php
beginnen. Denn die Sortierung orientiert sich am ersten(!) Buchstaben der Ausgabe.
5. Folgerung
Für unsere Blätterfunktion benötigen wir also vier Werte.
- Die Anzahl aller Datensätze, wo
php
drin steht - Den Startwert für die Einzelsuche
- Die Anzahl der auszugebenden Datensätze
- Den gesuchten Begriff
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt