/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Avanceret SQL/ASP dropdown problem
Fra : Chr. Forrestal


Dato : 04-10-01 08:50

Jeg har et ASP dropdown problem som jeg ikke kan se løsningen på.

Jeg har et ASP site hvor, når man indtaster data kan man vælge
data fra dropdowns, f.eks. land og køn etc. Disse hentes fra
databasen og det er der ikke nogle problemer i.

Problemet opstår på mine update sider. Når man f.eks. skal
opdatere disse data vil jeg gerne ha at den i dropdownen skal
vise de data der tidligere blev valgt, men samtidigt skal der i
samme dropdown være muligt at vælge de andre lande.

Dvs. at hvis man, da man oprettede siden, valgte "Danmark" fra en
lande liste, skal Danmark være valgt i dropdown'en når man går
ind på update siden, men det skal være muligt at ersattet dette
valg med f.eks. Tyskland.

Sitet kører på en SQL 7.0

Håber at problemet er tydeligt og at nogen har nogle forslag.

Med venlig hilsen
Chr. Forrestal
(fjern ekstra .dk i mail adresse ved direkte svar)




--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jesper Stocholm (04-10-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 04-10-01 09:19

Chr. Forrestal wrote in news:9ph4ad$dt1$1@sunsite.dk:

> Jeg har et ASP dropdown problem som jeg ikke kan se løsningen på.
>
> Jeg har et ASP site hvor, når man indtaster data kan man vælge
> data fra dropdowns, f.eks. land og køn etc. Disse hentes fra
> databasen og det er der ikke nogle problemer i.
>
> Problemet opstår på mine update sider. Når man f.eks. skal
> opdatere disse data vil jeg gerne ha at den i dropdownen skal
> vise de data der tidligere blev valgt, men samtidigt skal der i
> samme dropdown være muligt at vælge de andre lande.
>
> Dvs. at hvis man, da man oprettede siden, valgte "Danmark" fra en
> lande liste, skal Danmark være valgt i dropdown'en når man går
> ind på update siden, men det skal være muligt at ersattet dette
> valg med f.eks. Tyskland.
>
> Sitet kører på en SQL 7.0
>

Du kan vælge at lave det på (mindst) to måder - én uden SQL og én med.

1.
På den side, hvor du indsætter data i din tabel kan du også lægge dine data
i session-variable. Når du så henter data fra din server, så checker du
sideløbende, om sessionvariablen er sat - og så "gør du noget".

fx:

på Update-siden:

strCountry = request.form("country)
strSQL = "INSERT INTO Table1 (country) VALUES (' & strCountry & "')"
session("country") = strCountry

På display-siden:

<%
strSQL = "SELECT Country FROM CountryTable"
set rs = obj.execute(strSQL)
<select name="country">
<% do while not rs.EOF %>
<option <% if rs("Country") = session("country") then response.write "
selected " end if %>><% = rs("Country") %></option>
<% rs.Movenext
loop
%>
<option
</select>

Du kan også lave det med SQL på serveren. Idéen her er, at du, i stedet for
en enkelt kolonne med landene i, tilføjer endnu en kolonne, der indikerer,
om landet er valgt for den enkelte bruger.

Du har altså to (tre) SELECT-statements

1.
SELECT Country FROM CountryTable
2.
SELECT Country FROM Memberdetail where userID = <something>

Disse kombinerer du så i en LEFT OUTER JOIN:

3.
SELECT
a.Country as aCountry,b.Country as bCountry
FROM
CountryTable a
LEFT OUTER JOIN
(SELECT Country FROM Memberdetail where userID = <something>) b
ON a.Country = b.Country order by a.Country ASC"


Du vil så følgende tabel ud af det

aCountry | bCountry
-------------------
Andorra NULL
Belgium NULL
China China
Denmark NULL

.... hvis China er valgt som land.

Dette recordset bruger du så til at skrive indhold i din dropdown-boks, hvor
du ikke skriver noget, hvis bCountry er NULL ... og ellers skriver du "
selected " i OPTION-tagget, hvis det ikke er NULL.

--
Er du også irriteret over, at din lokale grønthandler ikke slår dine varer
ind på kasseapperatet - og dermed undrager sig moms ? Så bed om en bon.

- Jesper Stocholm - http://stocholm.dk

sasa (06-10-2001)
Kommentar
Fra : sasa


Dato : 06-10-01 12:42

Og en endnu nemmer løsning, helt frit fra leveren. Hvis du ikke fanger
ideen, så fang mig på icq 2471701

Kort fortalt.
du har to recordsset. Lande og dine andre oplysninger
Efter hånden som du putter dine lande ind i dropdownboksen, kontroller du
landet, med den værdi der stå i dit andet recordsset. Hvis de passer sammen,
sætter du en selected i dropdownboksen, og det vil så være den valgte. Hvis
der ikke er valgt noget, vil der derimod kommen en tekst frem om, at der
skal vælges fra listen. Nemmer kan det ikke være

'Læg data i dropdownboks
do while not rscdantal.eof
Response.Write ("<option value=" & "'" & rscdantal ("cdantal") &
"'")
if session ("retdata")=1 and cdantal = rscdantal ("cdantal") then
Response.Write (" selected>")
setsel = true
else
Response.Write (">")
end if
Response.write (rscdantal("cdnavn") & "</option>")
rscdantal.movenext
loop
if not setsel = true then Response.Write ("<option selected>Vælg fra
listen</option>")




Jesper Stocholm (06-10-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 06-10-01 12:42

sasa wrote in news:9pmplb$2ak9$1@news.cybercity.dk:

> Og en endnu nemmer løsning, helt frit fra leveren. Hvis du ikke fanger
> ideen, så fang mig på icq 2471701
>
> Kort fortalt.
> du har to recordsset. Lande og dine andre oplysninger
> Efter hånden som du putter dine lande ind i dropdownboksen, kontroller
> du landet, med den værdi der stå i dit andet recordsset. Hvis de passer
> sammen, sætter du en selected i dropdownboksen, og det vil så være den
> valgte. Hvis der ikke er valgt noget, vil der derimod kommen en tekst
> frem om, at der skal vælges fra listen. Nemmer kan det ikke være
>

Stemmer din kode overens med det du skriver herover ? Jeg kan ikke
umiddelbart se anvendelse af to recordsets - som jeg læser det, så har du ét
recordset (rscdantal) og en værdi (cdantal), som du sammenligner med, når du
skriver indholdet i dropdown-menuen. [1]

Derved er det vel svarende til mit første bud på en løsning (selvom jeg ikke
gav kode med til implementeringen).

[1] Forbehold for fejllæsning pga tømmermænd ... :)

--
Jesper Stocholm
http://stocholm.dk
ICQ: 13214885
MSN Messenger: jesperstocholm at hotmail dot com

Allan Bach (06-10-2001)
Kommentar
Fra : Allan Bach


Dato : 06-10-01 21:39

Det er rigtig læst, og en smutter fra min side (og dog). Det ændre ikke ved
eksemplet, da variablen cdantal uden det store besvær kan byttes ud med et
recordset. Jeg nuppet bare en kopi af noget jeg havde lavet tidligere, og
var ikke lige opmærksom på at jeg havde brugt en variable.

Allan Bach



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste