Hallo liebe PHP.de-Community!
Da ich neu hier bin und über mehrere Tage keine Lösung MEINES Problemes gefunden habe (Ja, ich habe Google verwendet!), möchte ich nun fachkundige Hilfe aus erster Hand!
Es geht um folgendes: Wie der Thread Titel schon ankündigt, benötige ich ein Suchscript mit mehreren Eingabefeldern. Das funktionierende Script habe ich bereits zusammenbekommen, allerdings liegt mein Problem darin, dass die Suchbegriffe separat voneinander gesucht werden. Folgendes Beispiel soll den Sachverhalt deutlich machen.
Es soll Max Mustermann in Musterstraße 1, in 12345 Musterstadt gesucht werden. Jetzt gibt mir mein Suchscript allerdings ALLES an, was mit
Max
Mustermann
Musterstraße 1
12345
Musterstadt
zu tun hat. Allerdings soll er nur Ergebnisse auflisten, die mit den gemachten Eingaben im Ganzen übereinstimmen. Ferner soll es möglich sein, dass man ALLE Eingaben machen kann, allerdings nicht muss.
Hier mein Script. Verbesserungsvorschläge sind erwünscht, zumal ich mir alles selbst beigebracht habe und ein "blutiger" Anfänger bin:
Hinzu kommt, dass er mir "..straße" aufgrund des "ß" nicht auflistest. Erst, wenn ich in der Datenbank alle "..straße" durch "..str." ersetze, werden diese gelistet.
Vielen Dank für die Hilfe!
Da ich neu hier bin und über mehrere Tage keine Lösung MEINES Problemes gefunden habe (Ja, ich habe Google verwendet!), möchte ich nun fachkundige Hilfe aus erster Hand!
Es geht um folgendes: Wie der Thread Titel schon ankündigt, benötige ich ein Suchscript mit mehreren Eingabefeldern. Das funktionierende Script habe ich bereits zusammenbekommen, allerdings liegt mein Problem darin, dass die Suchbegriffe separat voneinander gesucht werden. Folgendes Beispiel soll den Sachverhalt deutlich machen.
Es soll Max Mustermann in Musterstraße 1, in 12345 Musterstadt gesucht werden. Jetzt gibt mir mein Suchscript allerdings ALLES an, was mit
Max
Mustermann
Musterstraße 1
12345
Musterstadt
zu tun hat. Allerdings soll er nur Ergebnisse auflisten, die mit den gemachten Eingaben im Ganzen übereinstimmen. Ferner soll es möglich sein, dass man ALLE Eingaben machen kann, allerdings nicht muss.
Hier mein Script. Verbesserungsvorschläge sind erwünscht, zumal ich mir alles selbst beigebracht habe und ein "blutiger" Anfänger bin:
PHP-Code:
<form action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" method="post">
Vorname:<br><input type="text" name="vname"><br>
Nachname:<br><input type="text" name="nname"><br>
Straße / Nr.:<br><input type="text" name="strnr"><br>
PLZ:<br><input type="text" name="plz"><br>
Ort:<br><input type="text" name="ort"><p><br></p>
<input type="submit" name="search" value="Suchen">
<input type="reset" name="clear" value="Löschen">
</form>
<?php error_reporting(E_ALL);
$db_host = "";
$db_user = "";
$db_pass = "";
$db_name = "";
$abf = false;
if (isset($_POST["search"])) {
$sql = mysqli_connect($db_host, $db_user, $db_pass, $db_name)
or die("Die Datenbank konnte nicht erreicht werden!");
if (isset($_POST["vname"]) and !empty($_POST["vname"])) {
$vname = trim($_POST["vname"]);
$vname = preg_replace("/[^a-z\s-]/i", "", $vname);
$abf = "SELECT * FROM ... WHERE vname='".$vname."'";
}
if (isset($_POST["nname"]) and !empty($_POST["nname"])) {
$nname = trim($_POST["nname"]);
$nname = preg_replace("/[^a-z\s-]/i", "", $nname);
$abf = "SELECT * FROM ... WHERE nname='".$nname."'";
}
if (isset($_POST["strnr"]) and !empty($_POST["strnr"])) {
$strnr = trim($_POST["strnr"]);
$strnr = preg_replace("/[^a-z0-9.,-_\s-]/i", "", $strnr);
$abf = "SELECT * FROM ... WHERE strnr='".$strnr."'";
}
if (isset($_POST["plz"]) and !empty($_POST["plz"])) {
$plz = trim($_POST["plz"]);
$plz = preg_replace("/[^0-9\s-]/i", "", $plz);
$abf = "SELECT * FROM ... WHERE plz='".$plz."'";
}
if (isset($_POST["ort"]) and !empty($_POST["ort"])) {
$ort = trim($_POST["ort"]);
$ort = preg_replace("/[^a-z\s-]/i", "", $ort);
$abf = "SELECT * FROM ... WHERE ort='".$ort."'";
}
if ($sql != false and $abf != false) {
if ($result = mysqli_query($sql, $abf)) {
$anzahl = mysqli_num_rows($result);
echo "<p>Es wurden <strong>".$anzahl."</strong> Datensätze gefunden!</p>\n";
echo "<table border=\"1\">\n".
"<tr><th>Vorname</th><th>Nachname</th><th>Straße / Nr.</th><th>PLZ</th><th>Ort</th>\n";
while ($datensatz = mysqli_fetch_assoc($result)) {
echo "<tr>".
"<td>" .htmlspecialchars($datensatz["vname"], ENT_QUOTES, 'UTF-8')."</td>".
"<td>" .htmlspecialchars($datensatz["nname"], ENT_QUOTES, 'UTF-8')."</td>".
"<td>" .htmlspecialchars($datensatz["strnr"], ENT_QUOTES, 'UTF-8')."</td>".
"<td>" .htmlspecialchars($datensatz["plz"], ENT_QUOTES, 'UTF-8')."</td>".
"<td>" .htmlspecialchars($datensatz["ort"], ENT_QUOTES, 'UTF-8')."</td>".
"</tr>\n";
}
mysqli_free_result($result);
echo "</table>\n";
}
mysqli_close($sql);
}
else {echo "Es wurden keine verwertbaren Daten vom Formular übermittelt.\n";}
}
?>
Vielen Dank für die Hilfe!
Kommentar