Avatar billede krummel Juniormester
30. maj 2007 - 21:05 Der er 11 kommentarer og
1 løsning

sql og if og samle streng

Nu har jeg forgæves brugt en time på at søge herinde om nedenstående. Jeg må søge på det forkerte, da jeg er sikker på det er besvaret mange gange før.

Hvordan laver man en if sætning i sql og samler sql sætninger.
Noget lignende dette eller? (mysql og php)


$sql = mysql_query("select * from tabel WHERE ";
if ($_GET[navn] != "") {
$sql = $sql . "name='$_GET[navn]' AND ";
}
$sql = $sql . "hus='$_GET[nr]'";
Avatar billede w13 Novice
30. maj 2007 - 21:11 #1
Som jeg ser det, mangler du at lukke den parentes, du starter lige efter mysql_query.

Prøv med:

$sql = "select * from tabel WHERE ";
if ($_GET[navn] != "") {
$sql = $sql . "name='$_GET[navn]' AND ";
}
$sql = $sql . "hus='$_GET[nr]'";

$sql = mysql_query($sql);
Avatar billede krummel Juniormester
30. maj 2007 - 21:28 #2
Ups, jeg fik ikke den sidste parantes med i posten - jeg har den ellers.

Jeg prøvede dit forslag, men det ser desværre ikke ud til at hjælpe
Avatar billede krummel Juniormester
30. maj 2007 - 21:36 #3
Selv uden if sætningen virker den ikke, så det må være noget med måden jeg samler strengen på, som er forkert
Avatar billede hmm10 Nybegynder
30. maj 2007 - 21:39 #4
måske:

$sql = mysql_query("select * from `tabel` where ".(!empty($_GET[navn]) ? "`name`='$_GET[navn]' and " : "")."`hus`='$_GET[nr]'");

print_r($sql);
Avatar billede hmm10 Nybegynder
30. maj 2007 - 21:45 #5
Du kan bla. samle flere strings således:

$smily = ":)";
$str = "her ";
$str .= "er en ";
$str .= "test ".$smily;
print $str;
Avatar billede hmm10 Nybegynder
30. maj 2007 - 21:49 #6
ups! mysql_query returner ikke et array - sorry
Avatar billede w13 Novice
30. maj 2007 - 21:55 #7
Hvad er din fejl da?
Avatar billede hmm10 Nybegynder
30. maj 2007 - 22:01 #8
Når du starter en function (i dit tilfælde mysql_query) og starter en ny function (i dit tilfælde en if) vil php gerne have, at du slutter den første function - dvs. nu mangler mysql_query en slut parentes ")" og if er derfor ikke længere i mysql_query men står for sig selv.

Det løses ved, at function "if" ligges ind i string via:
(!empty($_GET[navn]) ? "`name`='$_GET[navn]' and " : "")
Avatar billede krummel Juniormester
30. maj 2007 - 22:27 #9
hmm10, super - dit forslag ser ud til at være brugbart. Hvis if sætningen i stedet så således ud:
if ($_GET[navn] == "ok") 
hvordan skal strengen så skrives?

@w13: Til mig? Den giver mig ikke nogle records (html'en viser sig fint, men ingen data fra db)
Avatar billede hmm10 Nybegynder
30. maj 2007 - 22:38 #10
Hvis du har i tankerne at udbygge/tilføje flere if's, kunne det bla. gøres via:

if(!empty($_GET["navn"]) $sql_string .= "name='$_GET[navn]' AND ";
/*  ect! - build larger $sql_string with more if-sentence  */

$sql = mysql_query("select * from tabel where ".$sql_string."hus='$_GET[nr]'");
Avatar billede krummel Juniormester
30. maj 2007 - 23:02 #11
tak for hjælpen hmm10 - giv et svar så jeg kan give dig point
Avatar billede hmm10 Nybegynder
30. maj 2007 - 23:05 #12
Her er et svar, hvis det kan bruges :)
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