21. januar 2004 - 23:47Der er
16 kommentarer og 2 løsninger
autosubmit søgekreterier ved sideload
En kort beskrivelse af siden: Jeg har en ASP side som modtager forvalgte søgekreterier fra foregående side. eks: (dbq.asp?idn=590&fx=Nokia&mx=3100&tx=alle) Hvor idn= er kundenummeret. søgeresultatet hentes i ACCES databasen ud fra de forvalgte kreterier og indsættes i en tabel.
Problemstillingen: Siden er oprindeligt en søgeside efter rullegardin princippet: vælg, vælg, vælg og klik på SØG.
Det jeg gerne vil have den til er at vise de tilsendte søge resultater når siden åbner uden først at skulle klikke SØG (submit). Søgeknappen ser sådan her ud:
Det jeg gerne vil have den til er at vise de data når siden åbner uden at skulle klikke søg først.
siden modtager nogle data i en link ved at brugeren klikker på et billede. I ovenstående tilfælde modtager den Nokia & 3100 & Alle. Ved "submit" henter siden de data som hører under Nokia & 3100 & Alle fra databasen og viser dem i en tabel. Som siden virker nu skal jeg altså først klikke på "søg" (submit) for at få vist de gældende data.
Der sker ikke noget når jeg ligger <select onchange="this.form.submit();"> ind.
<script language="javascript"> <!-- function antal(x,y,z,q) { koeb=window.open ('antl.asp?x=' + x + '&y=' + y + '&z=' + z + '&q=' + q,'','width=300,height=120,toolbar=no,scrollbars=no menubar=no location=no status=no directories=no'); koeb.moveTo(300,300); }
function subm() { document.f.model.value="" document.f.type.value="" document.f.submit() }
//--> </script>
</head>
<body>
<!-- HENTER ORDRENUMMER //-->
<% dim ord2, ordnr ord2=request.querystring("idn")
ordnr=request.form ("ord1") if ord2="" then ord2=ordnr end if
dim fab, fabri, fab2, fab3, fabrikat
<!-- HENTER FABRIKATNAVN INDTAST ØNSKEDE FABRIKATNAVN I FAB2= //-->
fabri="SELECT fabrikater.fabrikatnavn FROM fabrikater ORDER BY fabrikater.fabrikatnavn;" set fab=server.createobject("adodb.recordset") fab.open fabri, conn fab2=request.form("fabrikatnavn") fabrikat=request.querystring("fx") if fabrikat <> "" then fab2=request.querystring("fx") elseif fab2 = "" then fab2="Alle"
<!-- FABRIKATNAVN. UDFYLD EVT FLERVALG som <option>Alle</option> over do while not linjen //--> <option><% response.write (fab2)%></option> <% do while not fab.eof %>
<% fab.movenext loop fab.close %> </select>
</td> <td align="left" valign="top" bordercolor="#FFFFFF"> <p align="left"> <select name="model" > <!-- MODEL VALG UDFYLD ØNSKEDE MODEL I LINJE if fab3 = "" then fab3="G-SHOCK" (EKS MED NAVNET G-SHOCK) //--> <% dim md, mode, fab4, modelnavn set md=server.createobject("adodb.recordset") modelnavn=request.querystring("mx") fab3=request.form("model") if modelnavn <> "" then fab3=request.querystring("mx") elseif fab3 = "" then fab3 = "Alle" end if
if fab2="Alle" then mode="SELECT fabrikater.fabrikatnavn, modeller.model FROM fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr ORDER BY fabrikater.fabrikatnavn, modeller.model;" else mode="SELECT modeller.model, fabrikater.fabrikatnavn FROM fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr WHERE (((fabrikater.fabrikatnavn)='"& fab2 &"')) ORDER BY modeller.model;" end if
md.open mode, conn%> <option><% response.write (fab3)%></option> <option>Alle</option> <%do while not md.eof %> <option><% response.write md("model")%></option> <% md.movenext loop md.close %> <!-- OPRETTER TYPE VALG HER HENTER DEN IKKE FRA DATABASEN MEN TAGER KUN DE UDFYLDTE FELTER. EKS <option>Alle</option>//--> <% typenavn=request.querystring("tx") fab4=request.form("type") if typenavn <> "" then fab4=request.querystring("tx") elseif fab4 = "" then fab4="Alle" end if %> </select> </p> </td> <td valign="top" bordercolor="#FFFFFF" align="left"><select name="type" > <option><% response.write (fab4)%></option>
<!-- OPRET FLERE TYPE VALG HER UNDER. UDFYLD FLERE FELTER. EKS <option>anden type</option> //--> <option>Alle</option>
<!-- HER HENTER DEN DE VALGTE DATA FRA DATABASEN //--> <% dim drs, dsql, fa, mo, ty fa=request.form("fabrikatnavn") mo=request.form("model") ty=request.form("type")
<!-- HER STILLES SØGEKRETERIERNE //-->
set drs=server.createobject("adodb.recordset") if fa = "Alle" and mo = "Alle" and ty = "Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr ORDER BY fabrikater.fabrikatnavn ;" elseif fa <> "Alle" and mo = "Alle" and ty ="Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((fabrikater.fabrikatnavn)='"& fa &"'));" elseif fa="Alle" and mo <> "Alle" and ty="Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((modeller.model)='"& mo &"'));" elseif fa <> "Alle" and mo <> "Alle" and ty="Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((fabrikater.fabrikatnavn)='"& fa &"') AND ((modeller.model)='"& mo &"'));" elseif fa="Alle" and mo="Alle" and ty <> "Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((type.type)='"& ty &"')) ORDER BY fabrikater.fabrikatnavn;" elseif fa="Alle" and mo <> "Alle" and ty <> "Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((modeller.model)='"& mo &"') AND ((type.type)='"& ty &"'));" elseif fa <> "Alle" and mo="Alle" and ty <> "Alle" then dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((fabrikater.fabrikatnavn)='"& fa &"') AND ((type.type)='"& ty &"')) ORDER BY modeller.model;" else dsql="SELECT fabrikater.fabrikatnavn, modeller.model, type.type, produkter.beskrivelse,produkter.link, produkter.pris, produkter.varenummer, [pris]*1.25 AS [Pris incl moms] FROM type INNER JOIN (producenter INNER JOIN (((fabrikater INNER JOIN modeller ON fabrikater.fabrikatnr = modeller.fabrikatnr) INNER JOIN produkter ON fabrikater.fabrikatnr = produkter.fabrikatnr) INNER JOIN varenr_modeller ON (produkter.varenummer = varenr_modeller.varenummer) AND (modeller.modelnr = varenr_modeller.modelnr)) ON producenter.producent = produkter.producent) ON type.typenr = produkter.typenr WHERE (((fabrikater.fabrikatnavn)='"& fa &"') AND ((modeller.model)='"& mo &"') AND ((type.type)='"& ty &"'));" end if
Der er lykkedes mig at få siden til at submitte med: <body onload="subm2()"> og et tilhørende java script: <!-- function subm2() { document.f.submit() } //--> Men da siden reloader ved submit går den i loop så den bilver ved med at submitte. der er stadig point til den der kan få den til kun at submitte en gang.
Synes godt om
Slettet bruger
27. januar 2004 - 23:42#6
i din form kan du lave en ekstra input:
<input type='hidden' name='reload' value='false'>
den input, kan du så bruge til at tjekke, om den skal submitte igen..
<%
response.write "<body" if request.form("reload")<>"false" then response.write "onload='document.f.submit();'" end if response.write ">"
Jeg kan ikke få det til at virke. Jeg er heller ikke helt med på hvor jeg skal placere de to. Som jeg forstår det skal jeg 1) droppe mit function subm2() java. 2)indsætte: <input type='hidden' name='reload' value='false'> i søgeknappens form under eller over <input type="submit" name="soeg" value="Søg"> 3) udskifte sidens <body> med scriptet:
<%
response.write "<body" if request.form("reload")<>"false" then response.write "onload='document.f.submit();'" end if response.write ">"
%> Men hvis jeg gør det submitter siden ikke og der er ingen body før jeg har submittet manuelt på submitknappen.
Synes godt om
Slettet bruger
28. januar 2004 - 22:24#8
udskrives der ikke <body onload='document.f.submit();'>??
tilsyneladende ikke. Det der sker når jeg indsætter: <%
response.write "<body" if request.form("reload")<>"false" then response.write "onload='document.f.submit();'" end if response.write ">"
%> i stedet for den nuværende <body> er at sidens java menubar bliver vist som broken link og siden reloader ikke. Det må betyde at siden mangler en <body>
Når jeg så klikker på submit knappen reloader siden og menubaren virker.
Jeg forstår det som at <input type='hidden' name='reload' value='false'> først aktiverer scriptet ved manuel submit og ikke ved body onload.
Jeg tænker Response til Hvad? i response.write "<body"
Nu virker det! Jeg fandt fejlen. Det var bare et mellemrum der manglede i "<body" og så skulle semikolon væk fra onload='document.f.submit();'" sådan skal det se ud: <% response.write "<body " if request.form("reload")<> "false" then response.write " onload='document.f.submit()'" end if response.write ">" %>
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.