webForumDet fria alternativet

radera x 2

9 svar · 272 visningar · startad av lillen_009

lillen_009Medlem sedan nov. 2002137 inlägg
#1

Jag har ett litet problem...

Jag håller på och gör en funktion så att man kan skicka privata meddelanden till varandra. Har fått problem med raderingsbiten. Koden under tar bort flera marerade inlägg precis som jag vill. Nu är det så att när man raderar ett från utkorgen som ännu inte blivit läst så vill jag även ta bort det från andra personens inkorg. Hur kan man göra det på ett bra sätt?

meddelandena ligger som två rader i databasen. Det gäller ASP/MySQL.

Har en relation mellan raderna i databasen.
Ex på hur databasen ser ut

IsmID______sender_____receiver_____original_____showed
234________34_________45__________0___________0000-00-00 00:00:00
235________34_________45__________234________0000-00-00 00:00:00
236________13_________42__________0___________0000-00-00 00:00:00
237________13_________42__________236________2003-09-29 18:16:12

skickade meddelanden får original=0. Vill jag radera post med ID=234 så ska alltså även 235 raderas eftersom där inte fnn något datum i kolumnen showed. Vill jag även radera ID=236 ska inte ID=237 raderas eftersom meddelande redan kommit fram och lästs.

Dim alsmID1, SQL1 
alsmID1 = split(request.form("IsmID"), ", ") 
for i=0 to UBound(alsmID1) 
SQL1 = "DELETE FROM ism WHERE IsmID="& alsmID(1) & " AND sender="&request.form("sender") 
Set RS1 = con.execute(SQL1)

(delar kommer från en tidigare tråd på wF)

Vore mycket, mycket tacksam om någon kunde hjälpa mig en bit iallafall

LarsGMedlem sedan dec. 200012 464 inlägg
#2
sql1 = "delete from ism where (IsmID="& alsmID(1) &_
 " AND sender="&request.form("sender") & _
") or (original = " & alsmID(1) & _
" and showed = '0000-00-00 00:00:00') "
lillen_009Medlem sedan nov. 2002137 inlägg
#3

tack, men får 0x800A000D "inkompatibla typer. Det går inte ens med response.wrte SQL1. Felet kommer då med

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Hmm

Kan du visa lite mer kod markera vilken rad som orsakar felet?

Hur är alsmid definierad?

lillen_009Medlem sedan nov. 2002137 inlägg
#5

allt jag skrivit om alsmid står i första meddeladet. felet pekar på din SQL-rad.

det fungerar med min inledande kod att radera flera poster. problemet kommer när man vill radera även de som är skickade men ännu inte lästa

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Borde det inte stå almsid(i) istället?

lillen_009Medlem sedan nov. 2002137 inlägg
#7

ja, såklart ska det vara så. Det ville sig inte iallafall. Samma fel.

 Dim alsmID1, SQL1
alsmID1 = Split(request.form("IsmID"), ",")
for i=0 to UBound(alsmID1)
SQL1="DELETE FROM ism WHERE (IsmID="& alsmID(i) & " AND sender="&request.form("sender") & ") or (original = " & alsmID(i) & " and showed = '0000-00-00 00:00:00') "
Set rs1 = con.execute(SQL1)
next
lillen_009Medlem sedan nov. 2002137 inlägg
#8

showed är ett datumfält som ska vara tomt...

0000-00-00 00:00:00 är inputmasken

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Får du samma fel (0x800A000D "inkompatibla typer)?

Om du med tomt menar null så skall du använda

sql1 = "delete from ism where (IsmID="& alsmID(i) &_
 " AND sender="&request.form("sender") & _
") or (original = " & alsmID(i) & _
" and showed is null) "
connect.execute sql1,,128

Det behövs inget recordset när du gör execute.

lillen_009Medlem sedan nov. 2002137 inlägg
#10

ska det vara ,,128?

Om det ska vara så, så blev det ingen skillnad. Börjar ge upp nu. Får designa om tabellen i databasen och lösadet på annat sätt. *suck*

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)