webForumDet fria alternativet

Request.Query skicka id för kommenterafunktion...?

ASPur ASP

7 svar · 316 visningar · startad av Johanneshov

JohanneshovMedlem sedan nov. 200387 inlägg
#1

Något är fel här... Id för den artikel (artikeltabell) som skall sparas i en kommentartabell hänger inte med (verkar det som)?

Jag har en sida som visar en artikel med eventuella kommentarer. Längst ned på sidan finns en form som skickar kommentarinlägget till db artikel_kommentar. Jag får dock Type Mismatch när jag skall lagra artikelid i artikelkommentardatabasen eller så lagras inte artikelid i artikeldatabasen. Vad är fel...? ;-)

Koden ser i kort ut som följer:

SQL = "SELECT * From artikel_kommentar where artikelid= "& Request.Querystring("reportageid") &" "
Recset.Open SQL, Conn

...Visar eventuell kommentarer...
Visar en "form" som skickar datat (action) vidare för lagring av artikelkommentar...

<form name="fylli" method="post" action="reportage.asp?do=sparakommentar&id=reportageid" onSubmit="return formkoll()">
l

Hänger id=reportageid med ovan???

% IF Request.Querystring("do") = "sparakommentar" AND Request.Querystring("id") = "reportageid" Then
...
...
RecSet("artikelid")=Request.Querystring("reportageid")

...och här får jag Type ismatch, om jag ändrar reportageid till id funkar får jag inget fel men artikelid i tabellen artikelkommentar sparas inte. Alltså måste något vara fel, variabeln hänger inte med i Request.Query eller...??

Tack på förhand

Johanneshov

mikulMedlem sedan aug. 20013 824 inlägg
#2

Se till att du använder samma typ av data hela tiden.
Du kan alltså inte gemföra ett fält av typen tal med en av typen text. Då får du felmeddelandet Type mismtch.

Lycka till!

JohanneshovMedlem sedan nov. 200387 inlägg
#3

artikelid är long integer autonumber och artikelid i kommentar är Number Long Integer... så det torde ju vara ok!

Frågan är vad som ligger i Request.Querystring("reportageid")
längst ned, hur kollar jag det innan jag skriver ut den??? OBS nybörjare! ;-)

Tanken är att det skall vara samma värde som hängt med sedan första kodsnutten...


SQL = "SELECT * From artikel_kommentar where artikelid= "& Request.Querystring("reportageid") &" "
Recset.Open SQL, Conn
@ndersMedlem sedan juni 200032 969 inlägg
#4

Vill du inte skicka med värdet som finns i reportageid istället för strängen reportageid?

<form name="fylli" method="post" action="reportage.asp?do=sparakommentar&id=<%= reportageid %>" onSubmit="return formkoll()">

Eller ska du skicka med den strängen också?

<form name="fylli" method="post" action="reportage.asp?do=sparakommentar&id=reportageid&reportageid=<%= reportageid %>" onSubmit="return formkoll()">

Jag är inte helt hundra på hur du vill ha det.

edit: om du inte har skapat variabeln reportageid får du göra det, eller ersätta med request.querystring("reportageid").

mvh

mikulMedlem sedan aug. 20013 824 inlägg
#5

Detta kollar om det är ett numriskt värde i QuerystSingen.

If isNumeric(Request.Querystring("reportageid")) then
     SQL = "SELECT * From artikel_kommentar where cInt(artikelid)= "& cInt(Request.Querystring("reportageid")) &";"
     Set rs = Connect.Execute(SQL)
end if

Funkar det inte så får du visa mer kod ;)

@ndersMedlem sedan juni 200032 969 inlägg
#6

Rättelse till mikuls inlägg:

Funktionen heter isNumeric(), inget annat.

Mvh,

JohanneshovMedlem sedan nov. 200387 inlägg
#7

Jag vill skicka med det nukeriska värdet i reportageid

<form name="fylli" method="post" action="reportage.asp?do=sparakommentar&id=<%= reportageid %>" onSubmit="return formkoll()">

Detta vill jag sedan lagra i databasen artikel_kommentar med följande:

<% IF Request.Querystring("do") = "sparakommentar" Then

Set Conn	= Server.CreateObject("ADODB.Connection")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/nyheter.mdb")

Addera = "SELECT * FROM artikel_kommentar" 
RecSet.Open Addera, Conn, 3, 3 

RecSet.Addnew
RecSet("artikelid")=   ***HJÄLP MIG****
RecSet("kommentar")=Request.Form("kommentar")
RecSet("namn")=Request.Form("namn")
RecSet("email")=Request.Form("email")
RecSet("datum")=Date()
RecSet.Update

RecSet.Close
Conn.Close 
Set RecSet = nothing
Set Connect = nothing

Response.Redirect("reportage.asp?do=visa")
End if
%>

Nu är jag rejält trött... Hur skall jag skriva för att lagra in värdet av reportageid i databasen... Måste jag omforma IFsatsen.. för att hämta upp resultatet av action i from? Vad skall stå i ***HJÄLP MIG*** ovan altså... ,-)

MVH
Johanneshov

mikulMedlem sedan aug. 20013 824 inlägg
#8

@nders skrev:

Rättelse till mikuls inlägg:

Funktionen heter isNumeric(), inget annat.

Mvh,

Word! ;) Alla är inte perfekta :P

<%

Function fix(str)
     str = Replace(trim(str), "'", "''")
     fix = str
End function

IF Request.Querystring("do") = "sparakommentar" Then
     IF IsNumeric(Request.QueryString("ID")) then
     
          Set Conn = Server.CreateObject("ADODB.Connection")
          Conn.Open "provider=microsoft.jet.oledb.4.0; data source =" & Server.MapPath("db/nyheter.mdb")

          SQL =  " Insert into artikel_kommentar(artikelid, kommentar, namn, email, datum)"_
               & " Values("& Request.QueryString("ID") &", '"& Fix(Request.Form("kommentar")) &"',"_
               & " '"& Fix(Request.Form("namn")) &"', '"& Fix(Request.Form("email")) &"',"_
               & " '"& Date() &"');" 

          Conn.Execute(SQL),,128
          Conn.Close : Set Conn = nothing

          Response.Redirect("reportage.asp?do=visa")

     Else
          Response.write "Nått Blev fel.<br>"
     End if
End if
%>

Det borde nog funka fint ;)

130 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)