Avatar billede steen_hansen Forsker
03. maj 2003 - 23:23 Der er 24 kommentarer og
1 løsning

DELETE from MinTabel WHERE ........

Jeg har et community, hvor der er et internt besked-system til brugerne.

Når en bruger modtager en besked, bliver div. informationer trukket ud:

[En checkbox, som brugeren kan hakke af i]
Afsenders navn
Emne
Dato og tidspunkt for afsendelse

Nederst på siden har jeg en "Slet markerede beskeder" submit-knap.

Når brugeren hakker af ud for en eller flere bestemte beskeder og trykker på submit-knappen, er det meningen, at der skal komme en msgbox: "Er du sikker? Handlingen kan ikke fortrydes!" -> [OK] - [Annuller]. Trykker brugeren på [OK], skal de markerede beskeder slettes.

Koden til default.asp:

<html>

<head>
<title>Min hjemmeside</title>
</head>

<body>

<form ...... ved ikke helt hvad der skal stå her>
<table ........>
<tr>
<% Do Until RS.EOF %>
<td>

<% CHECKBOX START %>
<input type="checkbox" name="delete_this_message" value="ON">
<% CHECKBOX SLUT %>

</td>
<td><a href="profile.asp?user=<% Response.Write Server.URLEncode(vUser)%>"><%=Server.HTMLEncode(vUser)%></a></td>
<td><a href="read.asp?mailID=<%=RS("mailID")%>"><% If Trim(RS("subject")) = "" Then Response.Write "(Intet emne)" Else Response.Write RS("subject") End If %></a></td>
<td><%=RS(Dato)%></td>
</tr>
<tr>
<td>

<%
RS.MoveNext
Loop

RS.Close
Conn.Close
%>

<input type="submit" value="Slet markerede beskeder" name="delete_messages" class="input1">
</td>
</form>
</tr>
</table>

</body>
</html>

Spørgsmålet består af to dele:

1. Når en eller flere checkboxe er markeret, skal der komme en messagebox frem, hvor bruger skal bekræfte eller annullere sletningen.

2. Beskeden skal slettes fra databasen.
Avatar billede eagleeye Praktikant
03. maj 2003 - 23:31 #1
1. Kan klares med et javascript som søger om de markerede skal slettes når man trykke på Slet knapen.

2. Skal det være på samme side??

HVis du i stedet for "ON" som value på checkboken bruger ID på den besked som skal slettes så kan du slette dem alle på en gang med en SQL sætning.
Avatar billede eagleeye Praktikant
03. maj 2003 - 23:33 #2
1.: Du laver en function som denne


<script>
function confirmDelete() {
  if (confirm("Er du sikker? Handlingen kan ikke fortrydes!")) {
    return true;
  }
  return false;
}
</script>



I form tagen laver du et kald til funktionen

<form action="" method="post" onSubmit="return confirmDelete();">
Avatar billede eagleeye Praktikant
03. maj 2003 - 23:36 #3
Den SQL du slette med kan så være:

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  sletDisse = Request.Form("delete_this_message")
  if sletDisse <> "" then
    SQL = "DELETE FROM xxx WHERE id IN (" & sletDisse & ")"

    Conn.Execute(SQL)
    Conn.Close
  end if
 
  Response.Redirect("sammeside_.asp")
end if
Avatar billede steen_hansen Forsker
03. maj 2003 - 23:39 #4
Hej eagleeye!

1. Vil jeg meget gerne se :o) Jeg havde et link ud for hver besked (en skraldespand/papirkurv). Koden:

<a title="Slet '<%=FormatText(RS("subject"))%>' fra <%=FormatText(RS("author"))%>? Denne handling kan ikke fortrydes!" href="#" onclick="if(confirm('Er du sikker?')) window.location.href='delete.asp?mailID=<%=RS("mailID")%>'" onFocus="this.blur()"><img border="0" width="14" height="13" src="../artikler/admin/postkassen/maildelete.gif" alt="Slet '<%=Server.HTMLEncode(RS("subject"))%>' sendt af <%=Server.HTMLEncode(RS("author"))%>"></a>

Men den kan ikke umiddelbart benyttes?

2. Jeg HAR en SQL-sætning, som kan slette samtlige beskeder, den er på plads. Problemet er, at man skal kunne vælge en eller flere beskeder ud og kun slette de valgte.
Avatar billede steen_hansen Forsker
03. maj 2003 - 23:41 #5
Jeg prøver lige dit forslag, havde ikke set du havde postet så meget :o)
Avatar billede steen_hansen Forsker
03. maj 2003 - 23:49 #6
Skal

<script>
function confirmDelete() {
  if (confirm("Er du sikker? Handlingen kan ikke fortrydes!")) {
    return true;
  }
  return false;
}
</script>

stå mellem <head></head>?
Avatar billede eagleeye Praktikant
03. maj 2003 - 23:51 #7
Ja det skal det, men det er vist ikke strengt nødvndig det er der imellem.
Avatar billede steen_hansen Forsker
03. maj 2003 - 23:52 #8
Ok, prøver :o)
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:03 #9
Jeg har lige et lille problem:

Min checkbox ser sådan ud:

<input type="checkbox" name="delete_this_message" value="ON">

Skulle den ikke ændres? Fejl:

Microsoft JET Database Engine error '80040e10'
Der er ikke angivet nogen værdi for en eller flere krævede parametre.

default.asp, line 151

Linie 151: Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
04. maj 2003 - 00:04 #10
Jo. Hvis du ligger ID på den mail som skal slettes ind i value delen i stedet for ON så ved du hvilke der skal slettes. Du frå nemlig kun det som står i value hvis man har sat kryds i checkboken.:

<input type="checkbox" name="delete_this_message" value="<%=rs("mailID")%>">
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:06 #11
Hm, jeg får samme fejl :o(
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:08 #12
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" then
    MessagesToDelete = Request.Form("delete_this_message")
    If MessagesToDelete <> "" then
        SQL = "DELETE FROM mail WHERE id IN (" & MessagesToDelete & ")"
        Conn.Execute(SQL)
        Conn.Close
    End If

    Response.Redirect("default.asp")
End If
%>

Hvad betyder "IN" i linien

SQL = "DELETE FROM mail WHERE id IN (" & MessagesToDelete & ")"

...?
Avatar billede eagleeye Praktikant
04. maj 2003 - 00:08 #13
Hvordan ser din SQL sætning ud?
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:09 #14
Det var den du mente, ikke?
Avatar billede eagleeye Praktikant
04. maj 2003 - 00:10 #15
IN betyder den kan tage en komma seperet liste:

id IN (2,4,7,9)

i stedet for. id=2 OR id=4 OR id=7


Din kolonne id hed vist mailID ? Så

SQL = "DELETE FROM mail WHERE mailid IN (" & MessagesToDelete & ")"
Avatar billede eagleeye Praktikant
04. maj 2003 - 00:11 #16
Ja det var den, jeg så ikke du havde vist den før jeg havde trykket :)
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:12 #17
Hold tææft, hvor det kører! Det virker jo! :o)

Tak for hjælpen, bedste ven! :o)

Læg lige et svar.
Avatar billede eagleeye Praktikant
04. maj 2003 - 00:13 #18
;) her er et svar.
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:13 #19
Min nye, bedste ven, TAK :o)
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:16 #20
HOV! Jeg valgte lige et par tilfældige, og så slettede den sq samtlige beskeder?
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:18 #21
Nej, glem det, jeg kan ikke fremprovokere fejlen igen :o)
Avatar billede eagleeye Praktikant
04. maj 2003 - 00:18 #22
Samtlige?

Kan der være flere modtagere til samme beskeder?
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:32 #23
Nej, man kan videresende én besked til én person, eller man kan besvare en besked, men man kan ikke sende den samme besked til flere forskellige brugere på én gang. Skal man have den samme besked ud til flere brugere, må man gå ind i den og videresende den til den eller de personer, som skal modtage den.

Jeg har også en funktion, der markerer samtlige beskeder, men jeg er 110% sikker på, at de ikke var markeret allesammen. Jeg ved ikke hvad der skete, så skidt. Jeg vil teste igennem de næste par dage og se om det kan ske igen. Sker det igen, hører du fra mig, men det ser ikke ud til, at jeg kan gentage tricket :o)
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:38 #24
Det virker fint, eagleeye. Endnu en gang tak :o)
Avatar billede steen_hansen Forsker
04. maj 2003 - 00:56 #25
Det er FEDT! Vi snakkes :o)
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