11. maj 2002 - 19:58Der er
40 kommentarer og 1 løsning
Scripts fejler på PWS
Jeg har en samling scripts som henter data fra en db. Det fungerer fint på min udbyders webserver, men når jeg kører de samme scrips på min bærbare pc over PWS, så laver den fejl. Fejlen forekommer på de scripts, som har en Response.Redirect. Fejlmeldingen ser sådan ud
Response-objekt fejl 'ASP 0156 : 80004005'
Headerfejl
/bilerpaavestfyn/login2.asp, linje 33
HTTP-headerne skrives allerede til klientbrowseren. Ændringer af HTTP-headers skal foretages, inden sideindholdet skrives.
Fejlen forekommer bl.a. på dette script.
<% ' bruges til at tjekke om brugeren finde i db ved login ' Sender resultaterne fra tilføj links til databasen ' Database connection ' ADODB connection objektet Set Conn = Server.CreateObject("ADODB.Connection") ' Husk at angive den rigtige sti til din database DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/bilerpaavestfyn/riishojwebsoft.mdb") ' Åben databaseforbindelsen Conn.Open DSN
strUsername = Trim(Replace(Request.Form("username"),"'","")) strPassword = Trim(Replace(Request.Form("password"),"'","")) strSQL ="SELECT * FROM login WHERE UCase(username) = '" & UCase(strUsername) & "' AND UCase(Password) = '" & UCase(strPassword) & "'" set rs = Conn.execute(strSQL) if not rs.EOF then response.write rs("username") end if 'først tjekke om brugeren findes ved at tjekke om recordsetet er tomt. if not rs.EOF then if LCase(rs("username")) = LCase(strUsername) then 'LOGIN OK session("brugernavn") = LCase(strUsername) session("brugerID") = rs("Id") Response.Redirect("index2.asp") else 'INGEN BRUGER FUNDET 'Eller en blev fundet men databasen bruger navn passer ikke med det 'indtastede brugernavn end if else 'brugeren ikke fundet lave det som skal ske hvis brugeren ikke er fundet her response.write "Forkert password eller brugernavn, prøv igen." end if Conn.Close Set Conn = Nothing
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg ville nok nærmere spørge hvorfor virker det hos din udbyder...
Du har denne før du redirecter til siden: if not rs.EOF then response.write rs("username") '<--- En response.write skriver HTML kode til browseren. end if
Normalt kan man kun redirete hvis der ikke er skrevet HTML kode til browseren.
Men prøv at sætte denne lini i toppe af din fil: <% response.buffer = true
:) det muligt at i nyer version af PWS eller nok nærmere MS-IIS, som din udbyder sikkert benytter, at man kan redirecte selvom der er skrevet til browseren med Response.write.
Tak, eagleeye. Nu virker det. Når jeg nu alligevel har dig online, kan du så ikke fortælle mig, hvordan jeg laver et link til en url på en af kolonnerne i min db-tabel. F.eks. kunne jeg tænke mig, at man i kolonnen "forhandler" kunne have et link til dennes website.
Ja du kan kalde den kolonnen link: Du kan lave det hvor link brugrs til bare linket og teksten til linket: <a href="<%=rs("link")%>"><%=rs("link")%></a>
Hvis du har en kolonne med forhandlerNavn kunne det være: <a href="<%=rs("link")%>"><%=rs("forhandlerNavn")%></a>
Jeg er jo ikke sø knøvs til det her så jeg er nødt til at spørge
Vil det sige, at jeg opretter en kolonne i min db-tabel og kalder den f.eks. for link. I denne skriver jeg så de forskellige url'er som hører til de forskellige forhandlere i samme tabel. Jeg har en SQL som henter tabellen. Den ser sådan ud
strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , Forhandler FROM biler WHERE" strSQL = strSQL & " (Bilmaerke LIKE '%" & strBilmaerke & "%')" strSQL = strSQL & " AND (Model LIKE '%" & strModel & "%')" strSQL = strSQL & " AND (Aargang LIKE '%" & strAargang & "%')" strSQL = strSQL & " AND (Km BETWEEN " & strKm & ")" strSQL = strSQL & " AND (Pris BETWEEN " & strPris & ")" strSQL = strSQL & " AND (Forhandler LIKE '%" & strForhandler & "%') ORDER BY Bilmaerke, Model"
Arh så når man søger på en bil skriver den forhandler navnet ud og der vil du gerna havde et linkt til forhandleren?
Den SQL vælger biler ud. kolonne bør/skal så tilføjes i for tabellen.
Så må du lave en ekxtra SQL sætning som hendter linket:
Så skal der tilføjes en SQL som hendter linket.
strSQL = "SELEC link FROM for WHERE navn '=" & rs("Forhandler") & "'" set linkRs = conn.execute(strSQL) if linkRs.EOF then Response.Write "<td>" & rs("Forhandler") & "</td></tr>" else Response.Write "<td><a href=""" & linkRs("link") & """>" & rs("Forhandler") & "</a></td></tr>" end if
De tager også højde for hvis der ikke er angivet et link.
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , Forhandler FROM biler WHERE" strSQL = strSQL & " (Bilmaerke LIKE '%" & strBilmaerke & "%')" strSQL = strSQL & " AND (Model LIKE '%" & strModel & "%')" strSQL = strSQL & " AND (Aargang LIKE '%" & strAargang & "%')" strSQL = strSQL & " AND (Km BETWEEN " & strKm & ")" strSQL = strSQL & " AND (Pris BETWEEN " & strPris & ")" strSQL = strSQL & " AND (Forhandler LIKE '%" & strForhandler & "%') ORDER BY Bilmaerke, Model"
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen Response.Write "<h4 align=center><font face=Verdana>Her er resultatet af din søgning</font></h4><hr><br>" Response.Write "<table border=0>"
rs.MoveNext Loop Response.Write "</table>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If
' Rydder op efter os myConn.Close Set myConn = Nothing %>
Skiftes ud med: 'Find link til forhanleren... strSQL = "SELEC link FROM for WHERE navn '=" & rs("Forhandler") & "'" set linkRs = myConn.execute(strSQL) if linkRs.EOF then Response.Write "<td>" & rs("Forhandler") & "</td></tr>" else Response.Write "<td><a href=""" & linkRs("link") & """>" & rs("Forhandler") & "</a></td></tr>" end if
----
Er det for.navn som indeholder det samme som biler.forhandler ??
Sorry. Forstår det stadig ikke. Jeg har nu gjort følgende. Tilføjet en kolonne i tabellen "for" og kaldet den link. Ud for en af forhandlerne har jeg skrevet en url. Dernæst uploaded db'en til serveren. Desuden har jeg indsat det du skriver ovenover i min søgefil kaldet search5.asp. Når jeg kører forespørgslen fra search5.htm for jeg udskrevet hele tabellen "biler" ganske som før, dvs. der er intet link på forhandleren.
Du kan også ligge linket i biler så får du et link til forhandleren til hver Bil, det kan også være en fordel hvis man vil linke direkte til bilen hos forhandleren.
Den er helt gal. Jeg tror desværre, at jeg har fået mit gamle problem tilbage, nemlig at jeg ikke kan opdatere databasen på serveren. Når jeg går ind med ftp og kigger i db'en på serveren, så kan jeg ikke se den kolonne "link" som jeg har tilføjet. Så tror da pokker, at det ikke virker. Har haft det problem før. Skal derfor have en alvor snak med min udbyder. Jeg vil afprøve dine forslag på min bærbare med PSW og se om det virker der. Stopper for i dag, men skal nok komme tilbage i morgen og fortælle om det virkede. Håber så at du kigger forbi!
Min db er ok og jeg har næsten også fået det til at virke. Du manglede et T i SELECT i den ene SQL. Nå, det var en detalje. Problemet er nu at ganske vist er der link på forhandler når tabellen udskrives, men det ser mærkeligt ud og det virker ikke. Eksempelvis kan et link se sådan ud når jeg peger på det:
Jeg har løst en del af problemet. Huskede lige pludselig at tidligere svar ang. link og Access db. Problemet er at når man skriver en url i et felt, så sætter Access automatisk feltet til typen hyperlink og laver så de her #rundt om#. Hvorfor ved jeg ikke! Man skal ændre feltet til typen tekst, så forsvinder de og så virker linket! Men de steder feltet er tomt, altså hvor jeg ikke har angivet en url, der fremkommer url på min webserver, og det er jo ikke så smart. Hvordan undgår jeg det?
# bruges normalt til at angive der kommer bogmærke efter, og foran et link til en html/asp fil. Hvis der ikke er noglet link tager den højst sansynligt den fil din er i eller roden på web serveren.
Ellers kan du prøve denne: if (linkRs.EOF) AND (linkRs("link") = "") then
Dit sidste forslag giver heller ingen ændring. Jeg er sluppet af med #. De tomme felter viser ikke noget med #, men http://www.minwebserver.search5.asp
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.