sql query opbouwen met checkboxen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fabian

Fabian

04/09/2007 12:46:00
Quote Anchor link
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?
 
PHP hulp

PHP hulp

19/11/2024 06:18:12
 
Kalle P

Kalle P

04/09/2007 12:58:00
Quote Anchor link
De query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$talen
= array('Frans', 'Nederlands', 'Engels', 'Duits');

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

  //de rest
}
?>
 
Fabian

Fabian

04/09/2007 15:41:00
Quote Anchor link
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?
 
Frank -

Frank -

04/09/2007 15:55:00
Quote Anchor link
Dit lijkt mij handiger:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<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.
 
Mark L

Mark L

04/09/2007 16:27:00
Quote Anchor link
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):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
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..
}
 
Fabian

Fabian

05/09/2007 11:52:00
Quote Anchor link
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?
 



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.