PHP/MySQL - Praxistutorial 4 - Erster Aufruf
1. Die Abschnitte
- Überblick
- LIMIT
- Erster Aufruf
- Das Navigationsmenü
- Die Parameter
- Blättern
2. Vorbereitung
Öffnet nun die Datei suche.php
und passt die Zugangsdaten zu eurem MySQL-Server an, wenn ihr das noch nicht getan habt.
Dann ruft sie im Browser auf. Sieht nicht schön aus, aber darum geht hier auch nicht. Nehmt als Suchbegriff weiterhin php
.
Als erstes wollen wir verhindern, dass ohne Absenden des Formulars schon eine "wilde" Abfrage ohne Inhalt geschickt wird. Das geht ganz einfach mit:
if (!empty ($_POST['searchstring']))
{
...
}
Nun wollen wir einmalig die Anzahl aller in Frage kommenden Datensätze erfahren. Den entsprechenden Wert schleifen wir anschließend per GET mit durch. Also packen wir den folgenden Code in die oben beschriebene Bedingung:
$query = 'SELECT
COUNT(id)
FROM
suche
WHERE
headline LIKE'."'%".$_POST['searchstring']."%'";
$result = mysql_query ($query) or die (mysql_error());
$found = mysql_fetch_row ($result);
Warum arbeitet der nicht mit mysql_num_rows
, werden sich jetzt einige Fragen. Na ja, ich denke, dass
obige Abfrage und deren Auswertung wesentlich performanter ist. Wer mich vom Gegenteil überzeugen kann, bitte sehr,
einfach eine Mail schicken, dann korrigiere ich das gerne.
Ach übrigens, wie ihr den entsprechenden Wert von $found
aufdröselt, macht ihr mal schön selber. Ihr
sollt ja auch zu eigenständigem Denken erzogen werden (Stichwort print_r
). Und diesem Wert schreibt
ihr in die Variable $num
unterhalb von $found
!
3. Die erste Ausgabe
Ist überhaupt kein Problem, da wir ja alle benötigten Parameter kennen:
$query = 'SELECT
headline
FROM
suche
WHERE
headline LIKE'."'%".$_POST['searchstring']."%'".'
ORDER BY
headline
LIMIT 0, 10';
$result = mysql_query ($query) or die (mysql_error());
while ($row = mysql_fetch_assoc($result))
{
echo $row['headline'].'<br />';
}
Erläuterung
Dass obiger Code natürlich auch in die Bedingung gehört, versteht sich wohl von selbst. Ansonsten dürfte wohl alles klar sein. Der Suchbegriff ist bekannt, die Anzahl aller gefundenen Datensätze auch und den Startwert für die Suche können wir eh auf 0 festlegen, da es ja gerade erst losgeht.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt