Zoekopdracht met meerdere waarden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Selles

Wim Selles

21/02/2009 09:39:00
Quote Anchor link
Hallo allemaal,

Ik ben een beetje aan het pieren met een zoekfunctie die resultaten moet weergeven naar aanleiding van het kiezen van 0-N waarden uit de ene selectbox en 0-N waarden uit de tweede selectbox.
Het betreft een zoekfunctie voor een formulier welke actiepunten bevat. In het formulier worden de actie, de actiehouder, de status en de datum ingevuld en vervolgens opgeslagen in de tabel "action".
De selectboxen worden gegenereerd uit 2 verschillende tabellen. De values van de opties worden, bij het opslaan van het formulier, opgeslagen in de tabel "action"

Dit zijn mijn 2 selectboxen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<select id="" name="search_actionholder[]" multiple="multiple" size="4" style="width:250px">
<option value="naam1">Jan</option>
<option value="naam2">Piet</option>
<option value="naam3">Karel</option>
<option value="naam4">Henk</option>
<option value="naam5">Gerard</option>
<option value="naam6">Erik</option>
</select>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<select id="" name="search_status[]" multiple="multiple" size="4" style="width:250px">
<option value="N">Nieuw</option>
<option value="O">Open</option>
<option value="G">Gereed</option>
<option value="V">Vervallen</option>
</select>


De volgende code heb ik reeds en die werkt bij 0 en 1 resultaat uit de selectboxen. (code is nog erg simpel omdat ik eerst aan het pieren ben, straks als alles werkt zal ik hem aanpassen)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if (isset($_POST['search_submit']))
{

    echo "<b>gezocht:</b><br />";
// zet een komma tussen de geselecteerde resultaten in de array
    $search_actionholder = @implode(", ",$_POST['search_actionholder']);
// zet een komma tussen de geselecteerde resultaten in de array
    $search_status = @implode(", ",$_POST['search_status']);
// laat de geselecteerde resultaten zien
    echo $search_actionholder."<br />";
    echo $search_status."<br />";
    $sql = "SELECT * FROM action
            WHERE (person_value LIKE '%"
.$search_actionholder."%' OR person_value = 'ALL')
            AND (status_value LIKE '%"
.$search_status."%' OR status_value = 'ALL')
            ORDER BY action_id DESC"
;
    $test    = mysql_query($sql);
// laat de resultaten zien
    while($row=mysql_fetch_array($test))
    {

        echo $row['action']."<br />\n";
    }
}

?>


Dit werkt dus voor 0 geselecteerde opties, dan laat hij alle resultaten zien. Het werkt ook wanneer ik bijvoorbeeld in de eerste lijst "Jan" kies en in de tweede lijst "Nieuw", dan zie ik namelijk alle resultaten van actiepunten die op naam van "Jan" staan en die de status "Nieuw" hebben.

Wanneer ik bijvoorbeeld "Jan" en "Erik" selecteer, dan krijg ik geen resultaten, ook niet als ik er 1 of 2 statussen bij selecteer.

Ik hoop dat iemand mij kan helpen. In ieder geval bedankt voor de moeite.


Mvg

Wim
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.