login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Meerdere criteria

Offline qubus - 17/08/2006 12:24 (laatste wijziging 17/08/2006 12:30)
Avatar van qubusLid Hallo,

Ik heb een tabel met daarin bijvoorbeeld de volgende kolommen:

Geslacht | voetbal | volleybal | tennis
--------------------------------------
Man | 1 | 0 | 1
Vrouw | 0 | 0 | 1

Hierbij kan in de kolom 'Geslacht' de volgende keuze staan: Man, vrouw of stel
Als ze willen meedoen met voetbal staat daar een 1 en anders een nul. Ook bij de andere kolommen.

Nu wil ik via een zoekformulier in deze gegevens zoeken naar bijvoorbeeld alle mannen die willen voetballen. Dit doe ik door een keuzelijst vakje op de pagina met man/vrouw/stel en een keuzelijkst vakje met voetbal/volleybal/tennis.

Het zoeken naar het tweede keuzelijst vakje lukt me maar niet, want dan moet er dus in de kolom gezocht worden die in het selectievakje is gekozen.

Ik heb geen voorbeeldcode, omdat ik echt niet weet waar ik moet beginnen, kan iemand mij op weg helpen met een mySQL querry?

Alvast bedankt!

10 antwoorden

Gesponsorde links
Offline roelh - 17/08/2006 12:44
Avatar van roelh PHP gevorderde Je moet values opgeven dus.
Paar selectboxen maken(4)

en dan bij geslacht man value man
vrouw value vrouw
stel value stel

bij voetbal
ja value 1
nee value 0

en zo kunje ook net tennis en volleybal doen.
En dan zoeken.

Hopelijk helpt je dot...was ff een snellle uitleg 
Offline Thomas - 17/08/2006 12:54
Avatar van Thomas Moderator Je query zal dynamisch opgebouwd moeten worden, afhankelijk van welke velden zijn geselecteerd.
De opbouw van je formulier zal afhangen van hoe je wilt zoeken.

Als je bijvoorbeeld meerdere geslachten wilt selecteren, dan zul je hier checkboxen voor moeten gebruiken, en als je altijd maar op (maximaal) één sport wilt zoeken, dan kun je hier radio-buttons voor gebruiken.

Het eerste wat je dus voor jezelf moet bepalen is hoe (en wat) je allemaal wilt kunnen zoeken - dit bepaalt de opbouw van je zoekformulier.
Offline xSc - 17/08/2006 12:57
Avatar van xSc Onbekend Ik sla geslacht op als een nummer. Bijv. man 1, vrouw 2, stel 3. De ene keer heb je als geslacht 'man', maar je kunt natuurlijk ook 'heer' nodig hebben of 'dhr'. In je query kun je bijv. met een CASE aangeven hoe de 'aanroep van het geslacht' eruit moet zien.
Offline qubus - 17/08/2006 13:03 (laatste wijziging 17/08/2006 13:06)
Avatar van qubus Lid Ja maar ik wil die drie keuzesporten in één slectievakje hebben. Zodat er ook maar één kan worden gekozen.

Ik zat zelf met:
  1. if ($_POST['sport'] == "Voetbal") { $zoek1 = 1; $zoek2 = ""; $zoek3 = "";
  2. }
  3. if ($_POST['sport'] == "Volleybal") { $zoek1 = ""; $zoek2 = 1; $zoek3 = "";
  4. }
  5. if ($_POST['sport'] == "Voetbal") { $zoek1 = ""; $zoek2 = ""; $zoek3 = 1;
  6. }
  7. $get= mysql_query("SELECT id, naam, plaats, leeftijd FROM profiel
  8. WHERE inschakelen = 1
  9. AND IF '".$zoek1."' = 1 THEN voetbal = '" . $zoek1 . "' ELSEIF '".$zoek2."' = 1 THEN volleybal = '". $zoek2 ."' ELSEIF '".$zoek3."' = 1 THEN tennis = '". $zoek3 ."'");


Maar dat werkt voor geen meter
Offline nielsvdwal - 17/08/2006 13:32 (laatste wijziging 17/08/2006 13:32)
Avatar van nielsvdwal PHP gevorderde gewoon.. WHERE geslacht = $_POST['geslacht'] AND $_POST['sport'] = 1

dan heb je het toch?:|
Offline qubus - 17/08/2006 13:34
Avatar van qubus Lid Ik heb het anders opgelost.
Ik kijk nu eerst in php welke keuze is gemaakt en selecteer dan met een if de juiste querry.
Dat zijn er nu dus gewoon wat meer.

Bedankt voor het meedenken!
Offline nielsvdwal - 17/08/2006 13:35
Avatar van nielsvdwal PHP gevorderde kan het niet op de manier hoe ik het zei? lijkt me toch 10x zo kort 
Offline Thomas - 17/08/2006 13:43
Avatar van Thomas Moderator Beter lijkt mij inderdaad, zoals nielsvdwal voorstelt, om de values van je formulier-elementen zo te kiezen, dat je deze rechtstreeks in kunt passen in je queries.

Als je je query dynamisch opbouwt, dan heb je ook echt maar 1 query nodig, je hoeft dan niet voor alle mogelijke varianten een query te schrijven.
Offline qubus - 17/08/2006 14:59
Avatar van qubus Lid Ja maar het kan zijn dat iemand in de database staat bij zowel voetbal als volleybal bijvoorbeeld. Als ik alle drie de opties in de querry verwerk dan slaat hij dus deze rijen over als die ook op 1 staan. want er staat er in het formulier element maar 1 op 1. In de querry zoekt hij bij de andere twee dan naar 0 terwijl dit ook 1 kan zijn. Of denk ik nu zo krom???
Offline Thomas - 17/08/2006 16:04 (laatste wijziging 17/08/2006 16:05)
Avatar van Thomas Moderator Je moet kijken naar welke gegevens moeten kloppen, de overige gegevens zijn voor je resultaat niet relevant.

Als je dus wilt weten of iemand voetbalt (hetzij een man, vrouw of paar), dan boeit het niet of die persoon ook aan volleybal en/of tennis doet (of niet).

Je controleert dan of de kolom voetbal de waarde 1 heeft, de waarde van de kolommen volleybal en tennis doen er niet toe.

Tenzij je wilt weten of deze man/vrouw / dit stel ook (of per sé niet) aan deze sport(en) doet.

En daarmee kom ik terug op mijn eerdere opmerking: Stel eerst vast wat je allemaal wilt kunnen zoeken, en richt vervolgens het formulier zo in dat deze op deze zoekwensen aansluit.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.168s