webForumDet fria alternativet

nytt eller gammalt

ASP

14 svar · 231 visningar · startad av jispir

Medlem sedan maj 20011 343 inlägg
Frågan#1

Hur gör man för att visa om ett meddelande är nytt eller gammalt?

------------------
/Jesper

Medlem sedan juni 200032 967 inlägg
#2

antar att meddelandet ligger i en databas. då bör du ha ett fält i meddelandetabellen som heter typ 'läst'. när användaren sedan valt att läsa det så gör du en update och sätter läst till 1 på användaren/meddelandet. så då har du ju alltid nåt att trigga på...

------------------
@nders

Medlem sedan maj 20011 343 inlägg
#3

Du har inte lusst att vis mig med kod för jag är inte riktigt haj på asp än?

------------------
/Jesper

Medlem sedan juni 200032 967 inlägg
#4

öhh, tjena... ska försöka föklara lite luddigare ;)

vi utgår ifrån att du har en tabell:
id (räknare)
tillanvandare (text)
frananvandare (text)
meddelandetext (text)
skickatdatum (datum/tid)
last (tal)

när du lägger in ett meddelande i tabellen ställer du ju en insert-fråga typ:

insert into meddelandetabellen (tillanvandare, frananvandare, meddelandetext, skickatdatum, last) values ('jispir', '@nders', 'hej du!', #2000-07-11#, 0)

när du sedan går in och läser meddelandet så utöver att göra en select * from meddelandetabellen where id = 1 (eller vad nu id för det aktuella meddelandet kan tänkas vara), så gör du också

update meddelandetabellen set last = 1 where id = 1

hoppas det klarnade lite...

------------------
@nders

Medlem sedan maj 20011 343 inlägg
#5

Hej @nders!
Fick det inte till att funka du har inte lusst att göra ett fulständigt åt mig??

Min databas heter:
login.mdb
mina tabeller heter:
login
message

Tabellen login ser ut så här:
Id(användar id)
Login(användar namnet)
password(användarens lösenord)
epost(användarens epost)
info(användarens info)

Tabellen message ser ut så här:
msgID(meddelandets id)
msgFrom(tal)(id:nr från den som har skickat)
msgTO(tal))(motagarens id:nr)
msgTEXT(meddelande text)
Datum(datumet då det skickades)

Hoppas du kan hjälpa mig nu när du vet hur min tabell ser ut!

------------------
/Jesper

Medlem sedan juni 200032 967 inlägg
#6

vi får väl se... jag kanske kan skicka iväg dig en bit på väg...

hur ser dina connectionstrings ut till databasen?

------------------
@nders

Medlem sedan juni 200032 967 inlägg
#7

i tabellen message måste du lägga till kolumnen visat (läst), av datatypen tal, standardvärde 0, annars kan du ju inte veta om meddelandet är läst eller inte.

jag utgår ifrån att användaren har loggat in, och att användar-id på något sätt har förflyttat sig till variabeln anvid.
jag utgår också ifrån att du har ett initierat databasobjekt som heter objDb.

- visameddelanden.asp -
messID = request.querystring("messID")

if messID = "" then
	sqlstr = "select message.*, login.login as msgsender from message, login where msgTO = " & anvid & " and message.msgFrom = login.ID order by visat asc, [Datum] desc"
	' hämtar alla meddelanden, överst olästa, sorterade på datum, nyast överst.
	set rsMessages = objDb.execute (sqlstr)
	if rsMessages.eof then
		response.write "Du har inte fått några meddelanden!<br>"
	else
		while not rsMessages.eof
			response.write "<a href=""visameddelanden.asp?messID=" & rsMessages("msgID") & """>meddelande från: " & rsMessages("msgsender") & "</a><br>" & VbCrLf
			rsMessages.movenext
		wend
	end if
	rsMessages.close
else
	sqlstr = "select * from message where msgID = " & messID & "
	set rsMessage = objDb.execute (sqlstr)
	if not rsMessage.eof then
		response.write rs("msgTEXT")
	end if
	rsMessage.close
end if
objDb.close
set objDb = nothing

sug på den!

exakt hur mycket nybörjare är du? förstår du någonting av koden ovan?

jag ställer gärna upp och hjälper till, men försök att göra så mycket du kan själv. du lär dig väldigt mycket, och har jäklans kul under tiden.

ett par böcker har jag att rekommendera :
ASP Unleashed (SAMS)
Professional Active Server Pages 3.0 (Wrox)

bägge böckerna har jag på arbeit, så just nu kan jag inte ge dig isbn. men du hittar dem säkert.

lycka till.

förresten: skall tillägga att jag skrev koden ovan i visual notepad, och jag hade tabbat upp den jätttefint. hur som helst: den är hyfsat torrkodad, och jag 'antar' att den bör fungera...

[Redigerat av @nders den 11 jul 2000]

Medlem sedan maj 20011 343 inlägg
#8

Hej @nders!
Tck för hjälpen jag fattade det mesta av koden men fick det ändå inte att funka sidan är helt tom bara inget fel meddelande eller nått sånt. Du får min kod till den sidan som jag har för meddelanden just nu så kanske du kan lista ut felet så vore det bra!

<%
Dim iUsr, oCn, oRs1, sSQL

'
' Ta emot parametern user från det tidigare formuläret.
iUsr = session("userid")

'
' Kolla om det är en siffra vi har fått...
If (IsNumeric(iUsr)) Then
	'
	' Konvertera till integer.
	iUsr = Cint(iUsr)
Else
	'
	' Vi har inte fått något värde skickat, och skriver ut ett felmeddelande om detta.
	Response.Write "\<b\> Inget användar-id har skickats till det här skriptet. \</b\>"
	Response.End
End If

'
' Sätt ihopp sql-frågan.
sSQL = "SELECT message.\*, login.login FROM \[login\] INNER JOIN message ON login.ID = message.msgFrom "
sSQL = sSQL & "WHERE (((message.msgTo)=" & iUsr & "))"

Set oCn		= Server.CreateObject("ADODB.Connection")	' Skapa en databaskoppling.
Set oRs1	= Server.CreateObject("ADODB.Recordset")	' Skapa ett recordset.
	'
' Öppna databasen med connection-objektet.
oCn.Open "DSN=d1583-login2;Password=@01#$dcondmiaiadjkbcppadc"
'
' Här hämtar vi meddelanderna från databasen, som sparas i oRs1.
oRs1.Open sSQL, oCn, 3



'
'

%>
<%
'
' Kolla om vi fått någonting i record-setet överhuvudtaget.
If (oRs1.Eof) Then
'
' Om inte, så meddelar vi det.
Response.Write " Du har inga meddelanden "
Else %>
<%'
' Loopa ända till slutet på recordsetet.
While Not(oRs1.Eof) %>
<div align="center">
<center>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">

<b> Från: </b><a href="visa_info.asp?id=<%=oRs1("msgfrom") %>"> <%=oRs1("login") %> <%=efternamn%></a></td>
<td width="50%"><b> Datum/tid: </b> <%=oRs1("datum") %></td>
<td width="25%">

  \</td\>
\</tr\>

</table>
</center>
</div>
<p align="left"><b>Meddelande:</b> <%=oRs1("msgText") %></p>
<div align="center">
<center>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="25%"> </td>
<td width="25%"><form method=post action=view.asp?id=<%=oRs1("msgfrom")%> ><input type=submit value=Svara>
<form method=post action=view.asp?id=<%=oRs1("msgfrom")%> >
 </form>
</td>
<td width="25%"><form method=post action=delete.asp ><input type=hidden name=usrid value="<%=iUsr%>">
<input type=hidden name=msgid value=" <%=oRs1("msgID")%>"> <input type=submit value=kasta></form>

</td>
</tr> </table>
</center>
</div>
<hr>

														\<%'
				' Gå till nästa post i recordset.
				oRs1.MoveNext
			Wend

		End IF

%>
<%

oRs1.Close	' Stäng recordset 1.
oCn.Close	' Stäng connection. %\> 

denna kod fungerar men visar inte vilka som är olästa.

så här ser koden uta jag fick av dig som inte fungerar:

<%
messID = request.querystring("messID")
if messID = "" then
Set objDb = Server.CreateObject("ADODB.Connection") ' Skapa en databaskoppling.
objDb.Open "DSN=d1583-login2;Password=@01#$dcondmiaiadjkbcppadc"
iUsr = session("userid")
sqlstr = "select message.*, login.login as msgFROM from message, login where msgTO = " & iUsr & " and message.msgFrom = login.ID order by visat asc, [Datum] desc"
' hämtar alla meddelanden, överst olästa, sorterade på datum, nyast överst.
set rsMessages = objDb.execute (sqlstr)
if rsMessages.eof then
response.write "Du har inte fått några meddelanden!<br>"
else
while not rsMessages.eof
response.write "<a href=""messtest.asp?messID=" & rsMessages("msgID") & """>meddelande från: " & rsMessages("msgsender") & "</a><br>" & VbCrLf
rsMessages.movenext
wend
end if
rsMessages.close
else
sqlstr = "select * from message where msgID = " & messID & " "
set rsMessage = objDb.execute (sqlstr)
if not rsMessage.eof then
response.write rs("msgTEXT")
end if
rsMessage.close
end if
objDb.close
set objDb = nothing

%>
hoppas du kan hjälpa mig att hitta felet.

------------------
/Jesper

Medlem sedan maj 20011 343 inlägg
#9

Finns det ingen som kan hjälpa mig att få ordning på detta??

------------------
/Jesper

Medlem sedan juni 200032 967 inlägg
#10

hej!

jag har tyvärr inte sett ditt inlägg förrän nu.

jag antar att du använder netscape.
netscape bråkar rätt ordentligt, om man missat till exempel en </table>-tagg.
så, kika på det i internet explorer, och plocka upp källkoden från browsern. det är lättare att hänga med i notepad, tycker i alla fall jag. räkna igenom alla dina tabell-taggar.

jag lovar(nästan) att det i alla fall är det som gör att ingenting visas. vem vet, i internet explorer kanske du till och med får ett felmeddelande som kan hjälpa dig ännu mer.

lycka till!

------------------
don't follow your friends -- inflate them

Medlem sedan maj 20011 343 inlägg
#11

Jag kör med IE 5.0 & pws 4.0. Jag fick ett felmeddelande i början men efter att jag har redigerat lite så kom det inget felmeddelande längre. men det felmeddelandet jag fick stod det nått sånt här:
object krävs
eller nått liknande sitter inte på den datorn där asp sidan finns just nu så jag kan inte kolla vad det står ordentligt i felmeddelandet men jag åter kommer med felmeddelandet så fort jag har läst det!!

------------------
/Jesper

Medlem sedan maj 20011 343 inlägg
#12

när jag går in på sidan där jag ska kolla meddelandena då för jag upp detta fel meddelande:
ADODB.Fields fel '800a0cc1'

ADO kunde inte hitta objektet i mängden som överensstämmer med det begärda namnet eller numret.

/umr/messtest.asp, rad 79

och om jag lägger till messtest.asp?messID=1
får jag följande fel meddelande:

Körningsfel i Microsoft VBScript fel '800a000d'

Inkompatibla typer: 'rs'

/umr/messtest.asp, rad 88

jag blir så grinig när jag inte kan fixa det själv så jag tänkte fjeska för dig @nders ;) och fråga dig om du har lust att göra en fullständig sida åt mig med både html kod och detta mess script som jag skulle kunna få redigera i. För då skulle jag bli väldigt tacksam och glad :D

------------------
/Jesper

Medlem sedan juni 200032 967 inlägg
#13

ja, jag har ju ändå inget bättre för mig just nu. jobbar på det... :)

------------------
don't follow your friends -- inflate them

Medlem sedan juni 200032 967 inlägg
#14

owkidowki!

utgå ifrån min kod. byt ut rsMessages("msgsender") till rsMessages ("msgFrom") på rad 79.

rad 88: byt ut response.write rs("msgTEXT") mot response.write rsMessage ("msgTEXT")

prova det och rapportera i morgon, för sen åker jag på semester! :)

------------------
don't follow your friends -- inflate them

Medlem sedan maj 20011 343 inlägg
#15

Hej @nders!
Har inte kunnat svara tidigare.
Men iaf jag har fått det till att funka tack så jätte mycket för din hjälp.

------------------
/Jesper

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)