Zwei verschiedene Actions für ein Formular
Manuel Euer
- cgi
0 David Mously0 FrankS0 Manuel Euer0 FrankS
Ich möchte in einem Formular ein Pull-Down-Menü zur Verfügung stellen, aus dem der Nutzer einen Datensatz auswählen kann.
Der Nutzer soll anschließend mittels zweier <input type=image>-Buttons auswählen koennen, ob er den betreffenden Datensatz bearbeiten oder löschen will.
Das kann durchaus im gleichen Perl-Skript ausgeführt werden, mein Problem ist jedoch festzustellen, welcher der beiden Buttons (Bearbeiten oder Löschen) geklickt wurde.
Ich moechte jedoch nicht anstelle zweier Submit-Buttons Radiobuttons zur Auswahl verwenden.
Hallo Manuel,
mal kurz angedacht:
Füge ein weiteres, unsichtbares Formular-Textfeld hinzu, nenne es z.B. "Auswahl". Value="0".
Der Button "Bearbeiten" setzt den Inhalt von "Auswahl" via Javascript auf "1" und schickt das Formular via Javascript ab.
Der Button "Löschen" setzt den Inhalt von "Auswahl" auf "2" und schickt das Formular ab.
Das Perlscript kann nun aufgrund der Variable "Auswahl" entscheiden, was mit dem Datensatz zu tun ist:
If Auswahl=1 {bearbeite_daten} else {loesche_daten}.
Hab's nicht getestet, sollte aber klappen.
MfG
David
<img src="http://www.mously.com/banner/170_24.gif" alt="">
PS: Auch wenns schon spät ist: Für eine kurze Anrede bzw. einen Gruss
sollte eigentlich immer Zeit sein.
Hi David, hi Manuel
[...]
Warum so kompliziert? Gib dem Input-Button einen Namen, den kannst Du dann im Script auswerten, z.B. so
<input type="image" name="delete" src="pic1.gif>
<input type="image" name="edit" src="pic2.gif>
use CGI;
$query = new CGI;
if ($query -> param('edit')){
#edit
}elsif ($query -> param('delete')) {
#delete
}else{
#sonst was anderes
}
Und es geht auch ohne JavaScript...
Gruß Frank
Hallo David, hallo Frank,
zunächst vielen Dank für Eure Unterstützung.
Habe nun beide Methoden ausprobiert.
Die JavaScript-Methode funktioniert wunderbar und ist jetzt erstmal eingebaut.
Das mit dem
<input type="image" name="delete" src="pic1.gif>
<input type="image" name="edit" src="pic2.gif>
hört sich sehr verlockend an, klappt aber leider nicht, auch dann nicht, wenn ich dem Button noch einen value=irgendwas mitgebe.
Es waere toll, wenn es doch noch eine Lösung ohne JavaScript gäbe.
Ansonsten nochmal vielen Dank.
Gruß, Manuel
Hallo Manuel!
Es geht, so wie ichs vorhin beschrieben habe. Es gilt allerdings eine Besonderheit (habe ich vorhin vergessen...): Es werden die Koordinaten des Klicks übergeben, d.h. pro Input-Button kommen 2 Wertepaare, z.B. edit.x=13 edit.y=4 oder delete.x=4 delete.y=25
Damit muss im Script nicht nach 'edit' sondern nach 'edit.x' oder 'edit.y' gefragt werden:
if ($query -> param('edit.x')){
}
Die Koordinaten kannst Du noch auswerten, um zu sehen, wohin der User geklickt hat. 0,0 ist dabei die linke obere Ecke des Grafik-Buttons. (Zumindest bei Netscape, IE - nicht getestet)
Gruß Frank
Hallo Manuel!
Es geht, so wie ichs vorhin beschrieben habe. Es gilt allerdings eine Besonderheit (habe ich vorhin vergessen...): Es werden die Koordinaten des Klicks übergeben, d.h. pro Input-Button kommen 2 Wertepaare, z.B. edit.x=13 edit.y=4 oder delete.x=4 delete.y=25
Damit muss im Script nicht nach 'edit' sondern nach 'edit.x' oder 'edit.y' gefragt werden:
if ($query -> param('edit.x')){
}Die Koordinaten kannst Du noch auswerten, um zu sehen, wohin der User geklickt hat. 0,0 ist dabei die linke obere Ecke des Grafik-Buttons. (Zumindest bei Netscape, IE - nicht getestet)
Gruß Frank
Hallo Frank!
Das ist wirklich verblüffend. Darauf muß man erstmal kommen.
Habe das ganze mit IE 4.0 - 5.0 , NN 4.0 - 6.0 und Opera 4.0 auf Mac, Win und Linux durchgetestet und es funktioniert durchgehend.
Allerdings: Bei Netscape kann man seltsamerweise nicht mit Tabulator durch <input type=image> gehen, durch <img>s aber schon. Bei IE bleibt ($query -> param('soundso.x')) = false, wenn man nicht mit der Maus arbeitet, sondern über Tabulator auf den Button wechselt und Enter drückt.
Bin jetzt hin- und hergerissen.
Vielen Dank und viele Gruesse, Manuel