webForumDet fria alternativet

Kod fel....

ASP

11 svar · 212 visningar · startad av cgi

Medlem sedan jan. 2000371 inlägg
Frågan#1

När jag använder mig denna kod så får jag upp att ett fel ligger rad 26,
men vad är det som är fel?
är något jag glömt eller.

<%@ LANGUAGE="VBScript" %>

<!--#include file="adovbs.inc"-->
<!--#include file="iasutil.asp"-->
<%
namn = Replace(Session("namn"), "'", "''") 
epost = Replace(Session("epost"), "'", "''") 
telefon = Replace(Session("telefon"), "'", "''") 
ort = Replace(Session("ort"), "'", "''") 
typ = Replace(Session("typ"), "'", "''") 
detete = Replace(Session("Delete"), "'", "'")
password = Replace(Session("Password"), "'", "'")
Kat_Id = Session("Kat_Id") 
rubrik = Replace(Session("rubrik"), "'", "''") 
pris = Replace(Session("pris"), "'", "''") 
beskrivning = Replace(Session("beskrivning"), "'", "''") 

	Set Databas = Server.CreateObject("ADODB.Connection") 'Skapar kopplings objektet
        MdbFilePath = Server.MapPath("radannons.mdb") 'Specifierar sökvägen till databasen
        Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" 'Öppnar databasen

	SQLStmt = "INSERT INTO Annonser (namn, epost, telefon, ort, typ, kategori_id, rubrik, pris, beskrivning, delete, password) "
	SQLStmt = SQLStmt & "VALUES('" & namn & "', '" & epost & "', '" & telefon & "', '" & ort & "', '" & typ & "', " & Kat_Id & ", '" & rubrik & "', '" & pris & "', '" & beskrivning & "') "       
        databas.Execute(SQLStmt)

       

	
%>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>

<head>

<title>-Registrera annons-</title>
</head>

<table border="0" width="600">
  <tr>
    
    <td valign="top"><p align="center"><big><big><big><big>Tack för din annons.!</big></big></big></big></p>
    <p align="center"><a href="index.asp"><big>Klicka här för att gå till
    huvudsidan.</big><br>
    </a></p>
    <p align="center"> </p>
    <p> </p>
    <p> </td>
  </tr>
</table>
</body>
</html>

[Redigerat av cgi den 04 jun 2000]

Medlem sedan mars 20002 836 inlägg
#2

Hello,

vilken är rad 26 och vilken typ av fel får du?

Posta gärna felmeddelandet,

cul8er
//PatrikB

Medlem sedan mars 20007 896 inlägg
#3

Är felmeddelandet på INSERT INTO-uttrycket? Då kan det bero på att du inte lägger in någon information till fälten delete och password... Jag tror att det inte går att lämna fält i en databas tomma...

------------------
SPiN, bjowik99@it-gymnasiet.nu

Medlem sedan mars 20001 266 inlägg
#4

Testa att byta ut:

SQLStmt = "INSERT INTO Annonser (namn, epost, telefon, ort, typ, kategori_id, rubrik, pris, beskrivning, delete, password) "

mot:
SQLStmt = "INSERT INTO Annonser "
SQLStmt = SQLStmt & "(namn, epost, telefon, ort, typ, kategori_id, rubrik, pris, beskrivning, delete, password,) "

Har ej testat, men den koden jag klippte in fungerar i mina Insert kopplingar.

Hoppas det fungerar
Andreas

Medlem sedan jan. 2000371 inlägg
#5

Tack AG nu funkar det perfekt ;) , du kanske kan ta dig en titt på denna kod också, får upp felet:

Expected ')'

/cgi-bin/Annons/annons.asp, line 60

If Request.Form("<%=rs("Password")

har laggt till så att när användaren skriver in ett lösenord så raderas annonsen, men det funkar inte så bra, du kanske har någon bättre lösning på problemet.
Här kommer koden:

<%@ LANGUAGE="VBScript" %>
<!--#include file="adovbs.inc"-->
<%
	id = Request("id") 

	Set Databas = Server.CreateObject("ADODB.Connection") 'Skapar kopplings objektet
        MdbFilePath = Server.MapPath("radannons.mdb") 'Specifierar sökvägen till databasen
        Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" 'Öppnar databasen

	SQLStmt = "SELECT *, Format$([datum],'yyyy/mm/dd') AS formdatum "
	SQLStmt = SQLStmt & "FROM Annonser, Kategorier "
	SQLStmt = SQLStmt & "WHERE Annonser.Kategori_id=Kategorier.Kat_Id "
        SQLStmt = SQLStmt & "FROM Delete, Password "
	SQLStmt = SQLStmt & "AND Annonser.Id=" & id & " "
        Set RS = databas.Execute(SQLStmt)
        

%>

<HTML>
<HEAD>
<TITLE>-Läs annonns-</TITLE>
<style type="text/css">
<!--
input {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt}
-->
</style>
</HEAD>

<%
	CurrentRecord = 0

	Do while NOT RS.EOF

%> 

<BODY BGCOLOR="#FFFFFF">
<TABLE WIDTH="532"><TR><TD WIDTH="10">&nbsp;</TD><TD WIDTH="522">
<center>
<TABLE BORDER=0 cellpadding="4" WIDTH="520"><tr><td height="250" valign="top">
<font size="4"><B><%=rs("Rubrik")%></B></font><br><br>
<font size="2">

Annonsen skriven av <a href="mailto:<%=rs("Epost")%>"><%=("Namn")%></a> den <%=rs("Datum")%>.<br>
<br>

<B>Beskrivning:</B><br>
<%=rs("Beskrivning")%>
<br>
<br>
<B>Telefon:</B> <%=rs("Telefon")%>  

<%
If Request.Form("<%=rs("Password")%>") = "<%=rs("Password")%>" Then
Responce.Redirect "raderad.asp"
Else
%>
<%
If Request.Form("<%=rs("Password")%>") = "" Then
%>
Fel lösenord!
<%
Else
%>
Fel lösenord!
<%
End If
%>

<%
  Rs.Delete  
  RS.MoveNext
  CurrentRecord = CurrentRecord + 1
  Loop
%>    

<form action="annons.asp?ID=<%=rs("id")%>" method="POST">
<TR>
                    <TH width="77"> 
                      <div align="left">Lösenord:</div>
                    </th>
                    <td width="165"> 
                      <input type="Password" name="Password"></td>
                    <td align="center" width="270"> 
                      <div align="left">
                        <input type="submit" value="Radera">
                      </div>
                    </td></tr>
<input type="hidden" name="id" value="<%=rs("id")%>">
<%
End IF
%>

<BR>
              <BR>
              

              <!-- tills hit --><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#999999"></font><font color="#999999"> 
              </font> </td>
          </tr>

               
              
<%		RS.MoveNext
		CurrentRecord = CurrentRecord + 1
	Loop
%>    

</center>
</table></TD><TD WIDTH="30">&nbsp;</TD></TR></TABLE>
</body>
</html>
Medlem sedan dec. 19996 721 inlägg
#6

cgi, i ASP används <% och %> för att skilja ASP-kod från HTML. <%= används för att snabbt trycka ut ett värde från ASP:n till sidan.

Att skriva:

If Request.Form("<%=rs("Password")%>") = "<%=rs("Password")%>" Then

är alltså helt fel. Det ska vara

If Request.Form(rs("Password")) = rs("Password") Then

...men det är en väldigt lustig kodsnutt.

Du menar antagligen...

If Request.Form("Password") = rs("Password") Then

En annan grej...

Else
%>
<%
If

Onödigt att hoppa ur ASP:n med %> för att direkt hoppa in igen med <%. Sådant tar processorkraft.

Dessutom kan man inte köra en response.redirect mitt i sidan, om man inte lagt till <%response.buffer=true%> i början.

Hör av dig när det börjar ordna upp sig.

mvh

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

[Redigerat av emission den 05 jun 2000]

Medlem sedan dec. 19998 577 inlägg
#7

Gunnar, du måste väl ändå mena att man måste lägga till <%response.buffer=true%> längst upp, då du måste buffra hela koden så att den vet att det finns en Redirect i sidan, annars skickas det en massa till klienten och så ooops kommer det en redirect, och då går det inte att ändra i HTTP'n från serversidan...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se

Medlem sedan dec. 19996 721 inlägg
#8

Självklart. Jag ska inte svara på inlägg vid den tiden på natten. Jag ändrar så att det står rätt.

Tack Vide.

Medlem sedan dec. 19991 749 inlägg
#9

Hmm.. är det inte också så att Delete och Password är reserverade ord? För ibland kan det vara så. För mig så hade jag ett jäkla problem med en fält som hette "Hemsida" när jag ändrade namn på fältet så gick det helt plötsligt. Så det måste man även tänka på.

------------------
Jag har ingen chans...

nanne.net

Medlem sedan jan. 2000371 inlägg
#10

OK har ändrat lite i koden, men får fortfarande upp felmeddelande:

<%@ LANGUAGE="VBScript" %>
<!--#include file="adovbs.inc"-->
<%
	id = Request("id") 

	Set Databas = Server.CreateObject("ADODB.Connection") 'Skapar kopplings objektet
        MdbFilePath = Server.MapPath("radannons.mdb") 'Specifierar sökvägen till databasen
        Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";" 'Öppnar databasen

	SQLStmt = "SELECT *, Format$([datum],'yyyy/mm/dd') AS formdatum "
	SQLStmt = SQLStmt & "FROM Annonser, Kategorier "
	SQLStmt = SQLStmt & "WHERE Annonser.Kategori_id=Kategorier.Kat_Id "
        SQLStmt = SQLStmt & "FROM Delete, Password "
	SQLStmt = SQLStmt & "AND Annonser.Id=" & id & " "

        

%>

<HTML>
<HEAD>
<TITLE>-Läs annonns-</TITLE>
<style type="text/css">
<!--
input {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt}
-->
</style>
</HEAD>

<%
	CurrentRecord = 0

	Do while NOT RS.EOF
      
        Loop

%> 

<BODY BGCOLOR="#FFFFFF">
<TABLE WIDTH="532"><TR><TD WIDTH="10">&nbsp;</TD><TD WIDTH="522">
<center>
<TABLE BORDER=0 cellpadding="4" WIDTH="520"><tr><td height="250" valign="top">
<font size="4"><B><%=rs("Rubrik")%></B></font><br><br>
<font size="2">

Annonsen skriven av <a href="mailto:<%=rs("Epost")%>"><%=("Namn")%></a> den <%=rs("Datum")%>.<br>
<br>

<B>Beskrivning:</B><br>
<%=rs("Beskrivning")%>
<br>
<br>
<B>Telefon:</B> <%=rs("Telefon")%>  

<%
If Request.Form("Password") = rs("Password") Then
Responce.Redirect "raderad.asp"
Else
%>
<%
If Request.Form("Password") = "" Then
%>
Fel lösenord!
<%
Else
%>
Fel lösenord!
<%
End If
%>

<%
  Do While Rs.Delete 
  RS.MoveNext
  CurrentRecord = CurrentRecord + 1
  Loop
%>    

<form action="annons.asp?ID=<%=rs("id")%>" method="POST">
<TR>
                    <TH width="77"> 
                      <div align="left">Lösenord:</div>
                    </th>
                    <td width="165"> 
                      <input type="Password" name="Password"></td>
                    <td align="center" width="270"> 
                      <div align="left">
                        <input type="submit" value="Radera">
                      </div>
                    </td></tr>
<input type="hidden" name="id" value="<%=rs("id")%>">
<%
End IF
%>

               
              
<%		Do While RS.MoveNext
		CurrentRecord = CurrentRecord + 1
	Loop
%>    

</center>
</table></TD><TD WIDTH="30">&nbsp;</TD></TR></TABLE>
</body>
</html>
Medlem sedan dec. 19996 721 inlägg
#11

Du gör ju ingen sökning i databasen...

set rs=databas.execute(SQLstmt)

Medlem sedan jan. 2000371 inlägg
#12

Nu får jag upp:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Annonser.Kategori_id=Kategorier.Kat_Id FROM Delete, Password AND Annonser.Id=23'.

/cgi-bin/Annons/annons.asp, line 19

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)