Buttonbeschriftung != Value
Dilbert
- php
Hallo zusammen,
leider steck ich grad in der Krise mit folgendem Problem:
Wie schaffe ich es, dass bei einem <button> der Wert von value= an das PHP-Script übergeben wird und nicht der Anzeigetext des Buttons.
Zum besseren Verständnis hier ein wenig Code:
<button type="submit" name="action" value="<?= substr($action,0,4)."S"; ?>">
ok!
</button>
Nach dem Abschicken hat also $action den Wert " ok! " und nicht "0110S" ($action hat bei Formularaufruf den Wert "0110").
Vielen Dank jetzt schon mal für Eure Hilfe!
Grüße
Dilbert
Hi
<button type="submit" name="action" value="<?= substr($action,0,4)."S"; ?>">
ok!
</button>
buttons sind nicht zum Daten verschicken da, dazu nimmst Du ein input-Feld zB. type="hidden"
by the way: layout sollte nman nicht mit Leerzeichen gestalten.
ciao
romy
Hi Romy,
buttons sind nicht zum Daten verschicken da, dazu nimmst Du ein input-Feld zB. type="hidden"
also erstmal Danke für die schnelle Antwort. Mein Problem ist halt, dass ich mehrere Submit-Buttons hab, die gleich beschriftet sind. Ich möchte aber trotzdem unterschiedliche Aktionen im Skript ausführen, jenachdem welcher Button gedrückt wurde. Um die Übersicht zu behalten verwende ich ein System aus Codes (zb. "0001", "0110"...), die die einzelnen Formulare bzw. Aktionen representieren. Diese Codes sollen von den Buttons übergeben werden.
Ich hoffe, dass ich das jetzt einigermaßen verständlich erklärt habe.
Grüße
Dilbert
Hallo Dilbert,
[snip] Mein Problem ist halt, dass ich mehrere Submit-Buttons hab, die gleich beschriftet sind. Ich möchte aber trotzdem unterschiedliche Aktionen im Skript ausführen, jenachdem welcher Button gedrückt wurde. Um die Übersicht zu behalten verwende ich ein System aus Codes (zb. "0001", "0110"...), die die einzelnen Formulare bzw. Aktionen representieren. Diese Codes sollen von den Buttons übergeben werden.
Ich hoffe, dass ich das jetzt einigermaßen verständlich erklärt habe.
ich denke, ja.
wie wär's mit:
<input type='submit' value='ok!' name='0110S' />
<input type='submit' value='ok!' name='0001S' />
<input type='submit' value='ok!' name='1010S' />
value -> so ist der Button im Formular beschriftet
name -> so heißt der Button, der PHP übergeben wird.
Wenn du also den 2. Button drückst, erhält PHP die Variable* $0001S, welche den Wert 'ok!' hat.
Verwirrend, wie?
*jenachdem, ob register_globals on || off ist, ist die Variable natürlich in irgendeinem Sub-Array zu finden oder eben nicht.
_______________________
Mit freundlichen Grüßen
Sebastian
Hi Sebastian,
Wenn du also den 2. Button drückst, erhält PHP die Variable* $0001S, welche den Wert 'ok!' hat.
Verwirrend, wie?
Leider nicht. Das hatte ich auch schon aber das passt mir leider garnicht recht in den Kram. Ich will halt eine Variable haben, die je nach Button verschiedene Werte enthält. Also $action = "0110S", $action = "0001S" oder $action = "1010S".
Das ganze ist halt ein sauberererererer Programmierstil, wenn man verschiedene mögliche Rückgabewerte gleicher Art in der gleichen Variable abspeichert.
Mir scheints aber langsam so, als ginge das wirklich nicht, obwohl's mich echt Fuchst *grrrr*
Aber Danke für Deinen Versuch!
Grüße
Dilbert
Hi,
bei mir geht sowas:
=== HTML ===
<form action="action.php">
<input type=hidden....>
<input type=text......>
<textarea...></textarea>
<!-- und so weiter halt -->
<input type=submit name=button1 value="Speichern">
<input type=submit name=button2 value="Speichern">
<input type=submit name=button3 value="Speichern">
</form>
=== PHP action.php ===
<?php
if (isset($button1)) {
}
elseif (isset($button1)) {
}
elseif (isset($button1)) {
}
else {
echo "Das kann net sein, Fehlerchen";
}
?>
===
Fazit: Nich nach dem Inhalt von $button<n> fragen, sondern einfach nur, ob die Variable gesetzt ist.
Gruß
Heiko
Sorry, das muss natürlich $button1, $button2 und $button3 heissen in dem if...elseif...else...
=== PHP action.php ===
<?php
if (isset($button1)) {
}
elseif (isset($button2)) {
}
elseif (isset($button3)) {
}
else {
echo "Das kann net sein, Fehlerchen";
}
?>===
Logisch, das ist aber Programmiertechnisch unprofessionell und für großprojekte, bei denen man zig verschiedene Formulare mit einem einzigen Script auswerten muss völlig unbrauchbar. Ich kann nämlich ohne Probleme den Wert einer Variable mit 1000 Datenbankeinträgen vergleichen. Aber den Variablennamen mit 1000 DB-Einträgen zu vergleichen ist performancetechnisch völlig indiskutabel.
Mensch, es muss doch eine Trennung zwischen Value (= Wert) und der Anzeige eines Objektes geben.
*grummel*
Dilbert
Hi,
Logisch, das ist aber Programmiertechnisch unprofessionell und für großprojekte, bei denen man zig verschiedene Formulare mit einem einzigen Script auswerten muss völlig unbrauchbar. Ich kann nämlich ohne Probleme den Wert einer Variable mit 1000 Datenbankeinträgen vergleichen. Aber den Variablennamen mit 1000 DB-Einträgen zu vergleichen ist performancetechnisch völlig indiskutabel.
benutze nicht type="submit", sonder type="button" und setze den onClick-Sting jeweilig anders.
zB.
<input type="button" name="button1" value="los" onClick="bla.php?x=10110">
<input type="button" name="button2" value="los" onClick="bla.php?x=10220">
<input type="button" name="button3" value="los" onClick="bla.php?x=11624">
und auf der bla.php wertest Du x aus.
Ist es das was Du wolltest?
ciao
romy
Hi,
<input type="button" name="button1" value="los" onClick="bla.php?x=10110">
onclick ist ein eventhandler-Attribut. Demzufolge muß darin (üblicherweise - wenn nichts anderes definiert ist) javascript erscheinen.
bla.php?x=10110
ist - als Javascript - fehlerhaft - zum ?: Operator fehlt der Doppelpunkt sowie der 3. Ausdruck.
Ob es überhaupt ein Objekt namens bla mit einem Sub-Objekt php gibt, ist auch mehr als fraglich...
cu,
Andreas
Hi,
onclick ist ein eventhandler-Attribut. Demzufolge muß darin (üblicherweise - wenn nichts anderes definiert ist) javascript erscheinen.
hängt es jetzt nur an der Schreibweise onclick vs. onClick
oder ist es generell falsch einfach eine url anzugeben?
Ist dies wieder so ein Beispiel von Dingen, die von den meisten Browsern ausgeführt werden ohne korrekt zu sein?
Wenn ich das jetzt Richtig verstehe, müsste ich also eine javascript-function aufrufen, die dann das Submit übernimmt?
Dann ist diese Lösung nicht wirklich gut...javascript kann man ja ausschalten.
ciao
romy
Hi,
onclick ist ein eventhandler-Attribut. Demzufolge muß darin (üblicherweise - wenn nichts anderes definiert ist) javascript erscheinen.
hängt es jetzt nur an der Schreibweise onclick vs. onClick
in HTML ist es wurscht, ob Du onclick oder onClick oder OnClIcK schreibst.
In XHTML muß es onclick sein.
oder ist es generell falsch einfach eine url anzugeben?
Falsch.
Attribut-Definition:
onclick = script [CT]
The onclick event occurs when the pointing device button is clicked over an element. This attribute may be used with most elements.
Beachte den Datentyp. Da steht script. Da steht NICHT: script oder URL.
Ist dies wieder so ein Beispiel von Dingen, die von den meisten Browsern ausgeführt werden ohne korrekt zu sein?
Wird das denn von den meisten Browsern gemacht?
onclick="test.php?x=y" schmeißt bei mir im IE beim Laden der Seite eine Fehlermeldung ":" erwartet, beim Betätigen des Buttons wird NICHT test.php?x=y aufgerufen, sondern das, was in der action des Formulars steht und was sich aus den Formularfeldern ergibt.
Mozilla wirft den Fehler erst beim Betätigen des Buttons und ruft weder die action noch die test.php auf...
Opera hab ich grad nicht da.
Wenn das zufällig ein Browser machen sollte, ist das m.E. ein Fehler.
Wenn ich das jetzt Richtig verstehe, müsste ich also eine javascript-function aufrufen, die dann das Submit übernimmt?
Ja
Dann ist diese Lösung nicht wirklich gut...javascript kann man ja ausschalten.
Genau.
cu,
Andreas
Hi Romy,
das ist perfekt!
Exakt das hab ich gesucht. Ein megafettes MERCI!!!!
Thnx,
Dilbert
Ist es das was Du wolltest?
Hi,
leider steck ich grad in der Krise mit folgendem Problem:
Wie schaffe ich es, dass bei einem <button> der Wert von value= an das PHP-Script übergeben wird und nicht der Anzeigetext des Buttons.
Benutze einen Browser statt des Internet Explorer.
Bei
<form action="/test.html" method="get">
<button type="submit" name="bla" value="123">Button 123</button>
<button type="submit" name="bla" value="456">Button 456</button>
</form>
bekomme ich sowohl im Mozilla 1.4rc1 (und Netscape 7) als auch im Opera (6.04/7.11) je nach verwendetem Button
bla=123
oder
bla=456
Nur der IE (5.5 und 6.0) meint,
bla=Button+123&bla=Button+456
übertragen zu müssen, also beide gleichzeitig.
IE überträgt auch beide Buttons, wenn die Buttons verschiedene Namen haben.
Netscape 4.x verhält sich nochmal anders: er stellt <button> nicht als Button dar...
Opera hat da aber auch noch einen Fehler (ok, der hat nichts mit diesem Problem zu tun, ist mir nur gerade aufgefallen) - in meiner Testseite ist zufällig auch noch ein select-Element, das sich aber außerhalb der Form befindet.
Opera (sowohl 6.04 als auch 7.11) überträgt dessen name-value-Paar trotzdem mit...
Daraus ergibt sich:
Wenn die User nicht ausschließlich Opera oder Geckos benutzen, kann man höchstens einen button pro Formular benutzen.
cu,
Andreas