Avatar billede kgp43 Nybegynder
04. marts 2004 - 07:59 Der er 9 kommentarer og
1 løsning

If checkbox er sat

Hejsa,

Hvordan laver jeg følgende query:

På min søgeside har brugeren mulighed for at markere nogle checkbokse (kun 1 værdi). Hvis en af disse checkbokse er markeret, så skal det tages med i query'en, hvis ikke skal der bare søges på alle info.

Ex.

mysql_query("SELECT * FROM table")
hvis checkboksen er markeret:
mysql_query("SELECT * FROM table WHERE art='line'")

Er man nød til at lave nogle if sætningen og efterfølgende en seperat query for hver søgemulighed?
Avatar billede kgp43 Nybegynder
04. marts 2004 - 07:59 #1
eller kan det dele integreres i den samme query
Avatar billede kgp43 Nybegynder
04. marts 2004 - 11:09 #2
okay, tror det skal laves i den samme query. Jeg har vel 4-5 forskellige checkbokse, hvilket vil give utrolig mange forskellige if kombinationer.
Avatar billede Slettet bruger
04. marts 2004 - 12:44 #3
Du kan lave et array med dine checkbox-muligheder:

$checkboxmuligheder=array('line' => "WHERE art='line'", 'bitmap' => "WHERE art='bitmap'")

if (isset($_POST['checkboxnavn']) && isset($checkboxmuligheder[$_POST['checkboxnavn']]){
  $sql="SELECT * FROM table " . $checkboxmuligheder[$_POST['checkboxnavn']];
} else {
  $sql="SELECT * FROM table";
}
Avatar billede kgp43 Nybegynder
04. marts 2004 - 13:30 #4
Tror du har misforstået.

Brugeren har mulighed for at markere forskellige checkboxes. Dit forslag er kun aktuelt (så vidt jeg kan se), hvis brugeren vælger om art skal være bitmap eller line. Det skal også være muligt at markere andre checkbox's.



Ex:

Mark what categories you want to search (or leave blank):

Category 1 [checkbox]
Category 2 [checkbox]
Category 3 [checkbox]
Category 4 [checkbox]
Category 5 [checkbox]
Avatar billede Slettet bruger
04. marts 2004 - 13:45 #5
Ja, så skal det gøres anderledes. Er det korrekt forstået, at hvis mere end en checkbox er markeret, så skal den vise fællesmængden af de to kategorier?

Hvis ja, er følgende en mulighed. I din html kan du gøre således:

<input type='checkbox' name='kategori[line]'>
<input type='checkbox' name='kategori[bitmap]'>

I php skal du så have noget i denne stil:

$kategorier=array(
  'line' => "art='line'",
  'bitmap' => "art='bitmap'"
)
$where=' ';
$firstline=true;
foreach($_POST['kategori'] as $name => $value){
  if (!firstline){$where.=' OR ';}
  $where.=$kategorier[$name];
}
Avatar billede Slettet bruger
04. marts 2004 - 13:46 #6
Rettelse:

$kategorier=array(
  'line' => "art='line'",
  'bitmap' => "art='bitmap'"
)
$where=' ';
$firstline=true;
foreach($_POST['kategori'] as $name => $value){
  if (!firstline){$where.=' OR ';}
  $where.=$kategorier[$name];
  $firstline=false;
}
Avatar billede kgp43 Nybegynder
04. marts 2004 - 14:02 #7
Jeg giver lige en ekspmel:

Hvis category1 og category2 er markeret, så her queryen sådan ud:

mysql_qyery("SELECT * FROM table WHERE category1='$category1' AND category2='$category2'");

- Skal jeg ikke bare udskifte "OR", i dit sidste eksempel, til AND ?
Avatar billede Slettet bruger
04. marts 2004 - 14:07 #8
Jo, hvis du kun ønske at have resultater, hvor alle ønsker er opfyldt. (Så kan man nok let komme til at lave søgninger, som ikke giver resultat.)
Avatar billede kgp43 Nybegynder
04. marts 2004 - 14:13 #9
yep :)

takker.
laver du lige et svar så du kan få point.
Avatar billede Slettet bruger
04. marts 2004 - 14:15 #10
Kommer her.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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