PHP + MySQL Button-Auswahl auf Datenbank speichern?

2 Antworten

ich würde gerne auf einer PHP-Seite vier Buttons haben. Wenn einer von diesen geklickt wird, soll auf der Datenbank angezeigt werden, welcher Button geklickt wurde
<form>
<button name ="button" value="1">Button 1</button>
<button name ="button" value="2">Button 2</button>
<button name ="button" value="3">Button 3</button>
<button name ="button" value="4">Button 4</button>
</form>

In der Variable $_GET['button'] steht jetzt je nach gedrücktem Button der Wert 1, 2, 3 oder 4. Dementsprechend kannst Du dann einen Wert in die Datenbank schreiben:

<?php
switch($_GET['button'])
{
    case 1:
       /* hier schreiben, was bei Button 1 in die Datenbank geschrieben werden soll */
      break;
    case 2:
       /* hier schreiben, was bei Button 2 in die Datenbank geschrieben werden soll */
      break;
    case 3:
       /* hier schreiben, was bei Button 3 in die Datenbank geschrieben werden soll */
      break;
    case 4:
       /* hier schreiben, was bei Button 4 in die Datenbank geschrieben werden soll */
      break;
   default:
       /* hier schreiben, was sonst passieren soll */
        break;
}
?>

Alex

Daviddesign660 
Fragesteller
 01.07.2020, 11:19

Vielen Dank, hat mir echt sehr sehr viel weiter geholfen!

1

Genauso wie Eingabefeldern, kannst du auch Buttons mit einem name- und gegebenenfalls auch einem value-Attribut ausstatten. Das kann bei Klick auf den Button geschehen.

<form id="my-form">
  <button>Button 1</button>
  <button>Button 2</button>
</form>
<script>
  const formButtons = document.querySelectorAll("#my-form > button");

  for (let i = 0; i < formButtons.length; ++i) {
    formButtons[i].addEventListener("click", function(e) {
      this.name = "button_" + i;
    });
  }
</script>

Der versandte Key würde sich nach Versand des Formulars folgendermaßen in $_GET befinden.

EinAlexander  01.07.2020, 11:24

die Lösung scheitert spätestens dann, wenn die Buttons Kindelemente unterschiedlicher <form> sind:

<header>
 Auswahl treffen:
 <form>
  <button>Button 1</button>
  <button>Button 2</button>
 </form>
</header>

<main>
Hier steht der Inhalt der Seite
</main>

<footer>
 Auswahl treffen:
 <form>
  <button>Button 3</button>
  <button>Button 4</button>
 </form>
</footer>
0
regex9  01.07.2020, 11:30
@EinAlexander

Schau dir nochmal meinen Selektor an. Dieses Problem würde nur auftauchen, wenn man die gesetzte ID doppelt einsetzt, also fehlerhaftes Markup schreibt.

0
EinAlexander  01.07.2020, 11:34
@regex9
Dieses Problem würde nur auftauchen, wenn man die gesetzte ID doppelt einsetzt

Und da das nicht geht müsste man für jedes weitere verwendete Formular ein weiteres Script schreiben. Das macht das Ganze nicht wirklich übersichtlich.

0
regex9  01.07.2020, 11:46
@EinAlexander

Ein komplett neues Skript? Nein. Es gibt Funktionen oder man ändert den Query.

0
EinAlexander  01.07.2020, 11:51
@regex9
Es gibt Funktionen oder man ändert den Query.

Ja. Das wird dann eben mit jedem weiteren <form> unübersichtlicher.

0
regex9  01.07.2020, 11:56
@EinAlexander

Nein, eigentlich nicht. Statt der ID wird eine Klasse eingesetzt, der Query wird wie gesagt geändert.

0
EinAlexander  01.07.2020, 11:58
@regex9
Statt der ID wird eine Klasse eingesetzt

Richtig. Mit Klasse anstatt ID geht's.

0