Datenbanken ohne Abfragen gibt es wohl nicht (sonst hätte sich ja keiner die Mühe gemacht). Knackpunkt an der Sache ist die Aufbereitung der Daten. Schließlich müssen die richtigen Daten angezeigt und dann auch noch für den Betrachter schlüssig aufbereitet werden. Zum Einen betrifft es das Design - zum Thema Aussehen gibt es immer viele Meinungen - und zum Anderen müssen die Abfragen das Ergebnis liefern, was sie versprochen bzw. angekündigt haben.
Hier schon mal einen Linka auf die drei Tabellen "Bankleitzahlen", "Postleitzahlen" und "StrassenFlensburg" <Link>
Die Suchfunktion für alle drei Tabellen:
# Übergebene Werte die drei Optionen bei der Auswahl $SeekOPPLZ, $SeekOPBLZ, $SeekOPSTRFL # Außerdem $MaxDS - Max. Anzahl der Ergebnisse, $Suchbegriff - logisch?! function suchen($SeekOPPLZ, $SeekOPBLZ, $SeekOPSTRFL,$MaxDS,$Suchbegriff)
{ GLOBAL $db,$Datenbank;
$SucheOK = "nein";
$err = "Fehler:<br>"; # Variable die später die Fehlermeldungen enthält
$TableCount = 0; # Nur eine Tabelle (Optionen) darf ausgewählt werden
if ($SeekOPBLZ <> "nix") { $Tabelle = "bankleitzahlen" ; $TableCount++;}
if ($SeekOPPLZ <> "nix") { $Tabelle = "postleitzahlen" ; $TableCount++;}
if ($SeekOPSTRFL <> "nix") { $Tabelle = "strassenflensburg" ; $TableCount++;}
switch ($Tabelle)
{ case "bankleitzahlen" :
$Suchoption = " " . $SeekOPBLZ . " " ;
break;
case "postleitzahlen" :
$Suchoption = " " . $SeekOPPLZ . " " ;
break;
case "strassenflensburg" :
$Suchoption = " " . $SeekOPSTRFL . " " ;
break;
default:
$TableCount = 0;
}
#Suchwert von Wildcards befreien um diesen Text in der Asgabe gesondert behanden zu können. $SuchWert = str_replace("%" , "", $Suchbegriff);
# Kausalitätsprüfungen / Fehler vermeiden
if (strlen($SuchWert) >= 3) { $SucheOK = "ja";}
else { $err .= "Suche muß mehr als 3 Buchstaben oder Zahlen enthalten, ohne Wildcards.<br>"; $SucheOK = "nein";}
if (($TableCount == 0) && ($SucheOK = "ja"))
{ $err .= "KEINE Tabelle ausgewählt (einfach die Option für entsprechende Tabelle wählen) <br>"; $SucheOK = "nein";}
if (($TableCount > 1) && ($SucheOK = "ja"))
{ $err .= "Zuviele Tabellen ausgewählt (einfach die Option für eine Tabelle wählen, alle anderen müssen auf "Auswahl" stehen) <br>"; $SucheOK = "nein";}
echo "<h3 align='center'><u><a name='index'>Suchergebnis anzeigen</a></u></h3>";
echo "Suchen nach <b>$Suchbegriff</b> ergab (in $Tabelle):<br>";
# Fehler ($SucheOK gleich nein)- dann Meldungen ausgeben
if ($SucheOK == "nein")
{ echo $err; }
if ($SucheOK == "ja" )
{ if ($MaxDS == "alle" ) { $max = ""; }
else { $max = "LIMIT " . $MaxDS . "" ;}
# SQL Befehl aus festen Bestandteilen und Variablen (Suchoptionen,MaxDS, Suchbegriff) zusammensetzen $sql = "SELECT * FROM " . $Tabelle . " WHERE " . $Suchoption . " LIKE '" . $Suchbegriff . "' " . $max ;
$result = mysqli_query($sql);
# zurückgegebene Zeile enthält n Felder, aber Counter kommt dazu -> +1
$felder = mysql_num_fields($result) + 1;
# Spaltennamen der Tabelle ermitteln (ergibt 1 bis N Felder, Im Array geht's später aber von Null bis N-1 !)
for ($thead=0; $thead < ($felder-1); $thead++)
{ $TabellenKoepfe[] = mysql_field_name($result,$thead); }
$Counter = 1;
if ($result)
{ echo "<center><form method='post' action='anzeigen.php' name='Daten'>"; echo "<table width='90%' border='0' cellspacing='0' bgcolor='#00CCFF'>";
echo "<tr bgcolor='#0099FF'><th height='22'>Nr.</th>";
# Beschriftungszeile der Tabelle (Tabellenheader) for ($i=1; $i < $felder; $i++) { echo "<th height='22'> $TabellenKoepfe[$i] </th>"; }
echo "</tr>";
# gefundene Werte ausgeben while ($Zeile = mysqli_fetch_row($result))
{ # If Abfrage erzeugt die Tabellenreihen unterschiedlicher Farbe if (ceil($Counter / 2) == floor($Counter / 2))
{ echo "<tr bgcolor='#00DDFF'>"; }
else { echo "<tr>"; }
# Mitzählen -> laufende Nummer echo "<td>$Counter</td>";
# den Suchwert in allen Ausgegebenen Zellen markieren (unterstreichen) # mit replace wird der wert gegen dengleichen mit <u> Tags ersetzt. for ($i=1; $i < $felder; $i++)
{ $Wert = str_replace($SuchWert , "<u>$SuchWert</u>", $Zeile[$i]);
echo "<td>$Wert</td>";
}
echo "</tr>";
$Counter++;
} # Whileschleife
echo "</table></center> ";
}
else
{ echo " <font color='#FF0000'>" . mysqli_error($db) . " </font> beim Suchen in Tabellen"; }
} # Suche gleich ja
} # Funktion
Für die Tabellenzeilen - Farbdifferenz wurde ein einfacher Trick angewendet:
a ) Die Tabelle hat eine Hintergrundfarbe
b ) Einen Counter mitzählen lassen, bei jeder Zeile diesen erhöhen
c ) Counter / 2 -> mit ceil() aufrunden
d ) Counter / 2 -> mit floor() abrunden
e ) bei jeder geraden Zahl sind die Ergebnisse aus c) und d) gleich - dann bekommt
diese Tabellenzeile einen anderen Farbtag
Verwendungshinweis: Um das Script zu verwenden einfach diese Datei über den Browser speichern und dann mit einem Texteditor oder Dreamweaver / FirstPage etc. bearbeiten. Das Script darf für jeden frei verwendet werden, soweit der Autor / Quelle genannt wird. Wer nützliche Links / Scripte hat darf die mir auch gerne zur Verfügung stellen..
Home | Autor | eMail | Gästebuch
Bearbeitet und erstellt von
Horst - G. Burmester (HGB) ©