Hej du gör det för krångligt för dig själv... ok, tack, har fått själva visningen att fungera tillsammans med rätt artikel. Problemet är när man ska lägga till ny kommentar. Kommentaren är på samma sida som visar artiklen. ja, action är den sida som formuläret postas till och som sedan kommer att spara kommentaren. ok, har nu följande kod till Kommenterafunktionen: "Kommentera funktion" - Vilken funktion skall vi kommentera? ja, Jag försöker göra ett formulär så besökarna kan kommentera den artikel de har läst. Jag har koden som jag skrev i ett tidigare inlägg. du skickar ju inte med artikelID:t... det är bara en sida :S, artiklen och kommentera ligger i samma ASP fil :S ska jag ändra alla visa till task? även den på artikel delen? har uppdaterat 1:a inlägget med hela koden. Nej, eftersom du skriver action=?visa=laggtill så skickar du inte med artikelID till kommentaren och det krockar sedan när du skall visa artikeln. Det finns väl ingen artikel som har ID "laggtill" som du använder request.querystring("visa") till... ok, då har jag ändrat ett par visa till task. Men måste man ha en ruta som själva artiklens id syns i? Det går inte att göra utan? snälla nån... ok, får försöka med on "osynlig" ruta. men när man trycker på spara så får jag felmeddelandet: Kan även tipsa dig om att lägga in värdena som du hämtar i varsin variabel så att du kan kontrollera att dem innehåller det dem bör innehålla innan du stoppar in dem i en SQL-sats. provade att ändra till CInt(Request.QueryString("visa")), får då ett annat fel: Det du skickar med i din QueryString är ju strängvärdet laggtill. Skriv om, skriv rätt :) Tack för tipset :DKommentera funktion
Jag håller på med en kommentera artikel funktion. Men har fastnat nu :( vet inte redigt hur jag ska fortsätta :S
koden jag har:
<% Response.Buffer = True %>
<LINK REL=stylesheet HREF="stil.css" TYPE="text/css">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databas.mdb")&";"
Set news = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT artiklar.rubrik, artiklar.bild_nyhet, artiklar.nyhet, artiklar.Datum, artiklar.bild_text, artiklar.last, artiklar.skribent_id, redaktionen.ID, redaktionen.namn, redaktionen.email FROM redaktionen INNER JOIN artiklar ON redaktionen.ID = artiklar.skribent_id WHERE artiklar.id = " &Request.QueryString("visa")
news.Open Addera, Conn, 1, 2
%>
<html>
<head>
</head>
<body link="#000000" vlink="#000000" alink="#000000">
<table border="0" width="400" id="table2" cellspacing="0">
<tr>
<td><font face="Verdana" style="font-size: 7pt">Allsvenskan / Artikel / <b> <%=news("rubrik")%></b></font></td>
</tr>
</table>
<table border="0" width="178" id="table3">
<tr>
<td><font face="Verdana" style="font-size: 7pt"> </font></td>
</tr>
</table>
<table border="1" cellpadding="0" cellspacing="0" style="border-width:0; border-collapse: collapse" bordercolor="#111111" width="400" id="table1">
<tr>
<td width="100%" style="border-style: none; border-width: medium" align="center"><font face="Verdana"><img class="img" src="<%=news("Bild_nyhet")%>" align="left"></font></td>
</tr>
<tr>
<td width="100%" style="border-style: none; border-width: medium; font-family:Verdana; font-size:10px; font-style:italic"><font class="stor" size="1"><span style="font-weight: 400"><%=news("bild_text")%><br> </span></font></td>
</tr>
<tr>
<td width="100%" style="border-style: none; border-width: medium"><font class="stor" size="4"><%=news("rubrik")%><br></font><font face="Verdana" size="2"><br></font></td>
</tr>
<tr>
<td width="100%" style="border-style: none; border-width: medium"><font style="font-size: 8pt"><%=Replace(news("nyhet"),vbCrLf,"<br>")%></font></td>
</tr>
<tr>
<td width="100%" style="border-style: none; border-width: medium" align="right"><align="right"><font class="text"><b><font face="Verdana" size="2">
<br>
&titel=<%=news("namn")%>');"><%=news("namn")%></font><font size="2"> </font></b></font><b><font size="2"><br> </font></b><font size="1" face="Verdana">Publicerad <%=news("datum")%></font></td>
</tr>
</table>
<%
Conn.Execute("update artiklar set last = last + 1 where id = " & CLng(Request.QueryString("visa")))
%>
<%
news.Close
%>
<table border="0" width="400" id="table4">
<tr>
<td><hr><font face="Verdana"><span style="font-size: 8pt; font-weight: 700">
<br>
</span>
<span style="font-size: 9pt; font-weight: 700; text-decoration:underline">
Kommentarer</span><span style="font-size: 9pt"> <br>
</span></font></td>
</tr>
<%
Addera = "SELECT * FROM artikelkommentar WHERE artikel_id = '" &Request.QueryString("visa") & "'"
news.Open Addera, Conn, 1, 2
Do While Not news.EOF
%>
<tr>
<td width="100%"><font face="Verdana"><span style="font-size: 8pt"><b>"><%=news("namn")%></b> </span>
<span style="font-size: 7pt">(<%=news("datum")%>)</span><span style="font-size: 8pt"><br>
<%=news("kommentar")%><hr size="1" noshade color="#000000"></span></font></td>
</tr>
<%
news.MoveNext
Loop
news.close
%>
</tr>
<tr>
<td><font face="Verdana"><span style="font-size: 8pt; font-weight: 700">Kommentera</span><span style="font-size: 8pt"> (E-post frivilligt)</span></font></td>
</tr>
<tr>
<td>
<form method="POST" action="artikel.asp?visa=laggtill">
<table border="0" width="222" id="table5">
<tr>
<td width="64"><font face="Verdana">
<span style="font-size: 8pt">Namn</span></font></td>
<td width="148"><input type="text" name="namn" size="20"></td>
</tr>
<tr>
<td width="64"><font face="Verdana">
<span style="font-size: 8pt">E-post</span></font></td>
<td width="148"><input type="text" name="email" size="20"></td>
</tr>
</table>
<p><textarea rows="4" name="kommentar" cols="25"></textarea><br>
<input type="submit" value="Skicka >>" name="skicka"></p>
</form>
</td>
</tr>
</table>
<%
If Request.QueryString("visa") = "laggtill" Then
strnamn = SafeSQL(Request.Form("namn"))
stremail = SafeSQL(Request.Form("mail"))
strkommentar = SafeSQL(Request.Form("kommentar"))
strartikel_id = SafeSQL(Request.QueryString("visa"))
strDatum = now()
Addera.Execute("INSERT INTO artikelkommentar (namn,email,kommentar,artikel_id,datum)" & "VALUES (#" & strnamn & "#,'" & stremail & "','" & strkommentar & "','" & strartikel_id& "','" & strdatum& "')")
END IF
%>
<%
Conn.Close
Set news = nothing
Set Conn = nothing
%>
</body>
</html>
Tacksam för all hjälp jag kan få
Sv: Kommentera funktion
Först och främst är det TR du skall loopa - vilket kommer generera i fel
<code>
<%
Addera = "SELECT * FROM artikelkommentar WHERE artikel_id = '" &Request.QueryString("visa") & "'"
news.Open Addera, Conn, 1, 2
Do While Not news.EOF
%>
<tr><!-- flyttat in till loopen -->
<td width="100%"><%=news("namn")%><br>
<%=news("kommentar")%></td>
</tr>
<%
news.MoveNext
Loop
news.close
%>
</code>
Sen tycker jag inte att recordsetet skall kallas för news, som du gjort. Det kan bli förvirrande efter ett tag. Döp om den till comment eller liknande istället.
Kan Form-action ha detta värde? "--WEBBOT-SELF--"
Det kanske det kan. Jag har inte stött på det innan iaf.
Vart får du artikelID:t ifrån? Hur följer det med fårn förrg sida?
Övrigt ser det bra ut. Vart skall du ha kommentarerna? Samma sida eller separat sida?Sv:Kommentera funktion
--WEBBOT-SELF-- kom upp automatiskt när jag la in textrutorna. Är det den man ska ändra för att anropa själva sparande funktionen?Sv: Kommentera funktion
Sv:Kommentera funktion
<table border="0" width="400" id="table4">
<tr>
<td><hr><font face="Verdana"><span style="font-size: 8pt; font-weight: 700">
<br>
</span>
<span style="font-size: 9pt; font-weight: 700; text-decoration:underline">
Kommentarer</span><span style="font-size: 9pt"> <br>
</span></font></td>
</tr>
<%
Addera = "SELECT * FROM artikelkommentar WHERE artikel_id = '" &Request.QueryString("visa") & "'"
news.Open Addera, Conn, 1, 2
Do While Not news.EOF
%>
<tr>
<td width="100%"><font face="Verdana"><span style="font-size: 8pt"><b>"><%=news("namn")%></b> </span>
<span style="font-size: 7pt">(<%=news("datum")%>)</span><span style="font-size: 8pt"><br>
<%=news("kommentar")%><hr size="1" noshade color="#000000"></span></font></td>
</tr>
<%
news.MoveNext
Loop
news.close
%>
</tr>
<tr>
<td><font face="Verdana"><span style="font-size: 8pt; font-weight: 700">Kommentera</span><span style="font-size: 8pt"> (E-post frivilligt)</span></font></td>
</tr>
<tr>
<td>
<form method="POST" action="artikel.asp?visa=laggtill">
<table border="0" width="222" id="table5">
<tr>
<td width="64"><font face="Verdana">
<span style="font-size: 8pt">Namn</span></font></td>
<td width="148"><input type="text" name="namn" size="20"></td>
</tr>
<tr>
<td width="64"><font face="Verdana">
<span style="font-size: 8pt">E-post</span></font></td>
<td width="148"><input type="text" name="email" size="20"></td>
</tr>
</table>
<p><textarea rows="4" name="kommentar" cols="25"></textarea><br>
<input type="submit" value="Skicka >>" name="skicka"></p>
</form>
</td>
</tr>
</table>
<%
If Request.QueryString("visa") = "laggtill" Then
strnamn = SafeSQL(Request.Form("namn"))
stremail = SafeSQL(Request.Form("mail"))
strkommentar = SafeSQL(Request.Form("kommentar"))
strartikel_id = SafeSQL(Request.QueryString("visa"))
strDatum = now()
Addera.Execute("INSERT INTO artikelkommentar (namn,email,kommentar,artikel_id,datum)" & "VALUES (#" & strnamn & "#,'" & stremail & "','" & strkommentar & "','" & strartikel_id& "','" & strdatum& "')")
END IF
%>
Men hur får man själva sparandet att fungera? Nu går den till artikel.asp?visa=laggtill och där får jag felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
som tillhör själva artikeldelen på raden:
news.Open Addera, Conn, 1, 2
men när man trycker på lägg till så ska man ju komma tillbaka till den artiklen som man skrev kommentaren på.
Hur gör man allt detta ?? :S
Sv: Kommentera funktion
"kommentera artikel funktion" - Syntax error; 'artikel' är inget adjektiv.Sv:Kommentera funktion
Sv: Kommentera funktion
Det är INTE smart att använda "visa"-variabeln som du gör nu. ArtikelID skall ju vara där.
action="?task=laggtill"
Lägg till den i ett textfält istället
<input type="text" name="strartikel_id" value="<%=request.querystring("visa"))%>">
sedan på nästa sida
if request.querystring("task")="laggtill" Then
strartikel_id= request.form("strartikel_id")Sv:Kommentera funktion
Sv: Kommentera funktion
Sv:Kommentera funktion
Sv: Kommentera funktion
använd <input type=hidden>
eller lägga id:t i en querystring i actionadressen...Sv:Kommentera funktion
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'artiklar.id ='.
på raden:
news.Open Addera, Conn, 1, 2
troligen på denna felet ligger
Addera = "SELECT artiklar.rubrik, artiklar.bild_nyhet, artiklar.nyhet, artiklar.Datum, artiklar.bild_text, artiklar.last, artiklar.skribent_id, redaktionen.ID, redaktionen.namn, redaktionen.email FROM redaktionen INNER JOIN artiklar ON redaktionen.ID = artiklar.skribent_id WHERE artiklar.id = " &Request.QueryString("visa")
Men hur löser jag detta?? :S
Sv: Kommentera funktion
istället för "Request.QueryString("visa")" i SQL skall du ju skriva REQUEST.FORM("namnpåhiddenfield")
Addera = "SELECT artiklar.rubrik, artiklar.bild_nyhet, artiklar.nyhet, artiklar.Datum, artiklar.bild_text, artiklar.last, artiklar.skribent_id, redaktionen.ID, redaktionen.namn, redaktionen.email FROM redaktionen INNER JOIN artiklar ON redaktionen.ID = artiklar.skribent_id WHERE artiklar.id = " &Request.QueryString("visa")
Du borde lära dig det elementära i ASP. Ett tips är att köpa dig en bok eller gå en kurs.
Här hjälper vi gärna till, men vi levererar inte gärna den färdiga lösningen utan tänket.
Lycka till!
Sv:Kommentera funktion
Sen stoppar du in variabeln i SQL-satsen där den ska vara.
På detta sättet kan du göra olika kontrollera innan du anropar databasen vilket dels ökar säkerheten men även minskar belastningen på din databas/serverplats.Sv:Kommentera funktion
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
den posten finns :SSv: Kommentera funktion
Med CInt försöker du göra om laggtill till ett heltal, vilket naturligtvis inte går.
Läs Jonas inlägg så får du rätt på det!Sv:Kommentera funktion
Säg att du har två sidor, "ShowArticle.asp" och "SaveComment.asp".
I ShowArticle bör du ha följande:
- Artikel
- Kommentar formulär
Kommentar formuläret bör se ut:
<code>
<form action="SaveComment.asp?articleID=[id]" method="post">
<!-- Dina kommentar fält och skicka-knapp -->
</form>
</code>
([id] _skall_ vara IDt för artikeln i databasen)
Och i "SaveComment.asp" gör du följande:
<code>
1. Hämta "articleID" från QueryString.
2. Hämta alla formulär-fält från Request.Form.
3. Spara kommentar i databas med artikelID="articleID".
</code>
Detta är _EN_ lösning och en enkel sådan.
Hojta till om du denna lösning ej förstår.
/ PeterSv: Kommentera funktion
Gjorde en sida till förutom den som visar artklan som man skrev in kommentaren i och det verkar fungera :D
Tack alla för hjälpen :D