Avatar billede xorioz Nybegynder
27. august 2004 - 17:21 Der er 3 kommentarer og
1 løsning

6 variabler der skal sættes i mysql forspørgelse alt efter valg

jeg sider nu i det dilema at jeg har 6 variabler som skal sættes i min mysql forspørgelse alt efter om de er aktiveret eller ej
variablerne er
$forn, $eftn, $kvinde, $mand, $min_alder, $max_alder

og de skal bruges i en forspørgelse der ser sådan ud
select * from database where age > '$min_alder' && age < '$max_alder' && gender = '$mand' && gender = '$kvinde' && fornavn = '$forn' && efternavn = '$eftn'

nu er det bare sådan at variablerne ikke altid er sat fordig alde kald til forspørgelsen ikke altid skal bruges

det jeg vil spørge om er om der ik er en letere løsning ind at lave en helvedes masse if sætninger?
Avatar billede nicklasb Nybegynder
27. august 2004 - 18:07 #1
Det tror jeg ikke du skal regne med.
Noget andet, jeg tror du skal kigge på, er hvordan du har skruet dit script sammen. For for mig at se, er det ikke videre heldigt det du har fået lavet.
En smartere måde kunne være at oprette et array, og heri lægge søgeord samt tilhørende søgekolonne, og så herefter sammensætte din forspørgelse ud fra dette. Men det du har lavet tror jeg ikke du kan lave meget "smartere"!
Avatar billede coderdk Praktikant
27. august 2004 - 21:04 #2
Hvad med:

$sql = "select * from database";
$where = array();
$where[] = ( isset( $alder ) ? " age > 'min_alder' " : '' );
$where[] = ( isset( $max_alder ) ? " age < '$max_alder' " : '' );
$where[] = ( isset( $mand ) ? " gender = '$mand' " : '' );
$where[] = ( isset( $kvinde ) ? " gender = '$kvinde' " : '' );
$where[] = ( isset( $forn ) ? " fornavn = '$forn' " : '' );
$where[] = ( isset( $eftern ) ? " efternavn = '$eftern' " : '' );
if ( count( $where ) > 0 )
{
  $sql .= " WHERE " . implode( " AND ", $where );
}

echo $sql;
Avatar billede xorioz Nybegynder
20. september 2004 - 13:35 #3
coderdk det virker fint skulle bare justere det lidt takker :D nu skal du bare lave et svar for at få points
Avatar billede coderdk Praktikant
20. september 2004 - 15:53 #4
Roger that :)
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