kostenloser Webspace werbefrei: lima-city


Prüfen welcher Button gedrückt wurde

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    jhb

    Kostenloser Webspace von jhb

    jhb hat kostenlosen Webspace.

    Hi,

    Also vollgendes Problem,

    Ich habe eine Tabelle voll mit Buttons (10x10), Alle Buttons haben den Selben Value aber unterschiedliche Namen, ist es möglich zu prüfen welcher Button gedrückt wurde ohne das ich 100 if Bedingungen einbaue ?

    Irgendwie find ich bei google nichts gescheites, vielleicht wisst ihr ja weiter.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wenn du den Buttons den selben Namen, aber unterschiedliche Values gibst, kannst du einfach über den Value herausfinden, welcher Button gedrückt wurde.

    Wenn du für jeden Button eine eigenständge Aktion durchführen willst, wirst du nicht drum herum kommen jeden einzeln abzufragen.
    Wenn du mit den Buttons ähnliche oder gleiche Aktionen (mit anderen Werten) durchführen willst, musst du dir eine Datenstruktur im Hintergrund überlegen, die Speichert ob ein Button gedrückt wurde. Bei deinem Beispiel würde sich hierfür ein zweidimensionales Array eignen.

    mfg
  4. g****e

    Wenn es alles unterschiedliche Aktionen sind bietet sich switch...case an. Damit wird sowas normalerweise schön gelöst. An sich kannst du daraus dann so viel wie möglich abstrahieren, dann bleibt das switch...case Konstrukt recht schlank, und der Code schön wartbar.

    Liebe Grüße
  5. Autor dieses Themas

    jhb

    Kostenloser Webspace von jhb

    jhb hat kostenlosen Webspace.

    Okay also es wäre möglich das alle Buttons Unterschiedliche Values haben,gäbe es dann eine etwas einfachere Lösung ?
  6. Wenn du uns verraten würdest, wozu du die Buttons brauchst, bzw was du damit machen willst, fällt vielleicht jemandem eine Lösung ein, wie dein Problem am einfachsten zu lösen ist. Wenn du uns jedoch nicht verrätst was du vorhast, dann wird auch keiner eine Lösung anbieten können.

    mfg
  7. m******e

    syberpsace schrieb:
    Wenn du uns verraten würdest, wozu du die Buttons brauchst, bzw was du damit machen willst, fällt vielleicht jemandem eine Lösung ein..
    .. braucht doch nicht ;)
    jhb schrieb:
    Okay also es wäre möglich das alle Buttons Unterschiedliche Values haben,gäbe es dann eine etwas einfachere Lösung ?

    ^^ Meinste es in etwa so?
    Beispiel siehe weiter unten

    €dit: Beitrag überarbeitet.

    Beitrag zuletzt geändert: 1.9.2012 18:15:44 von menschle
  8. Hallo

    Alternative ... den Button "name" auslesen

    Datei: test2.php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Button-Name auslesen</title>
    <style type="text/css">
    <!--
    .button_class { margin:2px; padding:0px; width:24px; height:24px; font-size:14px; border:none; cursor:pointer; background:#99FFCC; }
    -->
    </style>
    </head>
    
    <body>
    
    <h1>Button-Name auslesen</h1>
    <p>Welcher Button (name) wird geklickt ?</p>
    
    
    <?php 
    // ----------------------------------------------- 
    
    if (!empty($_POST)) { 
    
    print "<pre>\n"; 
    print_r($_POST); 
    print "</pre>\n"; 
    
    while ($auswahl = current($_POST)) {
        if ($auswahl == 'ja') {
    		$inhalt = key($_POST);
        }
        next($_POST);
    }
    
    
    echo ('<br />Der Button name: <strong>'.$inhalt.'</strong> wars !!!');
    
    echo ('<br /><br /> .......... <a href="test2.php">zur&uuml;ck</a>');
    
    }
    else { 
    
    // ----------------------------------------------- 
    ?>
    
    
    <form name="egal" action="test2.php" method="post">
      <br /> Auswahl 01: <input class="button_class" type="Submit" name="b1" value="ja" />
      <br /> Auswahl 02: <input class="button_class" type="Submit" name="b2" value="ja" />
      <br /> Auswahl 03: <input class="button_class" type="Submit" name="b3" value="ja" />
      <br /> Auswahl 04: <input class="button_class" type="Submit" name="b4" value="ja" />
      <br /> Auswahl 05: <input class="button_class" type="Submit" name="b5" value="ja" />
      <br /> Auswahl 06: <input class="button_class" type="Submit" name="b6" value="ja" />
      <br /> Auswahl 07: <input class="button_class" type="Submit" name="b7" value="ja" />
      <br /> Auswahl 08: <input class="button_class" type="Submit" name="b8" value="ja" />
      <br /> Auswahl 09: <input class="button_class" type="Submit" name="b9" value="ja" />
      <br /> Auswahl 10: <input class="button_class" type="Submit" name="b10" value="ja" />
    </form>
    
    
    <?php 
    // ----------------------------------------------- 
    
    }
    
    // ----------------------------------------------- 
    ?>
    
    
    <br />
    <br />
    
    </body>
    </html>



    ich verstehe zwar nicht, warum es funktioniert,
    weil beim Formular absenden ja alle Buttons gesendet werden (solten),
    ... aber NEIN, es kommt nur der ge-klickte in $_POST an ??? siehe DEBUG Ausgabe print_r($_POST);
    ?


    Beitrag zuletzt geändert: 31.8.2012 10:56:55 von webguide
  9. g****e

    webguide schrieb:
    ich verstehe zwar nicht, warum es funktioniert,
    weil beim Formular absenden ja alle Buttons gesendet werden (solten),
    ... aber NEIN, es kommt nur der ge-klickte in $_POST an ??? siehe DEBUG Ausgabe print_r($_POST);
    ?


    Weil immer nur 1 Submit gesendet wird. Wenn du beispielsweise 2 Submitbuttons hast: Speichern und Abbrechen, dann möchte das PHP Skript ja ganz gerne wissen, welchen Button du gedrückt hast. Man könnte es über 2 Formen lösen, allerdings ist das für manche Dinge, welche die gleichen Inputfelder nutzen, sinnlos. Beispiel wäre, wenn du ein Formular hast und einmal den Button "Speichern" und einmal "überprüfen". Beide male müsste der komplette Inhalt der Form eigentlich gesendet werden, doch das mit 2 Formen ist hier doof. Wenn allerdings nur der Submitbutton gesendet wird, der auch geklickt wurde, kann man über isset() fragen, welcher es war. Das ist also beabsichtigt.
    Zusammenfassend: Bei mehreren Submit Buttons in einer Form wird nur der gesendet, der geklickt wird.

    Liebe Grüße
  10. m******e

    webguide schrieb:
    Alternative ... den Button "name" auslesen

    Datei: test2.php
    Holla!
    Das trifft genau die Frage von jhb.
    Und ein zweites Beispiel gibts auch gleich dazu. (Siehe Beitrag von hackyourlife)

    Hab beides mal hochgeladen:
    Variante 1 - Name auslesen - Autor: webguide
    Variante 2 - Name auslesen - Autor: hackyourlife

    Beitrag zuletzt geändert: 1.9.2012 18:37:52 von menschle
  11. Autor dieses Themas

    jhb

    Kostenloser Webspace von jhb

    jhb hat kostenlosen Webspace.

    Hmm okay danke euch,

    @menschle muss man bei dem Script irgendwas besonderes beachten ? habe den PHP Teil so übernommen, und auf meins angepasst, Irgendwie funktioniert das bei mir nichts, Also es kommt keine Fehlermeldung, es passiert einfach nichts.
  12. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    jhb schrieb:
    Okay also es wäre möglich das alle Buttons Unterschiedliche Values haben,gäbe es dann eine etwas einfachere Lösung ?
    Wenn alle Buttons den gleichen Value haben gibt es übrigens noch eine einfachere Lösung als die von webguide:
    $button = array_search('value', $_POST);
    Dabei ist
    value
    der Value der bei allen Buttons gleich ist.

    Noch ein Anwendungsbeispiel:
    <form method="post">
    	<input type="submit" name="button1" value="value" />
    	<input type="submit" name="button2" value="value" />
    	<input type="submit" name="button3" value="value" />
    	<input type="submit" name="button4" value="value" />
    </form>
    
    <?php
    
    $button = array_search('value', $_POST);
    echo("Button: $button");
    
    ?>
  13. m******e

    jhb schrieb:
    Hmm okay danke euch,

    @menschle muss man bei dem Script irgendwas besonderes beachten ? habe den PHP Teil so übernommen, und auf meins angepasst, Irgendwie funktioniert das bei mir nichts, Also es kommt keine Fehlermeldung, es passiert einfach nichts.
    Gute Frage, allerdings lässt sich das so ganz ohne Code-Schnipselchen ja kaum nachvollziehen.

    hackyourlife schrieb:
    Noch ein Anwendungsbeispiel:
    <form method="post">
    	<input type="submit" name="button1" value="value" />
    	<input type="submit" name="button2" value="value" />
    	<input type="submit" name="button3" value="value" />
    	<input type="submit" name="button4" value="value" />
    </form>
    
    <?php
    
    $button = array_search('value', $_POST);
    echo("Button: $button");
    
    ?>
    ^^ Das Script ist nice!

    Aber sag mal, wenn ich meine Variante im IE ausprobiere, kommt da stets "Button Text wars".
    Alle anderen Browser zeigen mir die value an, nur der IE zickt rum.
    Was habe ich dabei nicht bedacht?
  14. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    menschle schrieb:
    Aber sag mal, wenn ich meine Variante im IE ausprobiere, kommt da stets "Button Text wars".
    Alle anderen Browser zeigen mir die value an, nur der IE zickt rum.
    Was habe ich dabei nicht bedacht?
    Dazu ein Zitat von w3schools das alles erklärt:
    Important: If you use the <button> element in an HTML form, different browsers may submit different values. Internet Explorer, prior version 9, will submit the text between the <button> and </button> tags, while other browsers will submit the content of the value attribute. Use the <input> element to create buttons in an HTML form.
  15. m******e

    ^^ Danke sehr.
    Dann werde ich meine Lösung mal ganz schnell vergessen, weil sie nicht wirklich eine ist.
    *Mal schnell mein Scriptchen wechschmeiss und die Links anpasse*

    :)
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!