Suche mit mehreren Eigenschaften

counteract

Erfahrenes Mitglied
Hallo!

Ich möchte eine Suche mit 2 Dropdownmenüs und einem Eingabefeld bauen. Jedoch weis ich nicht genau mit diesen Daten aus den Dropdownmenüs umgeht, damit sie auch zur sucher verwendet werden können. Das Tutorial zur Suche durch eine Datenbank habe ich mir auch schon angeschaut, doch dort werden nur die Eingabefelder behandelt.

Wie kann man also mit den Dropdownelementen eine Suche realiseren?

MfG

Counteract
 
Hallo!

Funktioniert genauso wie mit mehreren <input>-Feldern..... nur dass Du beim DropDown den Namen aus dem <select> abfragst, dann erhälst Du den Wert vom value aus den <option>-Feldern.

Gruss Dr Dau
 
Vielleicht zum besseren Verständnis was Dr Dau meint:

PHP:
<?php 

   if(isset($_POST['senden'])){

      echo $_POST['nummer'].'<br/>';
      echo $_POST['text'];      

   }
?>
HTML:
<form  action="" method="post" >
   <select name="nummer" size="1">
      <option value="one">first</option>
      <option value="two">second</option>
      <option value="three">third</option>   
   </select>
    <br/><br/>
    <input type="text" name="text" size="20" style="width: 150px;"/>
   <br/><br/>
   <input type="submit" name="senden">
</form>
 
Leider beantwortet dies nicht ganz meine Frage! :)

Mir geht es um die Abfrage der Suchbegriffe!

In dem Tutorial wird dies so gemacht:

PHP:
<?php
    $query = 'select * from table news where '; //anfang der abfrage
    for($i=0; $i<count($eingabe_array); $i++){
        $query .= "(news_text like '%".$eingabe_array[$i]."%' or ueberschrift like '%".$eingabe_array[$i]."%' or autor like '%".$eingabe_array[$i]."%' or)";
            //ob der $i-te begriff in einer der drei spalten enthalten ist (mit oder verknüpft)
        if($i<count($eingabe_array)-1){
            $query .= ' and ';
        }
        //verknüpfung der einzelnen worte mit und
    }
?>

Aber wie werden die einzelnen Werte aus den Dropdown und inputfeldern zur Suche abgefragt und wie wird damit gesucht?
 
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="text" name="textfeld">
    <select name="dropdown_1">
        <option value="foo">Auswahl 1</option>
        <option value="bar">Auswahl 2</option>
    </select>
    <select name="dropdown_2">
        <option value="bla">andere Auswahl 1</option>
        <option value="blub>andere Auswahl 2</option>
    </select>
    <input type="submit" name="search" value="suchen">
</form>
 
<?php
if(isset($_POST['search'])) {
    mysql_connect("localhost", "name", "passwort");
    mysql_select_db("datenbank")
 
    $query = mysql_query("SELECT * FROM `tabelle` WHERE `spalte_fuer_textfeld` LIKE '%".mysql_real_escape_string($_POST['textfeld'])."%' AND `spalte_fuer_dropdown_1`='".$_POST['dropdown_1']."' AND `spalte_fuer_dropdown_2`='".$_POST['dropdown_2']."'");
 
    echo "Ergebnisse Deiner Suche:<br>";
    while($row = mysql_fetch_array($query)) {
        echo $row['spalte_fuer_textfeld']." - ".$row['spalte_fuer_dropdown_1']." - ".$row['spalte_fuer_dropdown_2']."<br>";
    }
}
?>
Beim Textfeld sind so auch Teilsuchbegriffe möglich.
Nun verständlicher?
 
Zuletzt bearbeitet:
Ja jetzt ist es auf jeden Fall verständlicher! Danke für deine Hilfe... ;)

Jetzt habe ich nur noch eine Frage:

Ist es auch möglich die Suche in der gesamten Tabelle durchzuführen und nicht nur in einer Spalte? Wenn dies möglich ist wie muss man das schreiben?

MfG

Counteract
 
naja, du musst ja nur die Spalten durchsuchen, welche auch relevanten Inhalt haben.

Wenn du nach einem Begriff suchst, kann da sich ja in keiner Spalte mit ID, Datum, Zahlenwert befinden... das liegt dann an dir, die entsprechenden Suchbegriffe auf die Tabellenspalten umzulegen..

PHP:
WHERE `spalte_fuer_textfeld` LIKE '%".mysql_real_escape_string($_POST['textfeld'])."%' OR `spalte_fuer_textfeld2` LIKE '%".mysql_real_escape_string($_POST['textfeld'])."%'

so kannst du mehrere Spalten nach dem gleichen Begriff durchforsten
 
Da habe ich mich wohl etwas falsch ausgedrückt...

Der Sinn des Ganzen soll eine Suche sein die für jedes Suchkreterium ( jedes Dropdown und Inputfeld) in der Spalte die den Suchkreterium zugehörig ist gesucht wird und dann dies ausgibt.

Bsp.: Man sucht als input Feld einen Film und als Dropdown wählt man die Datengröße und in einem weiterem Dropdown wählt man die Art des Films, dann sollen diese Eigenschaften ausgegeben werden und nach Häufigkeit der Übereinstimmung (mit der größten zuerst) ausgegeben werden.
 
chris_sit hat gesagt.:
PHP:
WHERE `spalte_kriterium1` LIKE '%".mysql_real_escape_string($_POST['kriterium1'])."%' AND `spalte_fuer_kriterium2` LIKE '%".mysql_real_escape_string($_POST['kriterium2'])."%'

So hast du mehrere Kriterien auf verschiedene Spalten.. für jede Bedingung ein weiteres AND dazu... war das die Antwort auf deine Frage :confused:
 
Jap genau das wollte ich wissen! Ich bedanke mich bei dir und bei allen anderen für die Antworten auf meine Fragen die manchmal nich leicht zu verstehen sind... :)
 
Zurück