Mysql Datenbankabfrage per Formular

mike2010

Grünschnabel
Hallo,

ich bin jetzt schon seit Tagen am lesen und googeln, kann aber leider keine funktionierende Lösung für mein Problem finden.

Meine Situation:
Ich habe eine Datenbank in die man sich per Formular eintragen kann. Zur Abfrage sollte man auch wieder ein Formular verwenden können (und verschiedene Suchkriterien auswählen können) und die Ergebnisse dann in einer Tabelle angezeigt bekommen.

Wenn ich jetzt nur nach einem Begriff suchen möchte funktioniert es, aber ich habe leider keine Ahnung wie ich 2 oder 3 Suchkriterien zuweisen kann.

Folgendes habe ich bis jetzt für einen Suchbegriff:

SUCHFORMULAR:
<form method="POST" action="suchen.php">
<select name="suchbegriff" size="1">
<option value="bar">Bar</option>
<option value="restaurant">Restaurant</option>
<option value="imbiss">Imbiss</option>
</select>
<p><input type="submit" value="Absenden" name="Absenden"></p>
</form>

AUSGABE:
...Datenbankverbindung...
$suche = $_POST['suchbegriff'];
// Verbindung oeffnen und Datenbank ausweahlen
$conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
if ($conID)
{
mysql_select_db( $db_name, $conID );
}
$daten =
mysql_query('SELECT * FROM `restaurants` WHERE `typ`=\''.$suche.'\'' , $conID);
// Tabelle erstellen fuer die Ausgabe
echo '<table border="1">';
echo "<tr><th>Lokalname</th><th>Typ</th><th>Küche</th><th>Adresse</th></tr>";
while($datensatz=mysql_fetch_array($daten))
{
// Jeder Datensatz entspricht einer Tabellenzeile
echo "<tr>";
echo "<td>" .htmlspecialchars( $datensatz['lokalname'] ). "</td>";
echo "<td>" .htmlspecialchars( $datensatz['typ'] ). "</td>";
echo "<td>" .$datensatz['kueche']. "</td>";
echo "<td>" .$datensatz['adresse']. "</td>";
echo "</tr>";
}
// Tabelle schliessen
echo "</table>";
?>

Wie gesagt, bei einem Suchbegriff funktioniert es! Wenn ich aber jetzt im Suchformular einen weiteren Auswahlbegriff hinzufüge, bekomme ich keine Ergebnisse mehr (obwohl beide Kriterien natürlich in der Datenbank vorhanden wären)!

Wäre sehr dankbar wenn mir jemand kurz helfen könnte!!

lg Mike
 
Mal sehen, ob ich dich richtig verstanden habe:

Du hast ein Eingabefeld (Name "suchbegriff"), dass momentan nur 1 Suchbegriff aufnimmt und du möchtest jetzt mehere zulassen und auch die Suche dementsprechend anpassen?

Ok, dann musst du dir folgende Dinge überlegen:

  1. Wie sind die einzelnen Suchbegriffe logisch verknüpft? Per ODER? (DH Begriff1 oder Begriff2 steht in deinem Feld typ drin)
  2. Wie werden die verschiedenen Suchbegriffe im Textfeld getrennt? Leerzeichen, Texte wie "ODER "...

Wenn du das weisst, musst du:
  1. den eingegebenen Text in die eigentlichen Elemente aufsplitten (Stichwort Arrays, Funktion explode)
  2. Die Where-Clausel deiner Abfrage um die neuen Bedingungen (zB. 'WHERE `typ`="Wert1" OR `typ`="Wert2" OR [...]') erweitern

Fertig
 
danke für deine antwort!

die begriffe sollen sich aber NICHT gegenseitig ausschließen sondern ergänzen (aber aus verschiedenen Kategorien).

zB: ich suche einen IMBISS in ORTxy

momentan kann ich meine suche nur nach IMBISS durchsuchen (möchte aber die suche noch weiter eingrenzen können).
 
Vielleicht nicht elegant, aber:
PHP:
<?php
$abfrage    = "WHERE ID IS NOT NULL ";
if ($_POST["kategorie"]!="")
  $abfrage. = " AND KATEGORIE LIKE '".mysql_real_escape_string($_POST["kategorie"])."%'";
if ($_POST["ort"]!="")
  $abfrage. = " AND ORT LIKE '".mysql_real_escape_string($_POST["ort"])."%'";
$daten      = mysql_query('SELECT * FROM restaurants '.$abfrage.'') or die(mysql_error());
?>
 
Zurück