webForumDet fria alternativet

Allt eller inget visas, inget mellanting

Databaser & SQL

5 svar · 424 visningar · startad av Lorelie

Medlem sedan juni 2005264 inlägg
Frågan#1

Gör en söksida där man kan söka på stamboknummer från olika länder, problemet är bara att antingen kommer ALLA hästar i databasen upp om jag gör på ett visst sätt, eller så kommer alla av det valda könet upp, men då kan jag inte välja alla länder i listan. Dessutom kommer endast de som INTE har något nummer upp, fast det ska vara tvärt om.

KODEN (spara ner den och öppna i anteckningar, obegriplig annars...)

på själva söksidan har jag två radio-knapplistor, den ena med kön (hingst, sto, valack), och den andra med länder (SWE, IRE, NPS, DK, FIN, NC, NL). Har jag checked value="Sverige" så kommer ALLA hästar i hela databasen upp oavsett kön, dvs om de inte har något nummer ifyllt i något av landsfälten, tar jag bort checked och bara har value kommer rätt kön upp, men fortfarande alla utan nummer, MEN det går inte välja sverige i listan längre.

Medlem sedan juni 20006 022 inlägg
#2

På flera ställen så har du en % på slutet, men ingen i början.

Medlem sedan juni 2005264 inlägg
#3

Quid skrev:

På flera ställen så har du en % på slutet, men ingen i början.

Oj, det har jag missat
(kodsnuttarna för kön och namn har alltid fungerat förut, precis som de ser ut, utan två %)

La in % i början nu, men då får man inget resultat alls, och det går fortfarande inte välja sverige.

(https://www.aramennoc.se, databasen, test, för att se hur det ser ut)

Medlem sedan dec. 19996 721 inlägg
#4

Det intressanta är ju hur SQL-satsen ser ut när den är klar med värden.

Dock.

SELECT namn, 
hast_id, 
bild_url, 
SWE, 
IRE, 
DK, 
NPS, 
FIN, 
NC, 
NL 
FROM hast 
WHERE kon = '"& SafeSQL(Request.Form("kon")) &"' 
AND namn like '" & SafeSQL(Request.Form("hast"))&"%' 
AND namn <> 'e' 
AND namn <> 'u' 
AND namn <> ' ' 
AND ras <> 'Övrig' 
[b]AND '" & SafeSQL(Request.Form("var"))&"%' is not null[/b] 
ORDER BY '" & SafeSQL(Request.Form("var"))&"%' "

Den fetmarkerade raden är fel, eftersom den alltid kommer att uppfyllas. Den färdiga SQL:en blir ju t.ex

'SE%' is not null

eller om inget är ifyllt

'%' is not null

Jag är inte alls förtjust i att du använder kolumner dynamiskt på det viset, men det du är ute efter är

if len(Request.Form("var"))>0 then
SQL=SQL & " AND " & SafeSQL(Request.Form("var")) &" is not null "
end if
Medlem sedan juni 2005264 inlägg
#5

emission skrev:

if len(Request.Form("var"))>0 then
SQL=SQL & " AND " & SafeSQL(Request.Form("var")) &" is not null "
end if

Var sätter jag detta? under sql-satsen?
Provade med det (och tog bort den felaktiga raden jag hade), då visas alla av rätt kön, oavsett om de har något nummer eller inte

Nu går det välja sverige, men det går inte avmarkera det, utan man får två markeringar för land. Man kanske inte kan ha radioknappar på två ställen på samma sida? Eller så har jag gjort fel :OO

Medlem sedan juni 2005264 inlägg
#6

emission skrev:

Jag är inte alls förtjust i att du använder kolumner dynamiskt på det viset

Hur menar du?

268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)