|
| Chatkode - hvordan vendes liniernes rækkef~ Fra : Jakob Munck |
Dato : 04-09-01 16:14 |
|
Denne chatkode er lavet af Lauritz Jensen, og jeg og jeg forsøger at bruge
den i stedet for database i en lille chat. Men koden her skriver
chatlinierne ud sådan at de sidst indskrevne kommer nederst. Jeg vil gerne
vende det, så de sidst indskrevne kommer øverst. Jeg mener der skal rettes
noget i en af de linier, jeg har skrevet + foran, men hvad?
Råd modtages med glæde.
<%
' messagelist = liste over tidspunkt og besked for alle indsatte linier i
chatten.
Dim func, message
randomize
message = Left(Trim(Request("message")), 100)
func = LCase(Trim(Request("func")))
If (func = "") Then
Response.Write "<frameset rows=""*,100"">" & vbCrLf
Response.Write " <frame name=""messageframe""
src=""chat.asp?func=message"">" & vbCrLf
Response.Write " <frame name=""formframe"" src=""chat.asp?func=form"">" &
vbCrLf
Response.Write "</frameset>" & vbCrLf
ElseIf (func = "message") Then
If Not (message = "") Then
Application.Lock
+ messagelist = Application("messagelist")
+ Do While (UBound(split(messagelist, "<br>"))>30)
+ messagelist = Mid(messagelist, InStr(messagelist, "<br>")+4)
+ Loop
+ If Not (messagelist = "") Then messagelist = messagelist & "<br>"
+ messagelist = messagelist & "<b>" & Now & "</b>: " &
Server.HtmlEncode(message)
+ Application("messagelist") = messagelist
Application.UnLock
Else
messagelist = Application("messagelist")
End If
Response.Write "<META HTTP-EQUIV=""Refresh"" CONTENT=""15;
URL=chat.asp?func=message&rnd=" & ran & """>" & vbCrLf
Response.Write "<body bgcolor=#ffffff>" & vbCrLf
Response.Write messagelist & vbCrLf
Response.Write "</body>" & vbCrLf
ElseIf (func = "form") Then
Response.Write "<body bgcolor=#ffffff>" & vbCrLf
Response.Write " <form name=""chatform"" action=""chat.asp""
target=""messageframe""
onSubmit=""document.chatform.message.value=document.chatform.dummymessage.va
lue;document.chatform.dummymessage.value='';document.chatform.dummymessage.f
ocus();"">" & vbCrLf
Response.Write " <input type=hidden name=""func"" value=""message"">" &
vbCrLf
Response.Write " <input type=hidden name=""message"" value="""">" &
vbCrLf
Response.Write " <input type=text name=""dummymessage"" value=""""
maxlength=100>" & vbCrLf
Response.Write " <input type=submit value=""Send"">" & vbCrLf
Response.Write " </form>" & vbCrLf
Response.Write "</body>" & vbCrLf
Else
Response.Redirect "/"
End If
%>
v.h.
Jakob Munck
| |
Anders Holbøll (04-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 04-09-01 16:23 |
|
Jakob Munck wrote:
>
> Denne chatkode er lavet af Lauritz Jensen, og jeg og jeg forsøger
> at bruge den i stedet for database i en lille chat. Men koden her
> skriver chatlinierne ud sådan at de sidst indskrevne kommer
> nederst. Jeg vil gerne vende det, så de sidst indskrevne kommer
> øverst. Jeg mener der skal rettes noget i en af de linier, jeg
> har skrevet + foran, men hvad?
Prøv at skifte det med + markerede ud med:
messagelist = Application("messagelist")
messagelist = "<b>" & Now & "</b>: " & _
Server.HtmlEncode(message) & "<br>" & messagelist
messagelist = join(split(messagelist, "<br>", 30), "<br>")
Application("messagelist") = messagelist
--
Anders
| |
Jakob Munck (04-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 04-09-01 18:45 |
|
Tak for rådet, men det gav ikke det ønskede resultat, men der kom dog heller
ingen fejlmelding. ¨
Der kom - tilsyneladende - bare en masse nye linier med denne kode i den
sidste indtastning.
>
> Prøv at skifte det med + markerede ud med:
>
> messagelist = Application("messagelist")
> messagelist = "<b>" & Now & "</b>: " & _
> Server.HtmlEncode(message) & "<br>" & messagelist
> messagelist = join(split(messagelist, "<br>", 30), "<br>")
> Application("messagelist") = messagelist
>
> --
> Anders
| |
Anders Holbøll (05-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 05-09-01 14:15 |
|
Jakob Munck wrote:
> Anders Holbøll wrote:
> > Jakob Munck wrote:
> > >
> > > koden her skriver chatlinierne ud sådan at de sidst indskrevne
> > > kommer nederst. Jeg vil gerne vende det, så de sidst indskrevne
> > > kommer øverst.
> >
> > Prøv:
> > messagelist = Application("messagelist")
> > messagelist = "<b>" & Now & "</b>: " & _
> > Server.HtmlEncode(message) & "<br>" & messagelist
> > messagelist = join(split(messagelist, "<br>", 30), "<br>")
> > Application("messagelist") = messagelist
>
> Der kom - tilsyneladende - bare en masse nye linier med denne kode
> i den sidste indtastning.
Jeg forstår ikke hvad du mener. Men man kunne angribe problemet fra en
anden vingel og så samtidig optimerer lidt. Det sted, du markerede i
først post, udskifter du med:
messagelist = Application("messagelist")
If (messagelist = "") Then
messagelist = Replace(Space(29), " ", "<br>")
End If
messagelist = "<b>" & Now & "</b>: " & _
Server.HtmlEncode(message) & "<br>" & messagelist
messagelist = Left(messagelist, InStrRev(messagelist, "<br>") - 1)
Application("messagelist") = messagelist
(Gider du ikke at prøve at citere lidt bedre?
http://www.usenet.dk/netikette/quote.html )
--
Anders
| |
Jakob Munck (05-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 05-09-01 15:46 |
|
Hej Anders
tak for forslagene. Det sidste forslag får "chatten" vil at virke præcis som
den gjorde fra starten, nemlig sådan at den sidst indskrevne linie vises
neder, og ikke øverst, som det skal, hvis chatten skal anvendes i praksis
(efter min mening).
Men jeg er imponeret over, at du overhovedet kan finde ud af denne kode,
for - for mig - er den temmelig uforståelig.
Hvis det lykkes for dig at finde ud af, hvorda udskrivningen vender, så
sidst indskrevne linie vises øverst, så kan du måske også finde ud af, hvor
i koden man skal indsætte navnet på den person, der skriver indlægget. Det
er der nemlig ikke taget højde for i koden som den er nu.
v.h.
Jakob Munck
| |
Anders Holbøll (05-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 05-09-01 16:32 |
|
Jakob Munck wrote:
>
> Det sidste forslag får "chatten" vil at virke præcis som den gjorde
> fra starten, nemlig sådan at den sidst indskrevne linie vises neder,
> og ikke øverst, som det skal, hvis chatten skal anvendes i praksis
> (efter min mening).
Det forstår jeg ikke. Nu har jeg oven i købet testet det. Er du (helt)
sikker på at nyeste beskeder vises nederst?
> for mig [er koden] temmelig uforståelig.
Jamen, så er her jo en glimrende lejlighed til at blive bedre til asp.
Prøv at læse koden igennem og forstå den. Hvis du har konkrete
problemer, så prøv at stil dem her i gruppen, så er der sikkert nogen
der vil hjælpe dig.
> hvor i koden [skal man] indsætte navnet på den person, der skriver
> indlægget. Det er der nemlig ikke taget højde for i koden som den
> er nu.
Lige nu er der jo slet ikke nogen navne på brugene i chatten. Men der
skal jo laves et velkomstbillede, hvor man kan taste sit navn ind i en
formular. Dette navn skal så checkes, for om det er lovlig (det ikke er
for langt, ikke allerede er taget, osv.) og der på gemmes dels i en
session variabel og del i en liste i en application variabel (så man kan
se hvem der er i chatten og kan checke at nye brugere ikke også tager
navnet). Så skal der i linien, hvor en ny besked tilføjes til
messagelist indføjes navnet fra session-variablen.
--
Anders
| |
Jakob Munck (05-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 05-09-01 19:45 |
|
Ja, jeg er helt sikker på at koden skriver den sidst indskrevne linie ud
nederst, altså modsat det ønskede. Den kode jeg taler om er den - efter dine
råd - reviderede, og den er for klarheds skyld indsat neder i denne mail.
Jeg forstår ikke, hvis den skulle udskrive anderledes på din server end på
min (!!), det lyder temmelig usandsynligt.
Jeg vil være MEGET glad, hvis jeg kan bruge denne - for mig - temmelig svære
kode som udviklingsopgave, ikke kun fordi jeg skal bruge koden i praksis,
men også fordi den, som du siger, er rigtig god for mig at lære af. Hvis
du - og andre kloge - vil hjælpe med svar, så vil jeg meget gerne arbejde
videre med koden.
Men i første omgang er problemet altså det, at få den til at skrive ud
omvendt af hvordan den gør nu.
v.h.
Jakob
-----------------------------------------------
Her er koden:
<%
' messagelist = liste over tidspunkt og besked for alle indsatte linier i
chatten.
Dim func, message
randomize
message = Left(Trim(Request("message")), 100)
func = LCase(Trim(Request("func")))
If (func = "") Then
Response.Write "<frameset rows=""*,100"">" & vbCrLf
Response.Write " <frame name=""messageframe""
src=""chat.asp?func=message"">" & vbCrLf
Response.Write " <frame name=""formframe"" src=""chat.asp?func=form"">" &
vbCrLf
Response.Write "</frameset>" & vbCrLf
ElseIf (func = "message") Then
If Not (message = "") Then
Application.Lock
messagelist = Application("messagelist")
If (messagelist = "") Then
messagelist = Replace(Space(29), " ", "<br>")
End If
messagelist = "<b>" & Now & "</b>: " & _
Server.HtmlEncode(message) & "<br>" & messagelist
messagelist = Left(messagelist, InStrRev(messagelist, "<br>") - 1)
Application("messagelist") = messagelist
Application.UnLock
Else
messagelist = Application("messagelist")
End If
Response.Write "<META HTTP-EQUIV=""Refresh"" CONTENT=""15;
URL=chat.asp?func=message&rnd=" & ran & """>" & vbCrLf
Response.Write "<body bgcolor=#ffffff>" & vbCrLf
Response.Write messagelist & vbCrLf
Response.Write "</body>" & vbCrLf
ElseIf (func = "form") Then
Response.Write "<body bgcolor=#ffffff>" & vbCrLf
Response.Write " <form name=""chatform"" action=""chat.asp""
target=""messageframe""
onSubmit=""document.chatform.message.value=document.chatform.dummymessage.va
lue;document.chatform.dummymessage.value='';document.chatform.dummymessage.f
ocus();"">" & vbCrLf
Response.Write " <input type=hidden name=""func"" value=""message"">" &
vbCrLf
Response.Write " <input type=hidden name=""message"" value="""">" &
vbCrLf
Response.Write " <input type=text name=""dummymessage"" value=""""
maxlength=100>" & vbCrLf
Response.Write " <input type=submit value=""Send"">" & vbCrLf
Response.Write " </form>" & vbCrLf
Response.Write "</body>" & vbCrLf
Else
Response.Redirect "/"
End If
%>
| |
Anders Holbøll (07-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 07-09-01 12:35 |
|
Jakob Munck wrote:
>
> Ja, jeg er helt sikker på at koden skriver den sidst indskrevne
> linie ud nederst, altså modsat det ønskede. Den kode jeg taler
> om er den - efter dine råd - reviderede, og den er for klarheds
> skyld indsat neder i denne mail.
Jeg ville nok checke en ekstra gang, at den kode du har i din editor, er
den samme som den du ser på med din browser. Det er sket får, at man har
siddet og rettet i en backup og derfor ikke ser ændriger i browseren
eller at iis har cachet koden.
--
Anders
| |
Jakob Munck (06-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 06-09-01 07:46 |
|
> Lige nu er der jo slet ikke nogen navne på brugene i chatten. Men der
> skal jo laves et velkomstbillede, hvor man kan taste sit navn ind i en
> formular. Dette navn skal så checkes, for om det er lovlig (det ikke er
> for langt, ikke allerede er taget, osv.) og der på gemmes dels i en
> session variabel og del i en liste i en application variabel (så man kan
> se hvem der er i chatten og kan checke at nye brugere ikke også tager
> navnet). Så skal der i linien, hvor en ny besked tilføjes til
> messagelist indføjes navnet fra session-variablen.
>
Jeg skal lige sige, at jeg rent faktisk allerede har en fungerende
databasebaseret chat, hvor alt dette fungerer, men den kode vi her
diskuterer vil jeg indføre i min eksisterende chat for at lave
opdateringsblinkene mindre. Når man bruger en Access-database er disse
opdateringsblink, som kommer hvert 10. sekund af ca. 1 sekunds varighed, og
det er lang tid og derfor generende. Hvis man i stedet lavet en
Applications-objekt-baseret chat, så er disse blink kortere og mindre
generende.
Med herværende kode, som er en særlig optimeret form for Application-objekt
chat er blinkene så små og hurtige som de overhovedet kan blive (tror jeg),
og derfor vil jeg indføre de centrale dele af herværende kode i min
nuværende chat - altså hvis herværende kode kommer til at virke med sidste
linie øverst og med brugerens navn (som i forvejen ligger i en
sessionvariabel) ud for hvert indlæg.
Men, som sagt, jeg forstår ikke koden.
v.h.
Jakob
| |
Anders Holbøll (07-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 07-09-01 12:38 |
|
Jakob Munck wrote:
>
> [brug af databaser til chat er langsomt]
> Med herværende kode, som er en særlig optimeret form for
> Application-objekt chat er blinkene så små og hurtige som
> de overhovedet kan blive (tror jeg),
Du kan naturligvis gøre "blinkene" kortere ved bruge af dhtml. Det er jo
det flere af de "store chats" gør.
--
Anders
| |
Jakob Munck (07-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 07-09-01 14:15 |
|
Jeg har fundet noget ny kode, der - i princippet - er ligesom den jeg her
lagde frem, men den udskriver bare omvendt, altså sådan som jeg vil have
det. Den er jeg ved at gøre i stand.
>
> Du kan naturligvis gøre "blinkene" kortere ved bruge af dhtml. Det er jo
> det flere af de "store chats" gør.
>
Hvordan kan man bruge dhtml til at gøre blinkene kortere, det forstår jeg
ikke ?
v.h.
Jakob Munck
| |
|
|