Vinzenz: "Status" einer grafischen Schaltfläche abfragen

Beitrag lesen

Hallo Markus,

ich zitiere Dein Posting in veränderter Reihenfolge:

Bei meinem Formular soll, je nach angeklickter, grafischer Schaltfläche, ein bestimmter Parameter an die eigene Datei ( = PHP_SELF) übergeben werden.

Das ist gar kein Problem, das passiert auch normalerweise.

Deshalb meine Frage, wie ich dieses Problem lösen kann.

Indem Du Deine Konzeption umstellst. Dies hat zusätzlich den sehr wünschenswerten Zusatzeffekt, dass Deine Abhängigkeit von Javascript entfällt.

Ein Formular kann auf verschiedenen Wegen abgesandt werden, lies Dir bitte dazu das Kapitel Buttons zum Absenden oder Abbrechen in SelfHTML nochmals durch:

Herkömmlicher Absendebutton
<input type="submit" ...>

Grafischer Absendebutton
<input type="image" ...>

Moderner Absendebutton
<button type="submit" ...>

D.h. Deine <input type="submit" ...> sorgen schon von allein dafür, dass das Formular abgesandt wird, Du brauchst kein Javascript dafür. Damit Du lernst, was übergeben wird, solltest Du eine Kontrollausgabe in Dein PHP-Skript integrieren, die Du später wieder entfernen kannst:

Da Du mit der Methode 'POST' arbeitest, gibst Du den kompletten Inhalt von $_POST mit der Funktion print_r() aus:

print_r($_POST);

Das Formular hat folgenden Aufbau:

<form method="post">

Hier fehlt das vorgeschriebene Attribut 'action'. Du solltest als Wert eingabe.php nehmen, d.h. im PHP-Skript $_SERVER['PHP_SELF].

[...]

<input type="image" id="Vorschau" name="Vorschau" value="Vorschau"
         onclick="document.forms[0].action='eintrag.php?Vorschau=1'; document.forms[0].submit()">
  <input type="image" id="Vorschau" name="Vorschau" value="Vorschau"
         onclick="document.forms[0].action='eintrag.php?Speichern=1'; document.forms[0].submit()">

Hier unterlaufen Dir gleich mehrere Fehler:
Die beiden Buttons haben die gleiche 'id', das ist nicht erlaubt.
Beiden Buttons fehlt die Angabe der Grafik, das src-Attribut. Ist Dir das nicht aufgefallen?
Beide Buttons tragen den gleichen Namen, Du wirst im Skript nicht unterscheiden können, auf welchen geklickt wurde.
Value-Angaben sind bei image-Buttons überflüssig.
Du versuchst per Javascript, das Action-Attribut des Formulars zu setzen, dies ist überflüssig (falls es überhaupt geht - damit habe ich mich noch nie beschäftigt). Werte einfach aus, welcher Button angeklickt wurde. Nenne den einen einfach 'Vorschau' und den anderen 'Speichern' :-)

</form>

Freundliche Grüsse,

Vinzenz