Hi!
Ich habe von einem Bekannten ein Skript für die Suche in einer MySQL-Datenbank übernommen. Dieses sucht mit arrays und patterns.
Eine Spalte der Datenbanktabelle trägt den Namen „ZG“, das dazugehörige Formulareingabefeld heißt „zugg“.
Nun ist mir allerdings aufgefallen daß die Wahl des Patterns „LIKE“ ungünstig ist, da dann bei einer suche in „ZG“ nach z.B. „E“ alle Einträge aufgelistet werden, die ein „E“ enthalten (muss ja so sein). Ich möchte allerdings nur die Einträge angezeigt bekommen welche wirklich nur aus dem „E“ bestehen.
Also muss in der foreach-Schleife wohl eine Ausnahme rein, die das neue Pattern (das müsste dann ja „=“ sein, oder?) festlegt. Allerdings weiß ich nicht, wie ich dies realisieren kann. Bei meinen bisherigen Versuchen landete ich immer wieder bei der Fehlermeldung „Bitte mindestens einen Suchbegriff eingeben“.
Hier der bisherige Code mit meinem Lösungsversuch (der nicht funktioniert hat):
values (Datenbank)
‚datum‘ => ‚Datum‘,
‚tfznr‘ => ‚Triebfahrzeug‘,
‚tfzevu‘ => ‚EVU‘,
‚tfzfarbe‘ => ‚Farbe‘,
‚tfzname‘ => ‚Taufname‘,
‚tfzmerkmal‘ => ‚Werbung‘,
‚tfztraktion‘ => ‚Traktion‘,
‚zugnr‘ => ‚ZN‘,
‚zugn‘ => ‚Zugname‘,
‚zugstart‘ => ‚Start‘,
‚zugziel‘ => ‚Ziel‘,
‚anmerkungen‘ => ‚Anmerkungen‘,
); if(strlen($_POST[‚datum‘]) == 4) {
$datum = $suche1;
// echo "Neues Datum ist ".$datum;
} else {
$datum2 = $_POST[‚datum‘];
$umbau = strtotime($datum2);
//echo $umbau;
$datum = date(‚Y-m-d‘, $umbau);
//echo "Datum ist ".$datum;
}/*$datum2 = $_POST[‚datum‘];
$umbau = date_create_from_format(‚j-M-Y‘,$datum2);
echo $umbau;
$datum = date($umbau,‚Y-m-d‘);
echo "Datum ist ".$datum;*//*$datum2 = $_POST[‚datum‘];
$umbau = DateTime::createFromFormat(‚Y-M-j‘, $datum2);
$datum = $date->format(‚d.m.Y‘); */
// Jede Teilabfrage lautet LIKE ‚% … %‘, aber vielleicht will man das ja mal ändern…
// Wird sprintf() benutzt, müssen Prozentzeichen doppelt geschrieben werden, um sie in den resultierenden String zu bekommen
$sqlPattern = „%s LIKE ‚%%%s%%‘“;
// Teilabfragen in Array ablegen, hier: array initialisieren
$conditions = array();
// Sicherstellen, dass alle Felder berücksichtigt werden (jedes Feld könnte vorkommen)
foreach ($mapPOST2DB as $keyPOST => $keyDB) {
$_POST[‚datum‘] = $datum;
if($_POST[‚datum‘] === „1970-01-01“) {
$_POST[‚datum‘] = „“;
} // Gibt es den Schlüssel im POST?
if (isset($_POST[$keyPOST]) && ($_POST[$keyPOST]) != „“)) {
// Wert ist vorhanden, baue eine Teilabfrage und lege sie ins Array.
$conditions[] = sprintf($sqlPattern, $keyDB, mysqli_real_escape_string($verbindung, $_POST[$keyPOST]));
} else {}
/* if (isset($_POST[‚zugg‘])) {
$sqlPattern = „%s = ‚%%%s%%‘“;
$conditions[] = sprintf($sqlPattern, $keyDB, mysqli_real_escape_string($verbindung, $_POST[$keyPOST]));
} else {}*/
}//Prüfen, ob mindestens ein Feld ausgefüllt wurde. Falls nein -> $conditions leer, $test = 0 Abbruch
$test = count($conditions);
if($test ';
print $res;
print ‚‘;*/
//trigger_error('Datenbankanfrage schlug fehl: '.mysqli_error(), E_USER_ERROR);
}
if(mysqli_num_rows($res) === 500) {
echo "Es wird nur eine Auswahl an Datensätzen angezeigt, da mehr als 500 zutreffende Einträge vorhanden sind. Bitte verfeinern Sie ggf. Ihre Suche durch Eingabe zusätzlicher oder anderer Kriterien.
";
}
if(mysqli_num_rows($res) > 0) { //Datensätze wurden gefunden; Ausgabe
$zeilen = mysqli_num_rows($res);
$spalten = mysqli_fetch_fields($res);
echo "Es wurden $zeilen Datensätze zu Ihrer Suchanfrage gefunden.
„;
echo „“;
echo „\n“;
echo „Datum“;
echo „Triebfahrzeug“;
echo „EVU“;
echo „Farbe“;
echo „Taufname“;
echo „Werbung“;
echo „Traktion“;
echo „ZG“;
echo „ZN“;
echo „Zugname“;
echo „Start“;
echo „Ziel“;
echo „Anmerkungen“;
while($row = mysqli_fetch_assoc($res)):
echo ‚‘.“\r\n";
echo ‚‘.$row[‚Datum‘].’’."\r\n";
echo ‚‘.$row[‚Triebfahrzeug‘].’’."\r\n";
echo ‚‘.$row[‚EVU‘].’’."\r\n";
echo ‚‘.$row[‚Farbe‘].’’."\r\n";
echo ‚‘.$row[‚Taufname‘].’’."\r\n";
echo ‚‘.$row[‚Werbung‘].’’."\r\n";
echo ‚‘.$row[‚Traktion‘].’’."\r\n";
echo ‚‘.$row[‚ZG‘].’’."\r\n";
echo ‚‘.$row[‚ZN‘].’’."\r\n";
echo ‚‘.$row[‚Zugname‘].’’."\r\n";
echo ‚‘.$row[‚Start‘].’’."\r\n";
echo ‚‘.$row[‚Ziel‘].’’."\r\n";
echo ‚‘.$row[‚Anmerkungen‘].’’."\r\n";
echo ‚‘."\r\n";
$i++; //Zähler für dynamischen Tabellenaufbau fortsetzen
/*echo $row[‚Datum‘];
echo $row[‚Triebfahrzeug‘];
echo $row[‚EVU‘];
echo $row[‚Farbe‘];
echo $row[‚Taufname‘];
echo $row[‚Werbung‘];
echo $row[‚Traktion‘];
echo $row[‚ZG‘];
echo $row[‚ZN‘];
echo $row[‚Zugname‘];
echo $row[‚Start‘];
echo $row[‚Ziel‘];
echo $row[‚Anmerkungen‘];*/
endwhile;
echo „\n“;
}
?>