onSubmit - andere Idee?

wal

Erfahrenes Mitglied
Hallo Leute,

ich habe eine PHP Seite, die zwei Buttons besitzt. Der eine ist dafür da, um einen bestimmten Datensatz in der DB up zu daten, der andere löscht diesen Datensatz. Nun habe ich in das Form-Tag ein onSubmit= eingebaut, damit vorher eine Abfrage aufgeht, ob der Datensatz auch gelöscht werden soll.

Das Problem ist nun, egal ab ich den Update-Button oder den Löschen-Button betätige, es kommt immer zuerst die Abfrage.

Jetzt würde ich gerne wissen, wie ich es so machen kann, dass die Abfrage nur bei dem Löschen Button kommt.

Hat jemand eine Idee?

Hier die Codezeile:
PHP:
...
<form name="buchbestand" action="medienaenderung.php" method="post" onSubmit="return conf();">
...

Vielen Dank für Tipps und Hilfen.
 
Ich mach das immer so:
HTML:
<script type="text/javascript">
function test()
{
    if(confirm("Wirklich löschen?")) document.formular_name.submit();
}

HTML:
<form action="datei.php" method="post" name="formular_name">
<input type="text>blablabla</input>
<input type="button" value="Löschen" onclick="test()">
<input type="submit" value="Update" name="update">
</form>

Im PHP Dokument fragst du dann ab, ob $update (oder $_POST['update']) gesetzt ist.
Wenn ja -> Updaten
Wenn nein -> löschen

Ich hoffe geholfen zu haben.
 
Zuletzt bearbeitet:
Hi bled,

danke für die Info. Ich habe es mal so ausprobiert, aber leider klappt es so noch nicht.
Der Grund hierfür ist, wenn ich auf Löschen klicke, erscheint zwar die Abfrage ob wirlich gelöscht werden soll oder nicht, wenn ich dann auf Abbrechen klicke, wird trotzdem das PHP Skript ausgeführt und die Datei gelöscht.

Es ist also egal, ob ich in der Dialogfenster OK oder Abbrechen klicke - das Script wird ausgeführt und löscht die Datei, da das dahinter liegende PHP Skript erkennt, dass zuvor der Button "Löschen" gedrückt wurde.

Noch eine Idee?
Eventuell kann ich die Button der Dialoge irgendwie abfragen?
 
dürfte nicht der fall sein, ist der Löschen-Button auch nur ein input type="button" und KEIN input type="submit" ?
aber kannst ja mal noch ein
if(...)
{ ...//abschicken...}else{return false;}
draus machen
 
Hi flooo,

ok, das erste war mein Fehler ... ich Dummbatz habe natülich vergessen den Formularnamen korrekt zu schreiben - dann kann es ja auch nicht funktionieren Grrr :rolleyes:

Aber nun passt FAST alles ;-)

Das Problem welches ich nun noch habe ist, das in der unter action=... aufgerufene PHP Seite anscheind nicht bekannt ist, welcher Button gedrückt wurde, denn es wird der Löschen Befehl nicht durchgeführt.

Muss ich das noch irgendwie im Submit des JavaScripts mitgeben?
 
Hi,

du könntest zum Beispiel ein verstecktes Feld anlegen, dem du vor dem Absenden den Name
des betätigten Buttons mitgibst. Dieses Feld wertest du im PHP-Script aus und kannst entscheiden, ob gelöscht oder upgedatet werden soll.

Ciao
Quaese
 
Das hab ich doch aber eigentlich schon beschrieben!
Man gibt dem Update-Button einen Namen (hier z.B. update).
Wenn er nun gedrückt wird, ist isset($update) == true. (oder $_POST['update'])
So kannst du also nachprüfen, wenn $update nicht gesetzt wurde, kann man davon ausgehen, dass der Löschen Button gedrückt wurde.
 
Zuletzt bearbeitet:
Hallo,

vielen Dank für eure Hilfen. Ich denke schon, dass ich das richtig verstanden habe - auch vorher bereits.

Bevor ich das JavaScript eingebaut hatte, hat es auch funktioniert. Das heisst, in einer HTML Seite habe ich den Löschen Button gedrückt und dann wurde ein PHP Script aufgerufen, welches die Daten dann auch löscht indem ich den Button ausgewertet hatte mittels

PHP:
...
  if (isset($_POST["delete"])) {
  $erg = deleteData();
  displayEnd($erg);
    $done=true;
 }
 
  if (isset($_POST["update"])) {
  $erg = updateData();
  displayEnd($erg);
  $done=true;
   }
...
PHP-Seite

Da "update" funktioniert, wird nur nicht "delete" gefunden. Ich müsste also das delete oder etwas anderes mitgeben, dass abgeprüft werden kann.

Könnt ihr mir bitte nochmals auf die Sprünge helfen, wie ich mit JavaScript wenn ich den Dialog mit ok bestätige (also löschen möchte) in ein Hiddenfield einen Wert reinschreibe, bevor dann die PHP Seite aufgerufen wird? Geht das denn überhaupt?

Der PHP Teil ist kein Problem mit der Auswertung, nur ich mit JavaScript komme ich momentan nicht so klar, wenn ich sofort einen Wert in ein Feld zuweisen möchte.

Vielen Danks chon mal vorab für eure Hilfen und Tipps.
 
Hi,

falls dein Formular folgende Grundstruktur hat,
HTML:
<form action="auswertung.php" method="post">
  <div><input type="hidden" name="hiddenOperation" value="none" /></div>
  <div><input type="button" name="cmdDel" value="Löschen" onclick="subDelete(this.form);" /></div>
</form>
kannst du mit diesem Script
Code:
function subDelete(objForm){
  if(confirm("Wirklich löschen?")){
    objForm.hiddenOperation.value = "loeschen";
    objForm.submit();
  }else{
    return false;
  }
}
nachfragen, ob wirklich gelöscht werden soll, den Wert des versteckten Feldes auf "loeschen"
setzen und das Formular absenden.

Im Auswertungsdokument prüfst du, ob hiddenOperation gesetzt ist und ob es den
entsprechenden Wert zum Löschen besitzt.
PHP:
if (isset($_POST["hiddenOperation"]) && ($_POST["hiddenOperation"]=="loeschen")) {
  $erg = deleteData();
  displayEnd($erg);
  $done=true;
}
Vielleicht löst das ja dein Problem.

Ciao
Quaese
 
Hi,

erstmal vielen Dank für alle Hilfen!

@Quaese:
Ich habe noch ein paar Änderungen des JavaScripts vornehmen müssen und dann hat alles wunderbar funktioniert! :) :)
 

Neue Beiträge

Zurück