Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 5 - Die Parameter

1. Die Abschnitte

2. Erstmalige Parameterübergabe

Beim erstmaligen Aufruf unserer Suchfunktion ergeben sich zwei der benötigten drei Parameter aus dem Inhalt der Variable $_POST['searchstring'] sowie der Anzahl der Treffer unserer Abfrage aus der Variable $num. Also definieren wir innerhalb der if (!empty ($_POST['searchstring']))-Bedingung eine Zeichenkette, die wir als ersten Teil unserer späteren Parameterübergabe nutzen. Am besten packt ihr den Code direkt hinter die $num = ...-Stelle.


$param '?num='.$num.'&string='.urlencode($_POST['searchstring']);

Erläuterung

Dies ist eine stinknormale Zeichenkettenverknüpfung, die als GET-Parameter benutzt wird. Wichtig ist dabei die Funktion urlencode. Die wandelt besondere Zeichen, wie zum Beispiel Umlaute oder Leerzeichen in eine Form um, die man in der URL übergeben kann.

Ein Beispiel. Gibt man zum Beispiel "php" in das Textfeld ein, so würde $param zum Beispiel so aussehen:


?num=168&string=php

Wenn aber jemand auf die Idee käme, statt dessen "reguläre ausdrücke" einzutippen, so kann es passieren, das dieser String nach dem Leerzeichen abgeschnitten wird oder beim "ä" irgendein Murks geschieht.


?num=48&string=regul(plus irgendein unvollständiger Mist)

3. Weitere Parameterübergabe

Die benötigen wir, wenn denn auf einer unserer Links geklickt wird. Der Code selber ist pisselig einfach, muss aber in einer weiteren Bedingung definiert werden, da wir bisher ja nur die Übergabe eines Suchbegriffs per POST definiert haben. Ergänzt also die if (!empty ($_POST['searchstring'])) um dieses:


else if ($_GET)
{
  $num   $_GET['num'];
  $param '?num='.$_GET['num'].'&string='.$_GET['string'];
}

Ein urlencode ist in diesem Fall nicht mehr notwendig, da der Parameter ja schon entsprechend umgewandelt worden ist. Das $num = $_GET['num']; benötigen wir wofür? Genau! Um das altbekannte "register_globals"-Problem zu vermeiden.

4. Die Limit-Variable

Die müssen wir innerhalb der Ausgabe unserer Navigationsleiste definieren und ist auch kein Problem. Passt den Code innerhalb der for-Schleife um Folgendes an:


$limit $i 10 10;
echo '<a href="'.$_SERVER['PHP_SELF'].$param;
echo '&limit='.$limit.'">'.$from.'-'.$to.'</a> ';

Erläuterung

$limit wirft entsprechend seiner Vorgaben einfach nur die Werte (0, 10, 20 etc.) aus, die wir später bei der GET-Bedingung benötigen.

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