Redigera inlägg i forum

ASP

24 svar · 338 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Trådstart#1

Nu tror jag att jag bara har en fråga kvar om mitt forum.

Jag skulle vilja ha möjligheten att låta den person som har skrivit inlägget redigera inlägget också.
Dvs Ett enlägg har gjorts, efter någon tid (timmar eller dagar) så kommer samma person tillbaka och vill redigera sin egen (bara den) text.
Att det måste vara någon form av "kaka" förstår jag, men hur?? :q

Någon som vet?

Medlem sedan okt. 20001 558 inlägg
#2

Du har ingen inlogging eller?

Då får du sätta en cookie med ett unikt tal i som du sedan får lägga in i db och sedan jämföra med när personen ifråga vill redigera.

Medlem sedan mars 20011 880 inlägg
#3

Nej jag har inte det.
Mina tankar har gått mot att ha en kaka med ID:t, men frågan är hur.
Vad tror ni om någonting åt detta hållet?

Response.kaka("redigera")("id") = RS("id")

Och sedan lägga den där man stoppar in informationen i databasen.
Skulle det fungera tros? :q

Medlem sedan okt. 20001 558 inlägg
#4

Men ifall man skriver 2 inlägg då? Borde det inte bli lite fel då...

Medlem sedan mars 20011 880 inlägg
#5

Hehe, jo det är därför som jag frågar, jag kom inte förbi det.
Men allting liger ju i samma tabell, inlägg som uppföljare så id är ju unikt.
Problemet, om han har skrivit mer än ett inlägg, hur skall man lagra det?

Medlem sedan okt. 20001 558 inlägg
#6

Fråga någon som är bättre än mig ;)

Vide, @nders, emission, LarsG, PatrikB osv..

Medlem sedan dec. 19998 577 inlägg
#7

Du skulle kunna tilldela namnet på kakan dynamiskt:

Response.kaka("redigera")(RS("id")) = 1

Sedan när du hämtar just det inlägget så kollar du bara om kakan finns (du har ju kaknamnet i ID:t) och om den är satt till 1.

If Request.kaka("redigera")(RS("id")) = 1 Then
'Du får redigera
End If

Ett bättre sätt skulle vara att lagra all ID:n i samma kaka... Det skulle gå till så att du först kollar om kakan finns, finns den så plockar du ut värdet, lägger till det nya värdet tillsammans med det gamla och stoppar tillbaks det igen... förslagsvis i en kommaseparerad lista...

kaka = Request.kaka("redigera")
kaka = kaka & ","&RS("id")

Självklart måste du modifiera lite och och göra lite extra kontroller för att det skall fungera på ett bra sätt... :)

Lycka till!

Medlem sedan mars 20011 880 inlägg
#8

Tack Vidde men det blev patrull med en gång.

ERROR:
Cookies-objekt, ASP 0105 (0x80004005)
Ett matrisindex ligger utanför intervallet.
/Cossacks/Forum/Index.asp, line 150

och det är just den här snutten:
If Request.kaka("redigera")(RS("id")) = 1 Then
'Du får redigera
End If

Sen måste jag fråga, vilka extra kontroller tänkte du på?

Medlem sedan dec. 19998 577 inlägg
#9

Just den kontrollen som du visar nu skall du ju köra när du hämtat ett inlägg... alltså MÅSTE det finnas ett värde i RS("id") vid tillfället... Möjligtvis kan du testa att konvertera till sträng när du lägger till kakan:

Response.kaka("redigera")(Cstr(RS("id"))) = 1

Extra kontroller kan vara att inte lägga till ett komma i kakan om det inte finns ett värde ifrån början...

Mvh, Vide

Medlem sedan mars 20011 880 inlägg
#10

Jag kanske började lite bakvänt, men jag använde din kodsnut för att visa (trots att det inte finns någon kaka än) och det var ju där det första felet kom. Nu räckte det tydligen med den justeringen.
Nästa fråga, jag måste ju fånga upp det nya ID:t.
Vilken metod är då bäst? Ny SQL med SELECT TOP1 ID ? :q

Medlem sedan dec. 19998 577 inlägg
#11

Eller så lägger du in ett unikt slumpnummer i varje post som du sedan kan använda för att hämta ID:t...

Eller så använder du ett RecordSet (var det jag som sa det? :e) för att lägga till...

Medlem sedan dec. 200012 464 inlägg
#12

Om du använder Acecss 2000(Jet 4.0) eller SQL server så är det bättre att använda

  select @@identity

för att få tag på räknarens värde för din senast inlagda post.

Medlem sedan mars 20011 880 inlägg
#13

Nja, jag måste ju rätta mig efter den serverns programvara, där filerna ligger. Vad jag förstår så utesluter det select @@identity.
Slumpnummer, innebär att jag måste lägga till flera fält, kanske.
Recordset, då är jag väl där som jag skrev om sist? Select top 1 ID?

Medlem sedan mars 20011 880 inlägg
#14

Nu står jag här helt handfallen.
Jag jobbar med:

SQLStmt = "SELECT TOP 1 ID"
Response.write SQLStmt
Connection.Execute(SQLStmt)

kaka = Request.Cokies("redigera")
kaka = kaka & ","&RS("id")
Men borde det inte stå:

Request.Cokies("redigera")=Request.Cokies("redigera")
Request.Cokies("redigera")=Request.Cokies("redigera") & ","&RS("id") eller är jag helt ute och flyger? :x

Medlem sedan dec. 19998 577 inlägg
#15
SQLStmt = "SELECT TOP 1 ID From tabell"
Connection.Execute(SQLStmt)

kaka = Request.Cokies("redigera")
kaka = kaka & ","&RS("id")
Response.Cokies("redigera") = kaka
Medlem sedan mars 20011 880 inlägg
#16

Om livet ändå hade varit så enkelt:

Inkompatibla typer
/Cossacks/Forum/Newinsert.asp, line 47
Error pekar på denna rad:
kaka = kaka & ","& RS("id")
Jag försökte att lägga Cint runt ID:t men samma fel.
Vad göra? :q

Medlem sedan mars 2001484 inlägg
#17

Appropå ingenting: Vide, är du nöjd med IE6-betan? :)

Medlem sedan dec. 19998 577 inlägg
#18

Jodå, IE-betan fungerar bra... men vissa säkerhetssajter släpper inte in mig ännu...

saw, testa att skriva ut kakans värde och RS("id")-värdet till HTML och se vad du får...

Medlem sedan mars 20011 880 inlägg
#19

Jag är fortfarande ganska så konfundersam. Så här är det nu (inga fel)

SQLStmt = "SELECT TOP 1 ID From Forum"
SET RS = Connection.Execute(SQLStmt)
strID = RS("id")
kaka = Request.Cokies("redigera")
kaka = kaka & ","& strID
Response.Cokies ("redigera") = kaka
Vilket gör att här kan jag skriva ut cokiesen:
Response.Write "<BR>Cookies: " & Request.Cokies("redigera")

Jag får då följande resultat:
ID: 1
Cokies: ,,1
Detta är ju galet också det skulle visa nr 34, jag kanske skulle använda mig av MAX?
Just nu så finns alltså två kommatecken i cociesens redigera.
Bör jag inte ha en undernyckel? Var skall jag lägga till 1?

Jag har svårt att inse att jag skall få fram någonting med detta:

If Request.Cokies("redigera")(Cstr(RS("id"))) = 1 Then
Vad göra? :q

Medlem sedan mars 20011 880 inlägg
#20

Jag chansar villt här nu.
Nu fungerar denna biten:

SQLStmt = "SELECT Max(Forum.Id) AS MaxförId FROM Forum"
SET RS = Connection.Execute(SQLStmt)

strID = RS("MaxförId")
kaka = Request.Cokies("redigera")
kaka = kaka & ","& strID
Response.Cokies ("redigera") = kaka
Response.Cokies ("redigera")("id")=1
(är det rätt att tilldela så här?)
PROBLEM:

Jag kan inte förstå hur jag skall hämta upp det på annat vis än:

IfRequest.Cokies("redigera") = (Cstr(RS("id"))) AND Request.Cokies("redigera")("id")=1 THEN

Men här stöter jag på patrull igen.

Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.
/Cossacks/Forum/Index.asp, line 147, column 89
IfRequest.Cokies("redigera") = (Cstr(RS("id"))) AND Request.Cokies("redigera")("id")=1 THEN

Jag ser ingenting som ser mer fel ut än det andra... :(

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)