Hallo liebe PHPR-Community!
Eines vorneweg: Ich bin ein ziemlicher Neuling (zumindest betrachte ich mich als solchen) was PHP und MySQL angeht. Nun stehe ich vor einem Problem, dass ich alleine nicht zu lösen weiß.
Es geht um folgendes: Ich möchte eine Suchfunktion mit mehreren Eingabefeldern. Das Script ist soweit schon fertig, nur werden mir bei einer Suche alle Angaben, die darauf zutreffen, aufgelistet.
Ein Beispiel soll es etwas deutlicher machen:
- Mein Suchescript soll so funktionieren
Gesucht wird: Max Mustermann aus Musterstraße 1, in 12345 Musterstadt
- Mein Suchescript listet allerdings
Ergebnis: Alle, die auf "Max" UND "Mustermann" UND "Musterstraße" UND ...
Das soll so nicht sein. Ich würde mich freuen, wenn ihr mir hierbei Hilfestellung geben würdet!
Hier das Script zu Beginn (mit Funktion, jedoch wie oben beschrieben)
So sieht das Script mittlerweile aus (nach unzähligen Selbstversuchen) - ohne Funktion; Auf meiner Homepage wird stattdessen eine Blankoseite angezeigt
Vielen lieben Dank für eure Hilfe!
Liebe Grüße,
N4N0
Eines vorneweg: Ich bin ein ziemlicher Neuling (zumindest betrachte ich mich als solchen) was PHP und MySQL angeht. Nun stehe ich vor einem Problem, dass ich alleine nicht zu lösen weiß.
Es geht um folgendes: Ich möchte eine Suchfunktion mit mehreren Eingabefeldern. Das Script ist soweit schon fertig, nur werden mir bei einer Suche alle Angaben, die darauf zutreffen, aufgelistet.
Ein Beispiel soll es etwas deutlicher machen:
- Mein Suchescript soll so funktionieren
Gesucht wird: Max Mustermann aus Musterstraße 1, in 12345 Musterstadt
- Mein Suchescript listet allerdings
Ergebnis: Alle, die auf "Max" UND "Mustermann" UND "Musterstraße" UND ...
Das soll so nicht sein. Ich würde mich freuen, wenn ihr mir hierbei Hilfestellung geben würdet!
Hier das Script zu Beginn (mit Funktion, jedoch wie oben beschrieben)
PHP-Code:
<?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";}
}
?>
PHP-Code:
<?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!");
$abf= "SELECT * FROM ... WHERE 1=1 ";
if (isset($_POST['vname'])) {
$abf .= " AND `vname`= '" . mysqli_real_escape_string($_POST['vname'])) . "'";
}
if (isset($_POST["nname"])) {
$abf .= " AND `nname`= '" . mysqli_real_escape_string($_POST['nname'])) . "'";
}
if (isset($_POST["strnr"])) {
$abf .= " AND `strnr`= '" . mysqli_real_escape_string($_POST['strnr'])) . "'";
}
if (isset($_POST["plz"])) {
$abf .= " AND `plz`= '" . mysqli_real_escape_string($_POST['plz'])) . "'";
}
if (isset($_POST["ort"])) {
$abf .= " AND `ort`= '" . mysqli_real_escape_string($_POST['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";}
}
?>
Liebe Grüße,
N4N0
Kommentar