Avatar billede mikkel_breum Nybegynder
02. februar 2001 - 00:32 Der er 2 kommentarer og
1 løsning

Select .. where x OR y OR z .. OR ..??

ok det er jo godt nok så, men jeg fik egentlig ikke forklaret hele mit problem før:

jeg vil hente poster ud af en tabel ud fra hvilke \"kategorier\" en bruger vælger, men jeg kan ikke på forhånd vide hvor mange kategorier han ønsker at matche...

eks:

afkryds de arrangementer du vil søge i:
[ ] Musik
[x] Film
[x] Teater
[ ] Kunst
[x] Foredrag
[x] Andet

nu skal jeg lave en select .. where som trækker alle poster ud af tabellen hvor \"kategori = Film OR Teater OR Foredrag OR Andet\" ... og jeg ved ikke på forhånd hvilke eller hvor mange brugren afkrydser, så hvordan kan jeg opbygge en query? jeg vil helst kunne gøre det i en query, så jeg kan sortere outputtet samlet efter eks. dato, og så jeg ikke skal foretage gentagne queries til databsen da det vel tager længere tid...
Avatar billede mkelle1 Nybegynder
02. februar 2001 - 02:23 #1
Hej Mikkel

Det kan f.ex. gøres således:

$sql=\"SELECT kategori,navn,beskrivelse from kalender where \";


if ($checkbox1)
{
$sql=$sql.\"kategori=\'Musik\' or\";
}
if ($checkbox2)
{
$sql=$sql.\"kategori=\'Film\' or\";
}
if ($checkbox3)
{
$sql=$sql.\"kategori=\'Teater\' or\";
}
if ($checkbox4)
{
$sql=$sql.\"kategori=\'Kunst\' or\";
}
if ($checkbox5)
{
$sql=$sql.\"kategori=\'Foredrag\' or\";
}
if ($checkbox6)
{
$sql=$sql.\"kategori=\'Andet\' or\";
}

$antal=strlen($sql);
$sql=substr($sql,0,$antal-3);

Hilsen

Mads
Avatar billede mikkel_breum Nybegynder
02. februar 2001 - 11:23 #2
Yes det kan det...

jeg har imidlertid selv fundet en måske endnu smartre løsning, dels er den mere overskuelig og så er den umiddelbart skalerbar såfremt der er flere checkboxe...

Mine checkbove hedder alle kategorivalg[] og der oprettes således et array med de valgte kategorier i variablen $kategorivalg

// find antallet af valgte kategorier
$kat_antal = sizeof($kategorivalg);
for ($i = 0; $i<$kat_antal; $i++) {
    $kat = $kat .\"OR kategori=\'$kategorivalg[$i]\' \";
  }
// fjern \"OR \" fra begyndelsen af første linie
$kat = substr($kat, 3);

// de aktuelle poster hentes fra databasen
$result = mysql_query(\"SELECT kategori,navn,beskrivelse,sted from kalender where $kat order by dato,tidspunkt ASC\");

jeg vidste bare ikke at jeg kunne opbygge en string variablen og så benytte denne som where argument, men da det kan lade sig gøre er det jo super elegant !!
Avatar billede mikkel_breum Nybegynder
02. februar 2001 - 11:24 #3
besøg ogå webcafe.dk, det var jer jeg fik hjælp til dette... rigtigt godt sted, meindre end experten, men flinke mennsker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Netværkstekniker til Forsvarets Cyberdivision i Hvidovre – Er det dig?

Netcompany A/S

Linux Operations Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger elementleder til System sektionen i Hvidovre

Politiets Efterretningstjeneste

AI/ML udvikler i PET