Avatar billede carsten_mc Nybegynder
16. december 2006 - 14:23 Der er 78 kommentarer og
1 løsning

Hjælp til kodning af forum

Hey..

Jeg har lavet en side med forum, men jeg har nogle problemer med en del af kodningen. Det som jeg gerne vil have den til, er at regne ud hvor mange svar der er, og hvem der sidst har svaret, men jeg ved ikke helt hvordan jeg skal gøre det.

Jeg har brugt denne kode:
<%
dim id
id=request.querystring("id")

if id="" then
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg order by indlaegid desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

i=1
a=0
    Set indlaeg = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From indlaeg order by indlaegid desc"
    indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>

<%
i=1
do until indlaeg.eof
a=a+1
Set id = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM users where brugernavn ='"&indlaeg("navn")&"'"
id.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
if i=1 then
bg="#FFFFFF"
i=0   
else
bg="#eeeeee"
i=1
end if
%>
<tr bgcolor="<%=bg%>">                            <td>
&nbsp;<a href=indlaeg.asp?id=<%=indlaeg("indlaegid")%>><%=indlaeg("emne")%></a>    </td>                                <td>                                    Antal Svar                                </td>                                <td>                                <%=indlaeg("navn")%>                            </td>                                <td>                                Seneste Svar                            </td>
</tr>
<%indlaeg.movenext
loop%>
<%end if%>

Håber at der er nogen der kan hjælpe mig med at få gjort det sidste færdig..

Hilsen
Carsten_MC
Avatar billede kalp Novice
16. december 2006 - 15:12 #1
strSQL = "SELECT COUNT(indlaegid) as antal FROM indlaeg"

så kan du hive antal ud af dit recordset og for antallet af indlæg..
Avatar billede kalp Novice
16. december 2006 - 15:15 #2
hvordan forbinder du indlæg tabellen med user tabellen?

hvilke kolonne navne?
Avatar billede kalp Novice
16. december 2006 - 15:20 #3
umiddelbar tror jeg faktisk det vil virke hvis bare du retter din første sql til

strSQL = "SELECT navn,COUNT(indlaegid) as antal FROM indlaeg"
Avatar billede kalp Novice
16. december 2006 - 15:22 #4
forkert! nu spammer jeg dig total (beklager)

den sql tager som sagt bare og tæller antal indlæg..

hvis du retter denne
SELECT * FROM indlaeg order by indlaegid desc
til
SELECT navn,emne,MAX(indlaegid) FROM indlaeg

så burde det virke.
Avatar billede carsten_mc Nybegynder
16. december 2006 - 15:28 #5
Hey kalp

Når jeg skifter den sætning ud, som du foreslog, fik jeg denne fejl:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "navn" som en del af en aggregatfunktion.

Hvad går der galt...
Avatar billede kalp Novice
16. december 2006 - 15:30 #6
ja du skal jo lige rette hvad den skal trække ud af kolonnenavne i din tabel;)
jeg er ikke synsk hehe
Avatar billede carsten_mc Nybegynder
16. december 2006 - 15:33 #7
Det er i denne linje fejlen ligger:

rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Kan bare ikke se hvad der er galt..
Avatar billede kalp Novice
16. december 2006 - 15:35 #8
som du kan se skriver jeg navn og emne i denne sql.. ændre navnene så de passer til tabellen indlaegs' kolonne navne

SELECT navn,emne,MAX(indlaegid) FROM indlaeg
Avatar billede carsten_mc Nybegynder
16. december 2006 - 15:39 #9
Tror jeg har fundet fejlen...

Mine svar ligger i en anden tabel, ved navn svar...

Er det ikke der problemet ligger???
Avatar billede kalp Novice
16. december 2006 - 15:40 #10
Jeg har ingen anelse om hvordan din database er opbygget og hvor dine data ligger gemt... kan se lidt i koden.

Hvis du ikke har en tabel kaldet indlaeg men svar så er det et problem ja.
Avatar billede carsten_mc Nybegynder
16. december 2006 - 15:43 #11
Jeg har to tabeller.

En til at gemme indlæggene og en til at gemme svarene...

Skal de ligge i den samme tabel, for at man kan få vist hvor mange svar der er??
Avatar billede kalp Novice
16. december 2006 - 15:45 #12
næh.. det fint de ligger i hver sin..

hvad med at du skriver hvilke kolonner der findes i de 2 tabeller?

jeg skal gå nå, men så kan jeg da i det mindste svare senere når jeg ved hvordan din db ser ud;)
Avatar billede carsten_mc Nybegynder
16. december 2006 - 16:02 #13
Her er indholdet i tabellerne:

Indlaeg:
Navn - personen som har oprettet indlægget
Emne
Indlaeg - Teksten
Dato
Tid
indlageID - ID til indlægget

Svar:
ID
Emne - RE: Emnenavn
Navn - Personen der har oprettet svaret
Svar - Teksten
IndlaegID - hvilket indlæg de hører til
Dato
Tid
Avatar billede kalp Novice
16. december 2006 - 16:40 #14
SELECT COUNT(indlageID) as antal FROM Indlaeg

til at hente antal indlæg... hvis dette er stavet rigtigt
indlageID - ID til indlægget

ellers skal det være

SELECT COUNT(IndlaegID) as antal FROM Indlaeg


til at hente hvem der sidst har svaret kan du lave denne SQL

SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste;
Avatar billede kalp Novice
16. december 2006 - 16:53 #15
lidt uoverskuelig kode her på E, så har lige skåret lidt i din kode bare så vi kan teste om det virker... prøv det her.. og huske at rette  COUNT(indlageID) til COUNT(IndlaegID) hvis det bare var en stave fejl


<%Set id = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(indlageID) as antal FROM Indlaeg"
id.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>

Antal indlæg = <%=id("antal")%>

<%
dim id

    Set indlaeg = Server.CreateObject("ADODB.RecordSet")
    strSQL = "SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste"
    indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>


<%
do until indlaeg.eof
%>

<tr bgcolor="white">                            <td>
&nbsp;<a href=indlaeg.asp?id=<%=indlaeg("indlaegid")%>><%=indlaeg("emne")%></a>    </td>                                <td>                                    Antal Svar                                </td>                                <td>                                <%=indlaeg("navn")%>                            </td>                                <td>                                Seneste Svar                            </td>
</tr>
<%indlaeg.movenext
loop%>
<%end if%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 16:56 #16
Det vil sige at:
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg order by indlaegid desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Skal skiftes ud med:
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(indlageID) as antal FROM Indlaeg"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Og til sidste svar skal jeg lave denne:
Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic


Er det rigtig??
Avatar billede kalp Novice
16. december 2006 - 16:59 #17
yep
Avatar billede carsten_mc Nybegynder
16. december 2006 - 17:05 #18
Når jeg tjekker det i browseren, får jeg denne besked:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.

Fejlen ligger i denne linje:
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
16. december 2006 - 17:07 #19
på denne her????

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(indlageID) as antal FROM Indlaeg"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic


for så ville jeg jo foreslå a ud retter indlageID som jeg gjorde dig opmærksom på i mit indlæg før

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal FROM Indlaeg"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede carsten_mc Nybegynder
16. december 2006 - 17:10 #20
Fandt fejlen..

Taste fejl, skrev indlage istedet for indlaeg..

Nu får jeg tilgengæld at vide at:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator i forespørgselsudtrykket "Svar MAX(ID)".

Har skrevet dette:
Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
16. december 2006 - 17:13 #21
Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn, Svar MAX(IndlaegID) as sidste FROM Svar WHERE ID = sidste;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede carsten_mc Nybegynder
16. december 2006 - 17:18 #22
Den siger stadig det samme...

Fejlen, efter linjenummeret, ligger i:
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
16. december 2006 - 17:20 #23
Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT TOP 1 Emne, Navn,svar, dato FROM Svar;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
16. december 2006 - 17:22 #24
sorry..

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT TOP 1 Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID DESC;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede carsten_mc Nybegynder
16. december 2006 - 17:27 #25
Nu kan jeg se siden, men den fungere ikke helt rigitigt..

Istedet for at vise hvor mange svar der er for hvert indlæg, giver den antallet af svar der overhovedet er..

Samtidig viser den kun det nyeste svar, og ikke den nyeste for hvert indlæg...

Kan det lade sig gøre???
Avatar billede carsten_mc Nybegynder
16. december 2006 - 17:35 #26
Denne kode regner heller ikke ud hvor mange svar der er:
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(indlaegID) as antal FROM indlaeg"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Men hvor mange inlæg der er, hvilket jo ikke helt var meningen
Avatar billede kalp Novice
16. december 2006 - 17:41 #27
okay... det sådan jeg forstod det.. men kun fordi din navngivning på tabellerne er dårlig=)

et indlæg er det samme som et svar i mine øjne.. men ja så skal der jo laves om i tingene... nu skal jeg i hvertfald lige spise
Avatar billede carsten_mc Nybegynder
16. december 2006 - 17:42 #28
Helt i orden...
Avatar billede kalp Novice
16. december 2006 - 19:21 #29
tæller denne dine svar?


<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegid) as antal, indlaeg.emne as Emne FROM indlaeg, svar WHERE svar.indlaegid = indlaeg.indlaegid ORDER BY indlaeg.indlaegid desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne: <%=indlaeg("Emne")%><br /><br />
<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 19:36 #30
Hvad skal den erstatte??

Har jo disse:
<%
dim id
id=request.querystring("id")

if id="" then
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(indlaegID) as antal FROM indlaeg"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

i=1
a=0

Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From indlaeg order by indlaegid desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
   
Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT TOP 1 Navn, Tid, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
Avatar billede kalp Novice
16. december 2006 - 19:44 #31
kan du ikke lave en helt ny side og så bare lige teste koden seperat?

for den bruger intet af det du har laet.. bare test kode.
Avatar billede kalp Novice
16. december 2006 - 19:45 #32
om ikke andet skal erstatte

if id="" then
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(indlaegID) as antal FROM indlaeg"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede carsten_mc Nybegynder
16. december 2006 - 19:48 #33
Har prøvet at køre den i en side for sig selv..

Giver denne fejlbesked:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "Emne" som en del af en aggregatfunktion.
/varde/test.asp, line 7


Linjenummeret, siger at fejlen ligger i:
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
16. december 2006 - 19:53 #34
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegid) as antal, indlaeg.emne FROM indlaeg, svar WHERE svar.indlaegid = indlaeg.indlaegid ORDER BY indlaeg.indlaegid desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne: <%=indlaeg("Emne")%><br /><br />
<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 19:56 #35
Den siger stadig det samme..
Avatar billede kalp Novice
16. december 2006 - 20:03 #36
men dette giver dig vel antallet men uden emne?

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegid)FROM indlaeg, svar WHERE svar.indlaegid = indlaeg.indlaegid ORDER BY indlaeg.indlaegid desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 20:05 #37
Nu siger den dette:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "indlaeg.indlaegID" som en del af en aggregatfunktion.

Hele koden er:

<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegID)FROM indlaeg, svar WHERE svar.indlaegID = indlaeg.indlaegIDd ORDER BY indlaeg.indlaegID desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
<%indlaeg.movenext
loop%><!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegID)FROM indlaeg, svar WHERE svar.indlaegID = indlaeg.indlaegIDd ORDER BY indlaeg.indlaegID desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 20:09 #38
Kom til at kopire koden to gange:
<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegID)FROM indlaeg, svar WHERE svar.indlaegID = indlaeg.indlaegIDd ORDER BY indlaeg.indlaegID desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
<%indlaeg.movenext
loop%>
Avatar billede kalp Novice
16. december 2006 - 20:25 #39
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.indlaegid) as antal FROM svar ORDER BY indlaeg.indlaegid desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
<%indlaeg.movenext
loop%>

okay.. den der gør så
Avatar billede carsten_mc Nybegynder
16. december 2006 - 20:34 #40
Ked af at sige det, men nu siger den dette:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.


Koden:
<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(svar.IndlaegID) as antal FROM svar ORDER BY indlaeg.indlaegID desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>

Antal: <%=indlaeg("antal")%> <br />

<%indlaeg.movenext
loop%>
Avatar billede kalp Novice
16. december 2006 - 20:36 #41
skal vi prøve at skære det ud i pak så hehe


<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) FROM svar ORDER BY IndlaegID desc"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("IndlaegID")%> <br />

<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 20:39 #42
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion.
/varde/test.asp, line 7
Avatar billede kalp Novice
16. december 2006 - 20:46 #43
Den her skal køre

<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) FROM svar"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("IndlaegID")%> <br />

<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
16. december 2006 - 20:59 #44
Nu kan den ikke finde IndlaegID fra svar tabellen, og jeg er sikker på at jeg har stavet det rigtig da jeg har kopiret navnet direkte fra Acces..

Hvis jeg fjerner COUNT(IndlaegID) kan den sagtens finde IndlaegID...
Avatar billede kalp Novice
17. december 2006 - 09:46 #45
men du kan ikke sådan her??


<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />

<%indlaeg.movenext
loop%>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 10:37 #46
<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />

<%indlaeg.movenext
loop%>

Virker nu...
Avatar billede kalp Novice
17. december 2006 - 10:46 #47
usorteret... men virker det


<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg "
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=svar("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 10:55 #48
Det virker... Selvføllgelig usorteret, men det virker
Avatar billede kalp Novice
17. december 2006 - 11:01 #49
tror vi skal prøve os lidt frem med sorteringen.. det er det med antal som måske vil brokke sig=)


<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar ORDER BY IndlaegID"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=svar("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 11:06 #50
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion.
/varde/test.asp, line 69

Fejlinje:
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
17. december 2006 - 12:02 #51
<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal,IndlaegID  FROM svar ORDER BY IndlaegID"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=svar("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 13:27 #52
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion.
/varde/test.asp, line 15

Fejlinie:
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
17. december 2006 - 13:43 #53
tror ikke man kan gøre det sådan.. men må lige prøve

<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal,IndlaegID as indid  FROM svar ORDER BY indid"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=svar("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 14:25 #54
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "indid" som en del af en aggregatfunktion.
/varde/test.asp, line 15

Fejlinie:
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalp Novice
17. december 2006 - 17:03 #55
<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar WHERE svar IN (SELECT IndlaegID FROM svar ORDER BY IndlaegID"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=svar("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede kalp Novice
17. december 2006 - 17:16 #56
men tvivler faktisk på det virker..

<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set svar = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;"
svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(IndlaegID) as antal, IndlaegID FROM svar WHERE IndlaegIDIN (SELECT IndlaegID FROM svar ORDER BY IndlaegID"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=svar("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede kalp Novice
17. december 2006 - 17:17 #57
strSQL = "SELECT COUNT(IndlaegID) as antal, IndlaegID FROM svar WHERE IndlaegID IN (SELECT IndlaegID FROM svar

Der manglede et mellemrum i den
Avatar billede carsten_mc Nybegynder
17. december 2006 - 17:35 #58
Mangler der ikke ) efter FROM svar???
Avatar billede kalp Novice
17. december 2006 - 17:46 #59
strSQL = "SELECT COUNT(IndlaegID) as antal, IndlaegID FROM svar WHERE IndlaegID IN (SELECT IndlaegID FROM svar ORDER BY IndlaegID)"
Avatar billede carsten_mc Nybegynder
17. december 2006 - 18:03 #60
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion.
Avatar billede kalp Novice
17. december 2006 - 18:07 #61
vi kan også gre det anderledes...

i denne tabel  " indlaeg " opretter vi et tal felt kaldet antal..
og hver gang der oprettes et svar så tælles denne kolonne 1 op..

er det fint med dig?? det er lettere end det andet og så har du kun 2 databasekald istedet for 3
Avatar billede carsten_mc Nybegynder
17. december 2006 - 18:15 #62
Kan vi godt prøve, opretter en kolonne der hedder antal i tabellen indlaeg
Avatar billede kalp Novice
17. december 2006 - 18:20 #63
fint... må jeg se koden der hvor du indsætter svar i databasen?
Avatar billede carsten_mc Nybegynder
17. december 2006 - 18:24 #64
<%
i=1

a=a+1

dim id
id=Request.QueryString("ID")
svarid="0"
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM svar WHERE IndlaegID="&ID&""
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set rs2 = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg WHERE IndlaegID="&ID&""
rs2.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

if i=1 then
bg="#FFFFFF"
i=0
else
bg="#eeeeee"
i=1
end if

%>
                                <tr>
                                    <td colspan="4" class="topoverskrift">
                                        &nbsp;<%=rs2("emne")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top" width="15%">
                                        <%=rs2("Navn")%>
                                        <br>
                                        <%=rs2("dato")%><br>
                                        <%=rs2("tid")%>
                                    </td>
                                    <td width="1px" bgcolor="#004277">
                                    </td>
                                    <td width="3px">
                                    </td>
                                    <td valign="top" width="300">
                                        <%=rs2("indlaeg")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td height="1px" bgcolor="#004277" colspan="4">
                                    </td>
                                </tr>
                                <tr>
                                    <td height="10">
                                    </td>
                                </tr>
<%if rs.eof then%>
<tr>
    <td colspan="4">
        Der er ikke svaret på denne tråd. Vær den første til at svare.
    </td>
</tr>
<tr>
    <td height="10">
    </td>
</tr>
<%else
do while not rs.eof
svarid=svarid+1%>
                                <tr>
                                    <td colspan="4" class="topoverskrift">
                                        &nbsp;Svar #<%=svarid%>
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top" width="15%">
                                        <%=rs("Navn")%>
                                        <br>
                                        <%=rs("dato")%><br>
                                        <%=rs("tid")%>
                                    </td>
                                    <td width="1px" bgcolor="#004277">
                                    </td>
                                    <td width="3px">
                                    </td>
                                    <td valign="top">
                                        <%=rs("svar")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td height="1px" bgcolor="#004277" colspan="4">
                                    </td>
                                </tr>
                                <tr>
                                    <td height="10">
                                    </td>
                                </tr>
<%rs.movenext
loop%>
<%end if%>
                                <tr>
                                    <td height="1px" bgcolor="#004277" colspan="4">
                                    </td>
                                </tr>
                                <tr>
                                    <td height="10">
                                    </td>
                                </tr>
                                <tr>   
                                    <td><a name="opret"></a>
                                        <strong>Opret Svar</strong>
                                    </td>
                                </tr>
<form action="svar.asp?id=<%=id%>" method="post">
                                <tr>
                                    <td colspan="4">
                                        <table>
                                            <tr>
                                                <td valign="top">
                                                    Svar:
                                                </td>
                                                <td>
                                                    <textarea style="font-size:12px; border-style: solid; border-width: 1" name="svar" rows="10" cols="50"></textarea>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                </td>
                                                <td>
                                                    <input style="border-style:solid; border-width:0px; background-color:#e3e3e3; font-size:12px" type="submit" value="Opret Svar" name="B1">
                                                </td>
                                        </table>
                                    </td>
                                </tr>
</form>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 18:29 #65
Forkerte kode...

Her er den kode som skriver dataene ind i databasen:
<%
id=request.querystring("id")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM svar order by svarid"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set rs1 = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM Users WHERE brugernavn='"&session("username")&"'"
rs1.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

if Request.ServerVariables("REQUEST_METHOD") = "POST" then 
rs.AddNew
rs("Navn") = session("username")
rs("svar") = Replace(Request.Form("svar"), vbCrLf, "<br>")
rs("indlaegID") = id
rs.update
response.redirect "indlaeg.asp?id="&id
end if
%>
Avatar billede kalp Novice
17. december 2006 - 18:36 #66
<%
id=request.querystring("id")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM svar order by svarid"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

Set rs1 = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM Users WHERE brugernavn='"&session("username")&"'"
rs1.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

if Request.ServerVariables("REQUEST_METHOD") = "POST" then 
rs.AddNew
rs("Navn") = session("username")
rs("svar") = Replace(Request.Form("svar"), vbCrLf, "<br>")
rs("indlaegID") = id
rs.update
response.redirect "indlaeg.asp?id="&id
end if
%>


<%
dim connection
dim sSQL
sSQL= "UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id "
Set connection = Server.CreateObject("ADODB.Connection")
connection.Open
connection.execute(sSQL)
Connection.Close
Set Connection = Nothing
%>



hvis ikke det virker må du gerne tilpasse den din database forbindelse.. den skal bare køre denne sql

"UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id "
Avatar billede kalp Novice
17. december 2006 - 18:39 #67
den sql før skal hedde antal  som i din db.. beklager..
"UPDATE Indlaeg SET antal = antal + 1 WHERE IndlaegID = " & id "

men efter det burde denne nedenstående kode fungere


<!--#include file="datacon.asp"-->
<% Response.Buffer = True %>

<% Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM indlaeg ORDER BY indlaegID desc;"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
%>
<%
Set indlaeg = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID, antal FROM Svar ORDER BY indlaegID desc;"
indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
do until indlaeg.eof
%>
Antal: <%=indlaeg("antal")%> <br />
Emne:  <%=rs("emne")%> <br />
Nyeste: <%=indlaeg("Navn")%> <br />
<%indlaeg.movenext
rs.movenext
svar.movenext
loop%>
Avatar billede carsten_mc Nybegynder
17. december 2006 - 18:44 #68
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409)
Strengkonstanten er uafsluttet
/varde/svar.asp, line 26, column 66
sSQL= "UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id "
-----------------------------------------------------------------^
Avatar billede kalp Novice
17. december 2006 - 18:45 #69
sSQL= "UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id & " "
Avatar billede carsten_mc Nybegynder
17. december 2006 - 18:58 #70
Når jeg prøver at køre testkoden får jeg denne meddelelse:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
/varde/test.asp, line 11

Samtidig, ændrere tallet i databasen sig ikke, der står stadig nul, selvom, jeg opretter et svar uden problemer..
Avatar billede kalp Novice
17. december 2006 - 19:14 #71
sSQL= "UPDATE Indlaeg SET antal = antal + 1 WHERE IndlaegID = " & id & " "
Avatar billede kalp Novice
17. december 2006 - 19:14 #72
den nye kolonne hedder "antal"  ? så burde den der virke
Avatar billede carsten_mc Nybegynder
17. december 2006 - 19:18 #73
Den ligger ikke 1 til, når jeg opretter et svar...

Og har tjekket kolonnenavnet, det er det samme...
Avatar billede kalp Novice
17. december 2006 - 19:20 #74
og værdien i kolonnen antal er 0 lige nu? eller er den tom?
der skal stå 0 i den.... den må ikke være tom
Avatar billede carsten_mc Nybegynder
17. december 2006 - 19:21 #75
Der står 0...
Avatar billede kalp Novice
17. december 2006 - 19:22 #76
okay om kolonnen er oprettet i tabellen Indlaeg? og det her id du henter
request.querystring("id")

er det ID'et til en indlæg'et?
Avatar billede carsten_mc Nybegynder
17. december 2006 - 19:46 #77
IndlaegID="&ID&"
Avatar billede carsten_mc Nybegynder
10. marts 2007 - 14:08 #78
lukket
Avatar billede carsten_mc Nybegynder
10. marts 2007 - 14:08 #79
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester