Gesamtbeispiel zu PHP/PostgreSQL 1. Beispiel: Gegeben ist folgende Tabelle wh=# select * from person2; vorname nachname ort hobby ---------+----------+------+---------- hans huber wien laufen hans schubert graz kino hubert oberdepp linz nix susi meier wels bloedeln (4 Zeilen) Abbildung 1: Tabelle person Schreibe ein PHP-Skript (Suchformular), das die Suche nach Personen ermöglicht. Dabei werden die Spalten vorname und nachname durchsucht der Begriff kann entweder in vorname oder in nachname vorkommen. Es kann auch ein Wortteil eingegeben werden (Ähnlichkeitssuche). Zusätzlich kann ausgewählt werden, ob das Ergebnis nach Vor- oder Nachname sortiert wird. Abbildung 2: Browseransicht Abbildung 3: Browseransicht Werden Daten gefunden, so wird jeder zweite Satz unterschiedlich gefärbt (freie Wahl der Farben), wird nichts gefunden, so gibt der Browser aus»sorry, nichts gefunden«. 1
2. Beispiel: Gegeben ist folgende Tabelle wh=# select * from autoren; vorname nachname cafe stil ----------+----------+-------------+-------- elfriede jelinek havelka romane ernst jandl havelka lyrik pavel kohout traxlmeier drama thomas bernhard cafe museum drama fritz navel cafe museum drama (5 Zeilen) Abbildung 4: Tabelle autoren Schreibe ein PHP-Skript (Suchformular), das die Suche nach Personen ermöglicht. Dabei werden die Spalten vorname und nachname durchsucht der Begriff kann entweder in vorname oder in nachname vorkommen. Es kann auch ein Wortteil eingegeben werden (Ähnlichkeitssuche). Zusätzlich kann ausgewählt werden, ob der Autor in ein bestimmtes Café geht oder in einem bestimmten Stil schreibt. Abbildung 5: Browseransicht Abbildung 6: Browseransicht Wird nichts gefunden, so gibt der Browser aus»sorry, nichts gefunden«. 2
3. Beispiel: Lege eine Tabelle link an, in der URLs mit einer Beschreibung gespeichert werden können. Beide Spalten sind vom Typ text. Schreibe dann eine PHP-Eingabemaske, in der die URLs mit der Beschreibung eingegeben werden können (Abbildung 1). Die Daten werden in der vorhin angelegten Tabelle gespeichert. Schreibe ein zweites PHP-Skript (Suchformular, Abbildung 2), das die Suche nach den eingetippten URLs ermöglicht. Dabei wird die Spalte beschreibung durchsucht. Es kann auch ein Wortteil eingegeben werden (Ähnlichkeitssuche). Die gefundenen Ergebnisse werden als anklickbare Links (<a href...) dargestellt. Abbildung 7: Eingabemaske Abbildung 8: Suchmaske Wird nichts gefunden, so gibt der Browser aus»sorry, nichts gefunden«. 3
1. Lösung <h1>suche nach Personen</h1> <FORM METHOD="POST" ACTION= $_SERVER["PHP_SELF"]; > <INPUT TYPE="TEXT" NAME="name">Name oder Namensteil eingeben<br> Sortieren nach<br> <select name=sort> <option value=vorname>vorname</option> <option value=nachname>nachname</option> </select> if( isset ($_POST["los"]) && $_POST["los"]!= "") $name = $_POST["name"]; $sort = $_POST["sort"]; $daten = 'host=localhost dbname=wh user=postgres'; $con = @pg_connect($daten) or die ("fehler server"); $query = "select vorname, nachname, hobby, ort from person2 "; $query.= " where vorname like '%$name%' or nachname like '%$name%' "; $query.= " order by $sort"; //echo $query; $myquery = @pg_query($query) or die ("query"); $anzahl = pg_num_rows($myquery); echo "es wurden $anzahl Eintraege zum Begriff \"$name\" gefunden:<br>\n"; $nummer = 1; echo "<table>"; if ($nummer %2 == 0) $color = "#CCFF66"; $color = "#CCFFFF"; echo "<tr bgcolor=$color><td>person $nummer:</td><td></td></tr>"; echo "<tr bgcolor=$color><td> Vorname:</td><td>$row[0]</td></tr>"; echo "<tr bgcolor=$color><td> Nachname:</td><td>$row[1]</td></tr>"; echo "<tr bgcolor=$color><td> Ort:</td><td>$row[2]</td></tr>"; echo "<tr bgcolor=$color><td> Hobby:</td><td>$row[3]</td></tr>"; $nummer++; echo "</table>"; echo "sorry, kein eintrag"; 2. Lösung <h1>suche nach Autoren</h1> $daten = @pg_connect("host=localhost dbname=wh user=postgres") or die ("fehler server"); <FORM METHOD="POST" ACTION= $_SERVER["PHP_SELF"]; > <INPUT TYPE="TEXT" NAME="name">Name oder Namensteil eingeben<br> Der Autor geht ins <br> <select name=cafe> $query = "select distinct cafe from autoren"; $myquery = pg_query($query); echo "<option value=$row[0]>$row[0]</option>"; </select><br> oder schreibt folgenden Stil<br> <select name=stil> $query = "select distinct stil from autoren"; $myquery = pg_query($query); echo "<option value=$row[0]>$row[0]</option>"; </select> if( isset ($_POST["los"])) $name = $_POST["name"]; $cafe = $_POST["cafe"]; $stil = $_POST["stil"]; $query = "select vorname, nachname, cafe, stil from autoren "; 4
$query.= " where (vorname like '%$name%' or nachname like '%$name%' )and (cafe = '$cafe' or stil = '$stil')"; $query.= " order by nachname"; //echo $query; $myquery = @pg_query($query) or die ('query'); $anzahl = pg_num_rows($myquery); echo "es wurden $anzahl Eintraege zum Begriff \"$name\" gefunden:<br>\n"; $nummer = 1; echo '<table>'; echo "<tr><td>person $nummer:</td><td></td></tr>"; echo "<tr><td> Vorname:</td><td>$row[vorname]</td></tr>"; echo "<tr><td> Nachname:</td><td>$row[nachname]</td></tr>"; echo "<tr><td> Cafe:</td><td>$row[cafe]</td></tr>"; echo "<tr><td> Stil:</td><td>$row[stil]</td></tr>"; $nummer++; echo "</table>"; echo "sorry, kein eintrag"; 3. Lösung Eingabe <h2>legen Sie eine URL an</h2> <FORM METHOD="POST" ACTION= echo $_SERVER["PHP_SELF"];> URL eingeben (z.b. http://orf.at) <br> <INPUT TYPE="TEXT" NAME="url">Url<br> Beschreibung eingeben<br> <textarea name= besch></textarea> if( isset ($_POST["los"])) $url = $_POST["url"]; $besch = $_POST["besch"]; pg_connect("host=localhost dbname=wh user=postgres"); $query = "insert into link values(' $url ',' $besch')"; pg_query($query); Suche <h2>suchen Sie eine URL</h2> <h2> nach einem Begriff</h2> <FORM METHOD="POST" ACTION= echo $_SERVER["PHP_SELF"];> <INPUT TYPE="TEXT" NAME="url"> $url = $_POST["url"]; $con = pg_connect("host=localhost dbname=wh user=postgres"); $query = "select from link where bez like '%$url%' "; $my_query = pg_query($query); $anzahl = pg_num_rows($my_query); $cnt = 1; while($row = pg_fetch_array($my_query)) echo "$cnt.) <a href=$row[0]>$row[0]</a><br>"; $cnt++; echo "sorry, nix gefunden"; 5