Hallo,

Even een inleiding:
Ik heb een database waarin de waarde van checkboxen worden opgeslagen. Ik heb zo een kolom voor elke taal ( nederlands, frans, duits..). Als de checkbox aangevinkt is staat er een 1 anders een 0.
Nu wil ik een zoekformulier maken (weer met behulp van checkboxen) waarmee het volgende kan gedaan worden. Als ik bijvoorbeeld op frans wil zoeken, wil ik de records zien waarbij frans geslecteerd is maar ook nederlands in combinatie met frans of andere talen in combinatie met frans.

Iemand een hint, tutorial ofzo hoe ik hieraan begin?




De query
<?php
$talen = array('Frans', 'Nederlands', 'Engels', 'Duits');

if (in_array($_POST['taal'], $talen)){
query = "SELECT * FROM tabel WHERE taal = ". $_POST['taal'];

//de rest
}
?>
ik weet niet of dit bruikbaar is.

ik heb het volgende:

een tabel met hierin een kolom naam, adres,nederlands, frans, duits...

De talen zijn gebonden aan een checkbox (via 1 en 0).

Nu wil ik de namen zoeken die bijvoorbeeld frans spreken. Dit wil dus zeggen alleen frans en ook mensen die frans en nederlands spreken.

<input type="checkbox" name="searchned" value="1" >Nederlands
<input type="checkbox" name="searchfrans" value="1" >Frans
<input type="checkbox" name="searchduits" value="1" >Duits
<input type="checkbox" name="searchspaans" value="1" >Spaans

iemand een idee?
Dit lijkt mij handiger:

<input type="checkbox" name="taal[]" value="nl" >Nederlands
<input type="checkbox" name="taal[]" value="fr" >Frans
<input type="checkbox" name="taal[]" value="de" >Duits
<input type="checkbox" name="taal[]" value="es" >Spaans

Wanneer je nu het formulier verstuurd, krijg je de array $_POST['taal'] binnen. Daarin staan de geselecteerde waardes, bv. 'nl' en 'es'. Het is dus duidelijk dat Nederlands en Spaans zijn geselecteerd.

Met een foreach-lus kun je de array eenvoudig doorlopen.
Aanvulling op pgFrank:
En om zo min mogelijk querys te doen (word hij toch sneller van, of ben ik nou weer heel vaag...?) kan je het beste de foreachloop zoiets doen (vind ik iig handig):


if (isset($_POST['taal'])) {
foreach ($_POST['taal'] as $value) {
$talen[] = "taal = '".$value."'"; // even beredeneerd vanuit een query, die vaak met double quotes gaat
}
$sql = "SELECT kolommen FROM tabel WHERE (". implode(' OR ', $talen).")";
// iets als: SELECT kolommen FROM tabel WHERE (taal = 'nl' OR taal = 'de')
// Het staat tussen haakjes zodat je er nog een 'AND' ofzo bij kan doen..
}
Bedankt ik heb het kunnen oplossen dankzij jullie hulp!

Bijkomend een vraagje,

In een veld (refcode) worden de waarden van verschillende checkboxen opgeslagen, gescheiden door een #.
vb: #301#304#25#369#85
vb: #304#305#369#85

nu wil ik de records opvragen waar bijvoorbeeld #25 instaat EN bijvoorbeeld #301 in het veld refcode

Is dit mogelijk?

Reageren