02. februar 2001 - 00:32Der 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...
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 !!
besøg ogå webcafe.dk, det var jer jeg fik hjælp til dette... rigtigt godt sted, meindre end experten, men flinke mennsker.
Synes godt om
Ny brugerNybegynder
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.