ASP Classic

Sicherheitsabfrage mit ASP

Datensätze nicht ungefragt löschen

Beim Umgang mit Daten ist es Pflicht den Benutzer vor dem endgültigen Löschen eines Datensatzes zu fragen, ob er das wirklich möchte, denn schnell ist man mal auf die Schaltfläche gekommen und die Gefahr von irreparablem Datenverlust groß. In "normalen" Anwendungen geht dann meist eine Dialog-Box auf die fragt "Möchten Sie diesen Datensatz wirklich löschen", die der Benutzer bestätigen muss.

In ASP-Anwendungen ist as aber nicht so einfach eine solche Dialog-Box vor dem Löschen anzuzeigen, auch wenn es mit Javascript geht. Eine Alternative hierzu soll hier vorgestellt werden, die auch noch den Charme hat eine reine HTML-Seite und für mehrere Seiten verwendbar zu sein.

Die aufrufende Seite

Bauen wir zunächst eine Seite, die eine gewisse Anzahl Datensätze aus einer Datenbank in einer HTML-Tabelle darstellt und jeden Eintrag mit einer Löschen-Schaltfläche versieht:

<table border="0" width="300">
<%
   'Öffnen der Datenbank-Verbindung per UDL-Datei
   Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "file name=" & Server.MapPath("kontakte.udl")

   'Öffnen des Recordsets
   Set rs = Server.CreateObject("ADODB.Recordset")
   strSQL = "SELECT * FROM tblKontakte"
   rs.Open strSQL, objConn

   Set fldID = rs.Fields("ID")
   Set fldVorname = rs.Fields("Vorname")
   Set fldNachname = rs.Fields("Nachname")

   'Schleife über alle Datensätze der Tabelle
   Do Until rs.EOF
%>

<tr>
   <td class="row" width="240" height="30">
     <%response.write(fldNachname & ", " & fldVorname)%>
   </td>
   <td class="row" width="60" height="30">
      <input type="button" value="Löschen" name="cmdDelete_<%response.write(fldID)%>">
   </td>
</tr>
<%
      rs.MoveNext
    Loop

   'Schließen des Recordsets und der Verbindung
   rs.close
   Set rs = nothing
   objConn.Close
   Set objConn = Nothing
%>
</table>

Das ganze sieht dann ungefähr so aus:

Wie der aufmerksame Beobachter bemerkt haben wird, sind die INPUT-Schaltflächen nicht Bestandteil eines HTML-Formulars. Dies hat den Grund, dass die Schaltflächen jeweils ein onClick-Event erhalten, um die nachfolgende Seite aufzurufen, was es u.a. ermöglicht weitere Schaltflächen wie "Editieren" o.ä. einfach zu integrieren:

onclick="jumpDeletePage('<%response.write(fldID)%>');"

Die dort aufgerufene JavaScript-Funktion wird im Header definiert und dient zum Aufruf der Sicherheitsabfrageseite "question.asp", der zum einen über den Parameter id die zu löschende ID des Datensatzes mitgegeben wird. Zum anderen wird über den Parameter qst definiert, wie auf der Seite weiter verfahren werden soll.

<script language="javascript"><!--
   function jumpDeletePage(sID) {
      window.location.href = "question.asp?qst=1&id=" +
sID; }
//--></script>

Die Sicherheitsabfrage

Diese Seite besteht lediglich aus einer entsprechenden Frage und den beiden Schaltflächen JA und NEIN, zwischen denen der Benutzer wählen kann.

Im ASP-Code der Seite werden zunächst die beiden übergebenen Parameter ausgelesen und Variablen zugewiesen. Danach wird anhand der Variablen intQuestID entschieden welcher Text angezeigt werden soll und wohin die Reise beim Klick auf die Schaltfläche JA geht. Über die Schaltfläche NEIN gehts mit Hilfe der Server-Variable "HTTP_REFERER" zurück zur vorherigen Seite. Wichtig ist, dass der Löschseite (Klick auf JA) neben der ID des Datensatzes auch mitgegeben wird, woher die Anfrage ursprünglich kam, um nach Abschluss des Löschvorgang wieder dorthin navigieren zu können.

<%
   'Auslesen der Parameter
   intQuestID = CInt(Request.QueryString("qst"))
   intID = CInt(Request.QueryString("id"))

   Select Case intQuestID
      case 1
         strQuestion = "Bist Du sicher, dass Du diesen Kontakt löschen möchtest?"
         strPageYes = "kontakt_delete.asp?id="& intID
   End select
   strPageYes = strPageYes & "&refer=" & Request.ServerVariables("HTTP_REFERER")
   strPageNo = Request.ServerVariables("HTTP_REFERER")
%>

Die Löschseite

Die eigentliche Arbeit des Löschens wird hier in einem knappen ASP-Statement ohne jeglichen HTML-Code abgehandelt, da nach dem erfolgten Löschen des Datensatzes ja sofort wieder zum Ausgangspunkt zurückgesprungen wird:

<%
   'Auslesen der Parameter
   intID = CInt(Request.QueryString("id"))
   strReferrer = Trim(Request.QueryString("refer"))

   Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "file name=" & Server.MapPath("kontakte.udl")

   'Absetzen des DELETE-Statements
   strSQL = "DELETE * FROM tblKontakte WHERE ID=" & intID
   objConn.Execute strSQL, , adExecuteNoRecords

   'Schließen der Verbindung
   objConn.Close
   Set objConn = Nothing

   'Aufrufen der Ursprungsseite
   Response.redirect(strReferrer)
%>

Downloads

sicherheitsabfrage.zip
kick it on dotnet-kicks.de AddThis Trackback-Url...

Schlagworte

105 Kommentare bislang...

  • After the removable guide ring removed from the Three Roll Mill and clean up the original carrier membrane, then make a comprehensive cleaning for the grinding vehicle.The new carrier membrane on the orifice plate alignment, this well plates with the suction hole corresponding to the first pin hole, and each of the first pin hole is equipped with a fixed pin, when the carrier film and the orifice docking accurate, a fixed pin can pass through the Grinding Machine.
    105
    Three Roll Mill : Donnerstag, 10. Mai 2012 03:35
  • Im not going to say what everyone else has already said, but I do want to comment on your knowledge of the topic. Youre truly well-informed. I cant believe how much of this I just wasnt aware of. Thank you for bringing more information to this topic for me. Im truly grateful and really impressed.
    104
    Juicy Couture outlet online : Montag, 7. Mai 2012 08:00
  • nike air max ltd "Il semble y avoir à suivre le rythme." Petite fille déjà saisi larmes.

    "Ne vous arrêtez pas - réfléchir aux moyens de se débarrasser de lui!"

    ?Ma s?ur, tu me respecter et je vais commencer à éteindre le changement n'ont pas encore à l'apprendre!" Blame le nom de famille, Lang à chaque fois pour lui demander de sortir pour apprendre à conduire est juste une excuse, jusqu'à une demi-heure, ils ont enlevé avec à d'autres choses.

    "Pas de bo?te de vitesses automatique?" Impression du trésor se trouve, les voitures sont laissées à l'huile, ils sont fondamentalement sur le concept de stands.

    Hippocampus - Vous pensiez que c'était une BMW "?

    "Euh. Parking sur le fils couteau, vous comprendre."

    "La question est, ne peut pas arrêter ah!" Zhuo Fu Rong anxieuse, savent déjà qui est le frein, ce qui est de l'embrayage, la lumière rouge intersection, j'ai peur de frapper la voiture garée devant ....

    "Sur l'autre sens!" Trésor à être étroitement pincé vendre des sueurs froides, douter de leur propre vie dans les mains des deux demi-pilote ".

    Head? "

    "Qui se soucie, de toute fa?on, elle est morte."

    "La police a salué l'événement -? trop occupé pour penser, doucement agiter le volant, a été mis sur la voie rétrograde.

    "Comment la police peut au milieu de la nuit? Avez frappé! Par la police à maintenir en place avec ses mots, que? pain ?immédiatement sur le retrait." Voix presque jamais, la voiture a été précipitée sur le pont de la rivière impériale. Tourné Miaole Yan-yin tigre dans le coma, doucement déploré, "les gens peuvent mourir, mais Métion bénisse. Constant tuer la cupidité de tuer ces gens. Il a poignardé Nie Chen ne savait pas avec un couteau l'a poignardé? "
    103
    nike air max ltd  : Donnerstag, 3. Mai 2012 23:18
  • Thanks for this info. I find it very useful the info you gave, especially for people who a looking to do what to do with their Flash gallery.
    102
    Juicy Couture outlet online : Donnerstag, 19. April 2012 11:32
  • Monster Beats by dr dre pro White Madden headphones silver ring stand and the unit on the back of the black grid, are alloy materials to create texture. What is a "semi-open"? Monster Beats by dr dre pro black and White Madden headphones original blend of closed headphones, noise and open headphones, the unique natural sound field, we can say "take of both worlds". Monster Beats by dr dre pro white and red Madden headphones
    101
    Beats Dr Dre : Dienstag, 17. April 2012 04:58

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 6

  • Datum: 10.02.2005
    Kategorie: ASP Classic
    Zugriffe: 3.900
    Kommentare: 105
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei