Avatar billede ze-men Nybegynder
06. marts 2006 - 22:34 Der er 10 kommentarer og
1 løsning

Hjælp med sletning af meil i dette interne mailsystem

Hej eksperten..

Jeg roder med et community i ASP, der kører på Access-databaser.

Jeg vil gerne lave en funktion om i det interne postsystem. Jeg vil gerne give brugeren mulighed for at slette flere mails på samme tid!


HER FØLGER FORBINDELSEN TIL DATABASEN:
<%

nextPage = TRIM( Request("nextPage"))
IF nextPage = "" THEN nextPage = 1

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas/databas.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM mess where vems = '"&session("id")&"' order by id desc"
rs.Open Addera, Connect, 3, 3

if request.querystring("action")="tabort" then

if rs("vems")<>session("id") then
response.redirect "las_mess.asp"
end if
rs.delete
rs.update
response.redirect "las_mess.asp"
end if
%>


OG HER UDSNITTET MED INBOX-OPLYSNINGERNE:
      <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
            <td><table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="mainTabel">
              <tr>
                <td width="5%">
                  <% if rs("last")="0" then%>
&nbsp;<img src="bilder/new_posts_icon.gif" width="18" height="12" align="absmiddle">
      <% else %>
&nbsp;<img src="bilder/no_new_posts_icon.gif" width="18" height="12" align="absmiddle">
      <% end if%>
&nbsp;</td>
                <td width="40%"><a href="las_mess2.asp?id=<%=rs("id")%>"><%=rs("titel")%></a></td>
                <td width="40%">
                  <div align="left"><%=rs("fran")%></div></td>
                <td width="5%">
                  <div align="right"><a href="las_mess.asp?action=tabort&id=<%=rs("id")%>">&nbsp;</a></div></td>
                <td width="10%"><div align="center"><a href="las_mess.asp?action=tabort&id=<%=rs("id")%>"><img src="bilder/delete_icon.gif" width="15" height="16" align="absmiddle" border=0></a></div></td>
              </tr>
            </table>          </td>
        </tr>
          <tr>
            <td><img src="../grafik/line_skiller.gif" width="600" height="1">              </td>
          </tr>
          <tr>
            <td><table width="600" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td width="500" height="36" class="fontLille">
                  <%
end if
rs.movenext
loop
%>


Jeg håber nogle kan hjælpe.....
Avatar billede fennec Nybegynder
07. marts 2006 - 08:28 #1
Du kan gøre brug af checkboxe og IN() metoden:

<%
if Request.Form("mode") = "slet" then
  if Request.Form("messID") <> "" then
    Connect.execute("delete from mess where vems = '"&session("id")&"' and id in("& Request.Form("messID") &")")
  end if
end if
%>

<form name="myForm" method="post" action="DenneSide.asp">
<input type="Hidden" name="mode" value="">
<%
while not rs.eof %>
<input type="Checkbox" name="messID" value="<%= rs("id") %>"><%=rs("titel")%><br>
<%
  rs.MoveNext
wend
%>
<input type="Button" value="SletValgte" onClick="this.form.mode.value='slet';this.form.submit();return false;">

</form>
Avatar billede ze-men Nybegynder
07. marts 2006 - 09:25 #2
Hej igen...

Takfor svaret. Det virker nu, men der sker en fejl!

Fejlen i browseren hedder:
ADODB.Recordset error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Request operation requires a current record.

/7/las_mess.asp, line 103


Hmm, jeg har prøvet at slette den "move-next"-kode-funktion, men så sker der yderligere en fejl. Herunder følger størstedelen af koden til inboksen af postsystemet - så se om du kan finde ud af hvor den går galt:


<%

nextPage = TRIM( Request("nextPage"))
IF nextPage = "" THEN nextPage = 1

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas/databas.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM mess where vems = '"&session("id")&"' order by id desc"
rs.Open Addera, Connect, 3, 3

if request.querystring("action")="tabort" then

if rs("vems")<>session("id") then
response.redirect "las_mess.asp"
end if
rs.delete
rs.update
response.redirect "las_mess.asp"
end if
%>
        <%
rs.PageSize = 10
if not rs.EOF then
rs.AbsolutePage = nextPage
%>
        <% END IF
Do until rs.EOF OR rowCount = rs.PageSize
if rs("id") <> session("id") then
rowCount = rowCount + 1
%><br>
<%
if Request.Form("mode") = "slet" then
  if Request.Form("messID") <> "" then
    Connect.execute("delete from mess where vems = '"&session("id")&"' and id in("& Request.Form("messID") &")")
  end if
end if
%>
</span>
      <form name="myForm" method="post" action="las_mess4.asp">
        <input type="Hidden" name="mode" value="">
        <%
while not rs.eof %>
        <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td><table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="mainTabel">
                <tr>
                  <td width="5%">
                    <% if rs("last")="0" then%>
&nbsp;<img src="bilder/new_posts_icon.gif" width="18" height="12" align="absmiddle">
            <% else %>
&nbsp;<img src="bilder/no_new_posts_icon.gif" width="18" height="12" align="absmiddle">
            <% end if%>
&nbsp;</td>
                  <td width="5%"><input type="Checkbox" name="messID" value="<%= rs("id") %>"></td>
                  <td width="40%">
                    <div align="left"><a href="las_mess2.asp?id=<%=rs("id")%>"><%=rs("titel")%></a></div></td>
                  <td width="40%">
                    <div align="left"><a href="las_mess.asp?action=tabort&id=<%=rs("id")%>"><%=rs("fran")%>&nbsp;</a></div></td>
                  <td width="10%"><div align="center"><a href="las_mess.asp?action=tabort&id=<%=rs("id")%>"><img src="bilder/delete_icon.gif" width="15" height="16" align="absmiddle" border=0></a></div></td>
                </tr>
            </table></td>
          </tr>
          <tr>
            <td><img src="../grafik/line_skiller.gif" width="600" height="1">
            <%
  rs.MoveNext
wend
%> <input name="Button" type="Button" onClick="this.form.mode.value='slet';this.form.submit();return false;" value="SletValgte"></td>
          </tr>
          <tr>
            <td><table width="600" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="500" height="36" class="fontLille">
                    <%
end if
rs.movenext
loop
%>
            Postkassen indeholder<span style="font-weight: bold"> <%=mess%></span> ul&aelig;ste breve.<br>
            <%
IF rs.PageCount > 1 THEN

%>
            Side:
            <%
    FOR a = 1 to rs.PageCount
IF a <> cINT( nextPage ) THEN %>
            <% if request.querystring("sort")="" then %>
            <a href="las_mess.asp?nextPage=<%=a%>"><%=a%></a>
            <% else %>
            <a href="las_mess.asp?nextPage=<%=a%>&sort=<%=request.querystring("sort")%>"><%=a%></a>
            <% end if
ELSE %>
            <%=a%>
            <%
END IF
NEXT
end if
      %></td>
                </tr>
            </table></td>
          </tr>
        </table>
<br>
            </form>
      <span class="bodyProfiltekst">


- men det er et godt tegn at det virker med at slette dem man har vangt!
Avatar billede fennec Nybegynder
07. marts 2006 - 09:37 #3
if Request.Form("mode") = "slet" then
...

skal ikke stå inde i loopet. Du kan desuden med fordel lave en redirect deri, så opstår "submit igen" problemet nemlig ikke hvis brugeren trykker på tilbage knappen:

<%

nextPage = TRIM( Request("nextPage"))
IF nextPage = "" THEN nextPage = 1

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas/databas.mdb")

if Request.Form("mode") = "slet" then
  if Request.Form("messID") <> "" then
    Connect.execute("delete from mess where vems = '"&session("id")&"' and id in("& Request.Form("messID") &")")
  end if
  response.redirect("las_mess4.asp")
end if

Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM mess where vems = '"&session("id")&"' order by id desc"
rs.Open Addera, Connect, 3, 3

if request.querystring("action")="tabort" then

if rs("vems")<>session("id") then
response.redirect "las_mess.asp"
end if
rs.delete
rs.update
response.redirect "las_mess.asp"
end if
%>
        <%
rs.PageSize = 10
if not rs.EOF then
rs.AbsolutePage = nextPage
%>
        <% END IF
Do until rs.EOF OR rowCount = rs.PageSize
if rs("id") <> session("id") then
rowCount = rowCount + 1
%><br>
</span>
      <form name="myForm" method="post" action="las_mess4.asp">
        <input type="Hidden" name="mode" value="">
        <%
while not rs.eof %>
        <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td><table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="mainTabel">
                <tr>
                  <td width="5%">
                    <% if rs("last")="0" then%>
&nbsp;<img src="bilder/new_posts_icon.gif" width="18" height="12" align="absmiddle">
            <% else %>
&nbsp;<img src="bilder/no_new_posts_icon.gif" width="18" height="12" align="absmiddle">
            <% end if%>
&nbsp;</td>
                  <td width="5%"><input type="Checkbox" name="messID" value="<%= rs("id") %>"></td>
                  <td width="40%">
                    <div align="left"><a href="las_mess2.asp?id=<%=rs("id")%>"><%=rs("titel")%></a></div></td>
                  <td width="40%">
                    <div align="left"><a href="las_mess.asp?action=tabort&id=<%=rs("id")%>"><%=rs("fran")%>&nbsp;</a></div></td>
                  <td width="10%"><div align="center"><a href="las_mess.asp?action=tabort&id=<%=rs("id")%>"><img src="bilder/delete_icon.gif" width="15" height="16" align="absmiddle" border=0></a></div></td>
                </tr>
            </table></td>
          </tr>
          <tr>
            <td><img src="../grafik/line_skiller.gif" width="600" height="1">
            <%
  rs.MoveNext
wend
%> <input name="Button" type="Button" onClick="this.form.mode.value='slet';this.form.submit();return false;" value="SletValgte"></td>
          </tr>
          <tr>
            <td><table width="600" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="500" height="36" class="fontLille">
                    <%
end if
rs.movenext
loop
%>
            Postkassen indeholder<span style="font-weight: bold"> <%=mess%></span> ul&aelig;ste breve.<br>
            <%
IF rs.PageCount > 1 THEN

%>
            Side:
            <%
    FOR a = 1 to rs.PageCount
IF a <> cINT( nextPage ) THEN %>
            <% if request.querystring("sort")="" then %>
            <a href="las_mess.asp?nextPage=<%=a%>"><%=a%></a>
            <% else %>
            <a href="las_mess.asp?nextPage=<%=a%>&sort=<%=request.querystring("sort")%>"><%=a%></a>
            <% end if
ELSE %>
            <%=a%>
            <%
END IF
NEXT
end if
      %></td>
                </tr>
            </table></td>
          </tr>
        </table>
<br>
            </form>
      <span class="bodyProfiltekst">
Avatar billede ze-men Nybegynder
07. marts 2006 - 09:49 #4
Hmm, den skriver stadig "fejl" - samme fejl som pør. Denne gang på "line 100"..

På line 100 ligger følgende:
98                    <%
99 end if
100 rs.movenext
101 loop

.... Hmm....
%>
Avatar billede fennec Nybegynder
07. marts 2006 - 10:08 #5
Der er et eller andet helt galt i dine løkker:

Do until rs.EOF OR rowCount = rs.PageSize
  if rs("id") <> session("id") then
  ...
    while not rs.eof
      ...
      rs.MoveNext
    wend
  ...
  end if
  rs.movenext
loop

Hvis du kommer ind i innerløkken, løber den jo til EOF, også får du selevfølgelig en fejl på den sidste MoveNext, da den jo ikke kan flytte længere...

Enten skal du have fjernet inner loopet, eller også skal du have lavet et tjek på den sidste MoveNext:
  ...
  if not rs.eof then rs.movenext
loop
Avatar billede ze-men Nybegynder
07. marts 2006 - 10:27 #6
Hmm, ja..

Kande tvære i een af de her to??

      <%
rs.PageSize = 10
if not rs.EOF then
rs.AbsolutePage = nextPage
%>
        <% END IF
Do until rs.EOF OR rowCount = rs.PageSize
if rs("id") <> session("id") then
rowCount = rowCount + 1
%>

Men hvordan kan jeg så holde styr på løkkerne? Det er vel øverste og nederste der hører sammen - og næst øverste og næst nederste der hører sammen, eller??
Avatar billede fennec Nybegynder
07. marts 2006 - 10:45 #7
Jeg kan ikke forstå hvorfor du overhoved har løkker i løkker. Hvad skal
if rs("id") <> session("id") then

.. gøre godt for, og hvorfor udskriver du resten af RS, hvis du kommer herind?? En af de rækker som du udskriver her kan jo indeholde et ID som er lig session("id"). Desuden ryger din paging funktion også, da inner loopet ikke bliver stoppet.

Jeg vil næsten foreslå dig at begynde helt forfra, for jeg tror du har fået rodet for meget rundt i din kode, og det kan let tage længere tid at få det rettet, end at bygge det op fra bunden igen...
Avatar billede fennec Nybegynder
07. marts 2006 - 10:48 #8
Der ligger et godt paging script på activedeveloper.dk, som du kan bruge. Det er det jeg selv bruger som grundform når jeg laver paging:
http://activedeveloper.dk/artikler/default.asp?articleid=31
Avatar billede ze-men Nybegynder
08. marts 2006 - 08:23 #9
Hej igen....

Tak for hjælpen - nu fik jeg startet forfra og det kom til at virke. Men herunder er så den nye kode - hvordan får jeg tilfølet funktionen at den skriver "Postkassen er tom",når der ingen breve er i?!?

KODEN ER HER#######

<%

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas/databas.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM mess where vems = '"&session("id")&"' order by id desc"
rs.Open Addera, Connect, 3, 3

if Request.Form("mode") = "slet" then
  if Request.Form("messID") <> "" then
    Connect.execute("delete from mess where vems = '"&session("id")&"' and id in("& Request.Form("messID") &")")
  end if
  response.redirect("las_mess.asp")
end if

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas/databas.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM anv where id='"&session("franid")&"'"
%>
<table width="85%" height="65%" border="0" align="center" cellpadding="0" cellspacing="0" class="roundTabel">
  <tr>
    <td height="15"><div align="center" class="topTabel"><strong><font size="2">KLUNKEBY POSTV&AElig;SEN | DIN POSTKASSE </font></strong></div></td>
  </tr>
  <tr>
    <td colspan="3" valign="top" class="mainTabel"><div align="left">
      <form name="myForm" method="post" action="las_mess.asp">       
      <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td>
              <input type="Hidden" name="mode" value="">
              <%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas/databas.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM mess where vems = '"&session("id")&"' order by id desc"
rs.Open Addera, Connect, 3, 3
%>
              <br>
              <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr class="topTabel">
                  <td width="10%" height="20"><strong></strong></td>
                  <td width="40%"><strong><font size="2">Emne</font></strong></td>
                  <td width="40%" height="20">
                    <div align="left"><strong><font size="2">Afsender</font></strong></div></td>
                  <td width="10%" height="20">
                    <div align="center"><strong><font size="2">Slet&nbsp;</font></strong></div></td>
                </tr>
                <tr class="fontTitel">
                  <td height="2" colspan="4"><img src="../grafik/line_skiller.gif" width="600" height="2" align="top"></td>
                </tr>
                <tr class="fontTitel">
                  <td height="10" colspan="4">&nbsp;</td>
                </tr>
              </table>
<%
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
  Do While Not rs.EOF And intRecCount > 0
  %>
</td>
          </tr>
        </table>
        <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr class="fontTitel">
            <td width="10%" height="20"><% if rs("last")="0" then%>
&nbsp;<img src="bilder/new_posts_icon.gif" width="18" height="12" align="absmiddle">
<% else %>
&nbsp;<img src="bilder/no_new_posts_icon.gif" width="18" height="12" align="absmiddle">
<% end if%></td>
            <td width="40%"><a href="las_mess2.asp?id=<%=rs("id")%>">
              <%
Response.Write rs("titel") & "<br>"
    %>
            </a></td>
            <td width="40%" height="20">
              <div align="left"><a href="minsida.asp?id=<%=rs("franid")%>">
                <%
    Response.Write rs("fran") & "<br>"
    %>
              </a></div></td>
            <td width="10%" height="20">
              <div align="center"><strong>
                  <input type="Checkbox" name="messID" value="<%= rs("id") %>">
              </strong></div></td>
          </tr>
          <tr valign="top" class="fontTitel">
            <td height="10" colspan="4"><img src="../grafik/line_skiller.gif" width="600" height="1" align="middle"></td>
            </tr>
        </table>
        <br>
        <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td><%
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing
Response.Write "Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=las_mess.asp?page=" & intNum & ">" & intNum & "</a> "
Next
Response.Write "<br>Side <b>" & intPage & "</b> af <b>" & intPageCount & "</b>"
%></td>
      <td><div align="right">
        <input name="Button" type="Button" class="inputKnap" onClick="this.form.mode.value='slet';this.form.submit();return false;" value="Slet valgte">
      </div></td>
    </tr>
  </table>
      </form>
      </div>
  </tr>
</table>


-lige en bemærkning. Jeg er ikke hardcore programmør - sidder for det meste og sætte ting sammen og ændre i tidligere scripts - derfor kan det virkelidt rodet!

Sidste spørgsmål; hvordan uddeler jeg point. Kan ikke finde det - og vil gerne give dig point for hjælpen, jo..
Avatar billede fennec Nybegynder
08. marts 2006 - 08:49 #10
Du skal bare tilføje 2 linjer omkring linje 106 (sikkert mere så det ser ordentlig ud :o)

...
  rs.MoveNext
  Loop
else '<-- Tilføj denne og efterfølgende linje.
  response.write "Postkassen er tom"
End If
rs.Close
Set rs = Nothing
Response.Write "Gå til side "

Du kan først give point når jeg har lavet et svar (hvilket jeg har nu). Så kan du vælge mig på en liste til venstre og acceptere svaret. Alle som har afgivet et svar står på den liste og er der flere, kan du vælge dem alle eller enkelte personer, så bliver point fordelt ligligt mellem dem du har valgt. Du kan også vælge en avanceret pointdeling, hvor du bestemmer hvor mange point den enkelte person skal have (hvis en har gjort sig fortjent til flere point end andre)

Det er desuden kutyme, at man ikke lægger et svar inden spørgeren beder om det, så husk at bede den/de personer om et svar, som har hjulpet dig. Flere gange er point nemlig blevet fordelt forkert, fordi der er flere, der har lavet et svar, som ikke skal have point. Der er selvfølgelig undtagelser, ved de nemme ?, som man ved man har svaret på med det samme, også er det i orden, at lave et svar med det samme :o)
Avatar billede ze-men Nybegynder
09. marts 2006 - 22:01 #11
Hey...

Jamen tusinde tak for hjælpen... Det gav mig løsning og svar.
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