08. januar 2001 - 21:56Der er
16 kommentarer og 1 løsning
Vise data på anden måde end det står i DB\'en?
Bag denne kryptiske overskrift gemmer der sig en (forhåbentlig) ret simpel problemstilling:
Jeg har en database med kolonnen \"amt\". Brugeren kan vælge op til flere amter i en <SELECT MULTIPLE>, og de skrives som fx. \"Vestsjaelland, Soenderjylland, Sydsjaelland\" osv. i kolonnen \"amt\".
Nu vil jeg gerne vise alle de valgt amter, og det er der jo ingen ben i, men det virker ikke særlig smart at der skrives \"Vestsjaelland\" når der bør stå \"Vestsjælland\".
Så spørgsmålet er, hvordan deler jeg amterne op enkeltvis og så erstatter fx \"vestsjaelland\" med \"vestsjælland\"?
Og nej, jeg kan ikke _bare_ bruge \"replace\", for hvad så med \"aa\", så kommer \"Aalborg\" jo til at hedde \"Ålborg\", og det vil de nok ikke være så glade for.
Da jeg ikke har lavet de andre 1000+ sider, men kun er blevet spurgt ang. design af den ene side hvor resultatet skal vises, er det ikke muligt at lave databasen (og poster deri) på en anden måde. Desværre
Det er en lidt speciel opdeling, mere præsist ville nok være \"områder\", \"amt\" er inddelt i forsk. områder, fx. \"Aalborg\", \"Aarhus\" \"Esbjerg\", \"Fyn\", \"Vestsjaelland\" osv.
<% while not rs.eof if rs(\"amt\") = \"Vestsjaelland\" then response.write \"Vestsjælland\" else if rs(\"amt\")=\"Sydsjaelland\" then response.write \"Sydsjælland\" else response.write rs(\"amt\" end if rs.movenext wend %> gør det godt nok lidt langsommere, men det virker. :-)
<% while not rs.eof amt=rs(\"amt\") amt=split(amt, \",\") for i = 0 to ubound(amt) if amt(i) = \"Vestsjaelland\" then response.write \"Vestsjælland\" elseif amt(i)=\"Sydsjaelland\" then response.write \"Sydsjælland\" else response.write amt(i) end if next %>
Det er helt sikker noget af det rigtige, men jeg har lidt problemer med koden efter jeg har tilpasset den til siden:
<% amt = split(rs(\"amt\"), \",\", -1, 1) for i = lbound(amt) to ubound(amt) if i=lbound(amt) Then if amt(i) = \"Storkobenhavn\" then response.write \", Storkøbenhavn\" End If If amt(i)=\"Frederiksborg\" then response.write \", Frederiksborg Amt\" End If If amt(i)=\"Roskilde\" then response.write \", Roskilde Amt\" End If
(og så videre)
Else End If next %>
Problemet er at den kun viser det første amt, dvs. hvis brugeren har valgt Storkobenhavn og Frederiksborg, vises kun Storkobenhavn.
<% amt = split(rs(\"amt\"), \",\", -1, 1) for i = lbound(amt) to ubound(amt) if amt(i) = \"Storkobenhavn\" then response.write \", Storkøbenhavn\" elseIf amt(i)=\"Frederiksborg\" then response.write \", Frederiksborg Amt\" elseIf amt(i)=\"Roskilde\" then response.write \", Roskilde Amt\" elseif
(og her har du så alle dine betingelser på samme måde som ovenfor)
elseIf response.write amt(i) End If next response.write \"<br>\" (eller response.write \"</option>\" hvis det er en select du er igang med) rs.movenext %> Din \'if i=lbound(amt) Then\' gør at det kun er første post i arryet der bliver chekket, det er jo kun der at i = 0 som lbound(amt) altid er.
Hvis jeg var dig, ville jeg ikke gøre noget ved det her problem. Det er det som man vil sige er mindre vigtigt end så meget andet, og du kan jo bare sige til din chef/kunden at det ikke kan laves bedre pga. deres databaser. Det ville det fleste nok acceptere.
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.