22. maj 2006 - 11:32Der er
10 kommentarer og 1 løsning
Dynamisk selects
Skal have lavet en lidt avanceret navigationsmenu, hvor man skal kunne vælge 3-4 ting, som så dynamisk skal opdateres i nogen <select> felter. Eksempel:
1. select skal man vælge "personbil", "lastbil" eller "motorcykel" 2. select skal så opdateres med bilmærker hvis man vælger personbil osv. 3. select skal så udfyldes med bilmodeller (eks. audi i 2. select og A4 i 3.select). Til sidst skal man så klikke på en GO! knap, der så søger i databasen efter de 3 <select> kriterier.
Alle disse værdier skal tages fra en database-tabel som har felterne BilType, BilMaerke og BilModel. Jeg forestiller mig at der måske skal laves et mega-array, der indeholder alle kombinationer taget fra databasen.
Men hvordan laves dette ren kode-mæssigt? (uden at hele asp-siden skal opdateres efter hvert valg)
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Du laver bare en asp-side til hver af dine selects. Som input giver du det der er valgt i de forgående selects. På asp-siden laver du så db-udtrækket, hvorefter du så f.eks. kan genrere et xml-dokument
hmmmmm har selv haft samme problem, og løste den med nedenstående.
jeg har i nedenstående lavet 6 afhængige dropdow, principet er at man laver et opslag og når man har valgt opdateres siden automatisk, på den måde blicer der ikke hentet flere data ennd der skal bruges, og samlet set så tro jeg dette må vlre den hurtigste. koden er nok lidt rodet, da jeg aldrig blev helt færdig men den virker ;-)
<!--#include file="../db.asp"--> <%
Session.LCID = 1030
'Response.Write kundenummer
%> <script language="JavaScript" type="text/JavaScript"> <!-- function surfto1(form) { var myindex=form.status1.selectedIndex if (form.status1.options[myindex].value != 0) { location=form.status1.options[myindex].value;} }
function surfto2(form) { var myindex=form.status2.selectedIndex if (form.status2.options[myindex].value != 0) { location=form.status2.options[myindex].value;} }
function surfto3(form) { var myindex=form.status3.selectedIndex if (form.status3.options[myindex].value != 0) { location=form.status3.options[myindex].value;} }
function surfto4(form) { var myindex=form.status4.selectedIndex if (form.status4.options[myindex].value != 0) { location=form.status4.options[myindex].value;} }
function surfto5(form) { var myindex=form.status5.selectedIndex if (form.status5.options[myindex].value != 0) { location=form.status5.options[myindex].value;} }
function surfto6(form) { var myindex=form.status6.selectedIndex if (form.status6.options[myindex].value != 0) { location=form.status6.options[myindex].value;} }
function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true);
<title>Toning af vare </title> <% temp_tone_id = CDbl(Request.QueryString("temp_tone_id")) if temp_tone_id > 0 then SQL_slet = "DELETE FROM temp_tone WHERE temp_tone_id=" &temp_tone_id 'Response.Write SQL_slet Conn.Execute (SQL_slet) else end if %>
If mixcust_serievar = "" or mixcust_serievar = null then SQL_serievar ="SELECT mixcust_desc,mixcust_serievar, mixcust_glans FROM mixfarve, mixcust,mixemb where mixfarve_serie =left(mixcust_serievar,4) and mixcust_serievar=mixemb_servar and mixemb_servar = mixcust_serievar and mixcust_cust ='"& kundenummer &"' group by mixcust_desc ORDER BY mixcust_serievar ASC" Conn.Execute (SQL_serievar) Set rs = conn.Execute(SQL_serievar) Do While Not rs.EOF or rs.BOF Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & rs("mixcust_serievar") & "&mixcust_glans="& rs("mixcust_glans")&"'>" & rs("mixcust_desc") & "</Option>" rs.movenext loop Response.Write "</select>" else SQL_serievar ="SELECT mixcust_desc,mixcust_serievar, mixcust_glans FROM mixfarve, mixcust,mixemb where mixfarve_serie =left(mixcust_serievar,4) and mixcust_serievar=mixemb_servar and mixemb_servar = mixcust_serievar and mixcust_cust ='"& kundenummer &"' group by mixcust_desc ORDER BY mixcust_serievar ASC"
Conn.Execute (SQL_serievar) Set rs = conn.Execute(SQL_serievar) Do While Not rs.EOF or rs.BOF if mixcust_serievar&"" = rs("mixcust_serievar")&"" and mixcust_glans&"" = rs("mixcust_glans")&""then valgt = "SELECTED" else valgt = "" end if Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & rs("mixcust_serievar") & "&mixcust_glans="& rs("mixcust_glans")&"' "&valgt&">" & rs("mixcust_desc") & "</Option>" rs.movenext loop Response.Write "</select>" end if %> </form></td>
</tr> <tr>
<td valign="top" align="right" class="txt_colur1">Vælg nuance standard : </td>
mixfarve_farvesystem= Replace(Request.QueryString("mixfarve_farvesystem"),"'","") if mixcust_serievar = "" or mixcust_serievar = null then else If mixfarve_farvesystem = "" or mixfarve_farvesystem = null then SQL_farvesystem ="SELECT DISTINCT (mixfarve_farvesystem) FROM mixfarve, mixcust where mixfarve_serie =left(mixcust_serievar,4) and mixcust_serievar = '"& mixcust_serievar &"'and mixcust_cust ='"& kundenummer &"' ORDER BY mixfarve_farvesystem ASC" Conn.Execute (SQL_farvesystem) Set rs = conn.Execute(SQL_farvesystem) Do While Not rs.EOF or rs.BOF Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem="& rs("mixfarve_farvesystem") &"'>" & rs("mixfarve_farvesystem") & "</Option>" rs.movenext loop Response.Write "</select>" else
SQL_farvesystem ="SELECT DISTINCT (mixfarve_farvesystem) FROM mixfarve, mixcust where mixfarve_serie =left(mixcust_serievar,4) and mixcust_serievar = '"& mixcust_serievar &"'and mixcust_cust ='"& kundenummer &"' ORDER BY mixfarve_farvesystem ASC" Conn.Execute (SQL_farvesystem) Set rs = conn.Execute(SQL_farvesystem) Do While Not rs.EOF or rs.BOF if mixfarve_farvesystem&"" = rs("mixfarve_farvesystem")&"" then valgt = "SELECTED" else valgt = "" end if Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem="& rs("mixfarve_farvesystem") &"' "&valgt&">" & rs("mixfarve_farvesystem") & "</Option>" rs.movenext loop
end if end if Response.Write "</select>" 'Response.Write SQL_farvesystem 'Response.end %> </form></td>
mixfarve_farvenr= Replace(Request.QueryString("mixfarve_farvenr"),"'","") if mixcust_serievar = "" or mixcust_serievar = null then else if mixfarve_farvesystem = "" or mixfarve_farvesystem = null then else
If mixfarve_farvenr = "" or mixfarve_farvenr = null then SQL_mixfarve_farvenr ="SELECT mixfarve_farvenr, mixfarve_farvebesk FROM mixfarve where mixfarve_serie = left('"& mixcust_serievar &"',4) and mixfarve_farvesystem ='"& mixfarve_farvesystem &"' ORDER BY mixfarve_farvenr ASC" 'Response.Write SQLmgn
Conn.Execute (SQL_mixfarve_farvenr) Set rs = conn.Execute(SQL_mixfarve_farvenr) Do While Not rs.EOF or rs.BOF Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr="& rs("mixfarve_farvenr") &"'>" & rs("mixfarve_farvenr") & "</Option>" rs.movenext loop Response.Write "</select>" else
SQL_mixfarve_farvenr ="SELECT mixfarve_farvenr, mixfarve_farvebesk FROM mixfarve where mixfarve_serie = left('"& mixcust_serievar &"',4) and mixfarve_farvesystem ='"& mixfarve_farvesystem &"' ORDER BY mixfarve_farvebesk ASC" Conn.Execute (SQL_mixfarve_farvenr) Set rs = conn.Execute(SQL_mixfarve_farvenr) Do While Not rs.EOF or rs.BOF if mixfarve_farvenr&"" = rs("mixfarve_farvenr")&"" then valgt = "SELECTED" else valgt = "" end if
Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr="& rs("mixfarve_farvenr") &"' "&valgt&">" & rs("mixfarve_farvenr") & "</Option>" rs.movenext loop end if end if end if Response.Write "</select>"
mixemb_embst= Replace(Request.QueryString("mixemb_embst"),"'","") if mixcust_serievar = "" or mixcust_serievar = null then else if mixfarve_farvesystem = "" or mixfarve_farvesystem = null then else If mixfarve_farvenr = "" or mixfarve_farvenr = null then else If mixemb_embst = "" or mixemb_embst = null then SQL_mixemb_embst ="SELECT DISTINCT(mixemb_embst) FROM mixemb,mixcust where mixcust_serievar = mixemb_servar AND mixemb_servar = '"& mixcust_serievar &"' ORDER BY mixemb_embst ASC"
Conn.Execute (SQL_mixemb_embst) Set rs = conn.Execute(SQL_mixemb_embst) Do While Not rs.EOF or rs.BOF Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr=" & mixfarve_farvenr & "&mixemb_embst="& rs("mixemb_embst") &"'>" & formatnumber(rs("mixemb_embst"),2) & "</Option>" rs.movenext loop Response.Write "</select>" else
SQL_mixemb_embst ="SELECT DISTINCT(mixemb_embst) FROM mixemb,mixcust where mixcust_serievar = mixemb_servar AND mixemb_servar = '"& mixcust_serievar &"' ORDER BY mixemb_embst ASC"
Conn.Execute (SQL_mixemb_embst) Set rs = conn.Execute(SQL_mixemb_embst) Do While Not rs.EOF or rs.BOF if mixemb_embst&"" = rs("mixemb_embst")&"" then valgt = "SELECTED" else valgt = "" end if Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr=" & mixfarve_farvenr & "&mixemb_embst="& rs("mixemb_embst") &"' "&valgt&">" &formatnumber(rs("mixemb_embst"),2) & "</Option>" rs.movenext loop end if end if end if end if Response.Write "</select>"
if mixcust_serievar = "" or mixcust_serievar = null then else if mixfarve_farvesystem = "" or mixfarve_farvesystem = null then else If mixfarve_farvenr = "" or mixfarve_farvenr = null then else If mixemb_embst = "" or mixemb_embst = null then else If mix_mgn = "" or mix_mgn = null then
antal_loop= (max_mgn-(max_mgn mod mixemb_embst))/mixemb_embst mixemb_embst = CDbl(mixemb_embst) mgn=mixemb_embst while antal <= antal_loop if mix_mgn&"" = mgn&"" then valgt = "SELECTED" else valgt = "" end if
Response.Write "<option value=tonevare1.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr=" & mixfarve_farvenr & "&mixemb_embst="& mixemb_embst & "&mix_mgn="&mgn&"' "&valgt&">" &formatnumber(mgn,2) & "</Option>" antal=antal+1 mgn=mgn+mixemb_embst wend end if end if end if end if end if Response.Write "</select>"
lev_dato= Replace(Request.QueryString("lev_dato"),"'","") if mixcust_serievar = "" or mixcust_serievar = null then else if mixfarve_farvesystem = "" or mixfarve_farvesystem = null then else If mixfarve_farvenr = "" or mixfarve_farvenr = null then else If mixemb_embst = "" or mixemb_embst = null then else If mix_mgn = "" or mix_mgn = null then else If lev_dato = "" or lev_dato = null then SQL_levplan ="SELECT * from levplan WHERE levplan_cust='"& kundenummer &"'" Set RS99 = Conn.Execute (SQL_levplan) levplan_cust= RS99("levplan_cust") levplan_days= RS99("levplan_days") levplan_time= RS99("levplan_time") levplan_mon = RS99("levplan_mon") Levplan_tue = RS99("Levplan_tue") levplan_wen = RS99("levplan_wen") levplan_thu = RS99("levplan_thu") levplan_fri = RS99("levplan_fri") levplan_sat = RS99("levplan_sat") levplan_sun = RS99("levplan_sun") 'START: find ud af om klokken er over max tid for ordre, hvis ja flyttes dagen med en dag if datepart("w",date()) = 7 or datepart("w",date()) = 1 then start_dag=0 else if Cdbl(Time)>Cdbl(Cdate(rs99("levplan_time"))) then start_dag=1 else start_dag=0 end if end if
SQL_wkday ="SELECT * from wkday LIMIT "& start_dag &",20" Conn.Execute (SQL_wkday) Set rs2 = conn.Execute(SQL_wkday) Do While Not rs2.EOF or rs2.BOF Response.Write "<option value=tonevare2.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr=" & mixfarve_farvenr & "&mixemb_embst="& mixemb_embst & "&mix_mgn="&mix_mgn&"&lev_dato="&rs2("wkday_date")&"'>" &rs2("wkday_date") & "</Option>" rs2.movenext loop
else
SQL_levplan ="SELECT * from levplan WHERE levplan_cust='"& kundenummer &"'" Set RS99 = Conn.Execute (SQL_levplan) levplan_cust= RS99("levplan_cust") levplan_days= RS99("levplan_days") levplan_time= RS99("levplan_time") levplan_mon = RS99("levplan_mon") Levplan_tue = RS99("Levplan_tue") levplan_wen = RS99("levplan_wen") levplan_thu = RS99("levplan_thu") levplan_fri = RS99("levplan_fri") levplan_sat = RS99("levplan_sat") levplan_sun = RS99("levplan_sun") 'START: find ud af om klokken er over max tid for ordre, hvis ja flyttes dagen med en dag if datepart("w",date()) = 7 or datepart("w",date()) = 1 then start_dag=0 else if Cdbl(Time)>Cdbl(Cdate(rs99("levplan_time"))) then start_dag=1 else start_dag=0 end if end if
SQL_wkday ="SELECT * from wkday LIMIT "& start_dag &",20" Conn.Execute (SQL_wkday) Set rs2 = conn.Execute(SQL_wkday) Do While Not rs2.EOF or rs2.BOF if lev_dato&"" = rs2("wkday_date")&"" then valgt = "SELECTED" else valgt = "" end if
Response.Write "<option value=tonevare2.asp?mixcust_serievar='" & mixcust_serievar & "&mixcust_glans="& mixcust_glans & "&mixfarve_farvesystem=" & mixfarve_farvesystem & "&mixfarve_farvenr=" & mixfarve_farvenr & "&mixemb_embst="& mixemb_embst & "&mix_mgn="&mix_mgn&"&lev_dato="&rs2("wkday_date")&"' "&valgt&">" &rs2("wkday_date") & "</Option>" rs2.movenext loop end if end if end if end if end if end if Response.Write "</select>"
%> </form></td> </tr> </table>
</div> </fieldset>
</body> </html>
<%
'**Databasen lukkes igen** conn.Close Set conn = nothing Set SQLvare = nothing Set SQLlot = nothing Set SQLmgn = nothing %>
Hehe - meningen med det hele var egentlig også at hele siden ikke skulle opdateres efter hvert valg. Ikke fordi siden er speciel tung, men for brugervenlighedens skyld.
jeg tror nu ikke at brugeren kan se den store forskel på om du laver det hele uden at lave opdateringer eller ej, faktisk så tror jeg at brugeren vil opleve en mit forslag som det bedste :-)
Nå jeg fandt en alternativ løsning på situationen - ved at bruge Chained Selects scriptet på dynamicdrive.com og maile lidt frem og tilbage med forfatteren af scriptet for at få det tilpasset lidt. Ellers takker for løsningsforslagene men jeg kunne desværre ikke rigtig bruge det :/
Synes godt om
Ny brugerNybegynder
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.