[SQL] Meerdere (lege) voorwaarden

Pagina: 1
Acties:

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Hey,
Ik heb een database met daarin tabellen met de kolomnamen geslacht, sexualiteit, interesses, kleurhaar, kleurogen, etc etc (het is voor een datingbureau online).

Hierbij heb ik een zoekscherm gemaakt, maar ik zit vast bij de query.
Als geslacht is ingevuld, moet hij hierop zoeken, maar als sexualiteit ook is ingevuld moet hij hier een AND query van maken, dus "select * from snelkoppeling where geslacht='$geslacht' and sexualiteit='$sexualiteit'".

Het probleem is echter, als geslacht wel is ingevuld en sexualiteit niet, dan kan ik deze AND query niet gebruiken omdat er altijd wel iets is ingevuld bij sexualiteit. (Anders zou het bijvoorbeeld geslacht='man' and sexualiteit='' worden, waarbij je dus geen results krijgt.)
Het moet dus iets worden in de trant van (heel erg foutief PHP, maar even om mijn bedoeling uit te leggen):

code:
1
$query="select * from snelkoppeling where (if isset($geslacht) { geslacht='$geslacht', }) (if isset($sexualiteit) { sexualiteit='$sexualiteit'; })";


Iemand die me hieruit kan helpen??

[ Voor 6% gewijzigd door Peedy op 20-04-2005 20:56 ]


  • dennisvz
  • Registratie: Mei 2003
  • Laatst online: 24-02 12:08

dennisvz

Intentionally left blank

Ik ga er even vanuit dat je het in PHP wilt, en anders kun je het eenvoudig in een andere scriptingtaal omzetten.

Je hebt een 'basis-query', in jouw geval
PHP:
1
<?php $sql = "SELECT * FROM snelkoppeling WHERE"; ?>

daarna ga je een voor een controleren of de waarde in het formulier is ingevuld, dus iets van
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
if (isset($_GET['geslacht']) && $_GET['geslacht'] != '')
{
  $sql .= " geslacht = " . $_GET['geslacht'] . " AND ";
}
else
{
  $sql .= " 1 AND ";
}
?>

en dit bovenste dan voor elke zoekterm opnieuw (met uitzondering van de laatste, waarbij uiteraard geen AND op het eind staan.

Ik geef toe, 't is verre van elegant, maar het is wel een doeltreffende oplossing.

[ Voor 31% gewijzigd door dennisvz op 20-04-2005 20:59 . Reden: got pakt geen sql-tags :'( ]


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Super :) Ik heb het voor elkaar :D
Vieze code inderdaad, maar ach.. server-side parsing gelukkig hea ;)

Bedankt!! :D