Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 5 - Das Navigationsmenü

1. Die Abschnitte

2.Probleme, Probleme ...

Jetzt beginnen die Schwierigkeiten! Wir müssen eine Aufzählungsnavigation aufbauen und drei Werte als GET-Parameter mit durchschleifen. Und welche? Genau, den Suchbegriff, die gewünschte Startposition der nächsten Datensätze und die Anzahl der Gesamttreffer aus der ersten Abfrage.

3. Das Navigationsmenü erster Teil

Zuerst beschäftigen wir uns mit der Berechnung der einzelnen Aufzählungspunkte. Im Gegensatz zu Google wollen wir aber so eine Auflistung:

1-10 11-20 21-30 ...

Wir brauchen also zwei Werte, den "Von"- und den "Bis"-Wert. Dazu benötigen wir nur ein klein wenig Mathematik und eine Schleife. Wohlan, wir haben 168 Treffer, die wir in Zehnerschritten ausgeben wollen, also 168 geteilt durch Zehn aufgerundet als Ganzzahl. Zudem wollen wir zusätzlich noch überprüfen, ob wir überhaupt Treffer haben. Also schreibt jetzt bitte unterhalb unserer Bedingung mal Folgendes:


if (!empty($num))
{
  for ($i 1$i <= ceil ($num 10); $i++)
  {
    // Hier kommt der weitere Code
  }
}

Erläuterung

Ich hoffe ja wohl stark, dass ihr es geschafft habt, die Trefferanzahl aus der Variable $found in die Variable $num zu packen. Wenn nicht, fangt noch mal von vorne an. Wirklich wichtig ist hier nur das Wörtchen ceil, das liefert eine Ganzzahl, die größer oder gleich der vorgenommenen Berechnung ist, also 17.

Für die Ausgabe der Zahlen benötigen wird innerhalb der for-Schleife den anschließenden Code:


$from $i 10 9;
($i 10 <= $num) ? $to $i 10 $to $num;
echo '<a href="'.$_SERVER['PHP_SELF'].'">'.$from.'-'.$to.'</a> ';

Erläuterung

$from ist ganz einfach zu erklären. Wir nehmen $i (also 1 - 17) immer mal 10, so dass wir die Werte 10, 20, 30 usw. bekommen. Davon ziehen wir einfach 9 ab und erhalten den "Von"-Wert, der da lautet 1, 11, 21 und so fort.

$to definieren wir über den so genannten Trinitätsoperator, den ihr ja schon bei den Bedingungen kennen gelernt habt. Einfach ausgedrückt bedeutet es, so lange $i mal 10 kleiner ist als $num, bekommt die Variable $to den Wert von $i * 10, ansonsten den Wert von $num, also der Anzahl der Einträge. Mit dem anschließenden echo basteln wir uns einfach die entsprechenden Links.

Aber Vorsicht!

Solltet ihr eure Wurstfinger nicht im Zaume halten können und meint, jetzt schon irgendwo darauf zu klicken, so werdet ihr feststellen, dass nichts passiert. Außer dass eure bisherigen Treffer verschwunden sind ... und das auch bleiben. Denn für die weitere Verarbeitung müssen wir noch alle benötigten Werte durchschleifen.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt