Datenbank Zugriffe

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&szlig; mehr als 3 Buchstaben oder Zahlen enthalten, ohne Wildcards.<br>"; $SucheOK = "nein";}
if (($TableCount == 0) && ($SucheOK = "ja"))
{ $err .= "KEINE Tabelle ausgew&auml;hlt (einfach die Option f&uuml;r entsprechende Tabelle w&auml;hlen) <br>"; $SucheOK = "nein";}

if (($TableCount > 1) && ($SucheOK = "ja"))
{ $err .= "Zuviele Tabellen ausgew&auml;hlt (einfach die Option f&uuml;r eine Tabelle w&auml;hlen, alle anderen m&uuml;ssen auf &quot;Auswahl&quot; 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) ©