Datensatz löschen - Sicherheitsabfrage

Wayan

Mitglied
Hallo ihr lieben :)

Ich stehe grade total auf dem Schlauch oder mir fehlt einfach der richtig Ansatz.
Vielleicht könnt ihr mir ja helfen.

Also,
Ich lese diverse Datensätze aus einer MySQL Tabelle aus und ordne diese in einer html-Tabelle an.

Soweit so gut.

Hinter jeder Zeile wird momentan ein Button generiert, welcher den Primärschlüssel der Zeile zurückgibt (ich wollte gucken ob ich dort rankomme.), auch das funktioniert prima.

Nun zu meinem Problem.
Eigentlich dient dieser Button dazu den jeweiligen Datensatz der MySQL Tabelle zu löschen. Dies soll mit einer Sicherheitsabfrage funktionieren (á la "Wollen sie wirklich löschen?").

Wie kann ich sowas realisieren, mir fällt wirklich nichts ein, da ich nicht weiß wie ich die Bestätigung des confirms der Sicherheitsabfrage zum löschen benutze.

*schlauchsteh* und vielen Dank schon einmal.

Grüße
 
Am einfachsten mit Javascript und die Funktion im Form Tag aufrufen.

Javascript Funktion

Code:
function chkDelete(){
   submitBool = confirm("Wollen Sie den Datensatz wirklich löschen?");
   if (submitBool == false){
      return false;
   } else {
     return true;
   }
   // Oder gleich "return submitBool;"
}

hier der Form Tag

HTML:
<form enctype="multipart/form-data" name="meineForm" action="dein_script.php" onSubmit="return chkDelete()" method="post">

ich hoffe es ist selbsterklärend und verständlich.
 
Zuletzt bearbeitet von einem Moderator:
Danke dir :)

Das problem ist nur, das ich nicht weiß welcher Buton gedrückt wurde.

Ich habe versucht Buttonname.value auzulesen, aber es kommt immer "unidentified" zurück...

Die Buttons haben als value den Primärschlüssel der jeweiligen Zeile...
 
Das ganze ist eine Infusion für php fusion.

So, hier ist erstmal mein Button, der in einer while-Schleife eingefügt wird.

Code:
echo"<td align=center>";
   echo"<button name='delete_button' type='submit' value='$eintrag->iks_user_id' onclick='return confirm(\"$username->user_name wirklich löschen?\");'>
    		<img src='del.png' width='15' height='15' alt='Löschen'><br>     				
        </button>
";
echo"</td>";

das ganze befindet sich in einer <form method='get'>

so, nun versuche ich mittels php und

Code:
if($_GET['delete_button'])
{
	echo $_GET.value; //hier soll einmal gelöscht werden
}

den Buttonklick zu verarbeiten...
Ich bekomme die Fehlermeldung das 'delete_button' ein unbekannter index ist.
Und ebenfalls scheint es mir damit im Moment unmöglich auszuwerten welcher Button denn nun genau gedrückt wurde.

Mit javaScript steh ich auch gerade auf dem Schlauch, da die function ja in den <head> tag eingefügt werden müßte, und man diesen beim erstellen einer Infusion für php fusion nicht zur Verfügung hat...
 
Dann mach diese Funktion in die Buttons auf onClick="return chkDelete();", dann funktioniert das für jeden Button einzeln.


Edit: hmm seh gerade das du das ja schon so ähnlich hast.. öhm also eigentlich sollte es so funktionieren. Hatte bislang das so nur noch nicht in <button> elementen.
 
Zuletzt bearbeitet:
Die Buttons Elemente hab ich nur genommen da man dort eine Grafik in den Button einfügen kann - sieht hübscher aus.

Sollte das allerdings der Grund sein warum es nicht geht werde ich wohl drauf verzichten müssen.
Ich teste das mal.

edit:
Getestet... geht aber auch nicht... immernoch "unidentified index" für button_delete...

Ich hänge spaßeshalber mal die ganze php Datei dran, vielleicht übersehe ich auch nur was.
 

Anhänge

  • Kopie von ik_system_admin.txt
    3,9 KB · Aufrufe: 45
Zuletzt bearbeitet:
Als Erstes mußt du deine while schleife bearbeiten, weil button name='delete_button' kommt sonst mehrmals vor. Dann bekommst du auch nicht mehr die Fehlermeldung.

Ich bekomme die Fehlermeldung das 'delete_button' ein unbekannter index ist.

Lösung: button name='delete_button[int index]'

Edit: in deinen Fall
PHP:
<button name='delete_button[$i]'....

Danach kannst du die Get-variable mit eine foreach Schleife durchlaufen und deine Löschfunktion aufrufen.

Mit javaScript steh ich auch gerade auf dem Schlauch, da die function ja in den <head> tag eingefügt werden müßte, und man diesen beim erstellen einer Infusion für php fusion nicht zur Verfügung hat...

Wie meinst du das? Sollte das Programm eine Templateengine benutzen, kann es zu Fehlern kommen, weil der Renderer versucht den Code auszuwerten.

Bei Smarty umgeht man es mit folgender Compileranweisung.

PHP:
{literal}
// alles was zwischen diesen beiden Tags steht, wird nicht ausgewertet.
{/literal}
 
Zuletzt bearbeitet von einem Moderator:
Soll heißen man kann die <head> tags bei einer Infusion nicht bearbeiten, daher dazwischen auch kein javaScript einfügen :)

Ich werde die namen mal bearbeiten...

Aber wie muß dann die if abfrage aussehen?

if($_GET['delete_button[]'])
{
echo $_GET.value;
}

so in etwas? Da die Anweisung ja auf jeden Button reagieren soll...
 
PHP:
foreach ($_GET['delete_button'] as $key => $val) {
   if(isset($_GET['delete_button['.$key.']'])){
      delete($val);
   }
}

Soll heißen man kann die <head> tags bei einer Infusion nicht bearbeiten, daher dazwischen auch kein javaScript einfügen

gebe es doch einfach als Erstes per echo aus

PHP:
echo '<script type="text/javascript">
function chkDelete(){
   submitBool = confirm("Wollen Sie den Datensatz wirklich löschen?");
   return submitBool;
}</script>';
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück