Button in PHP eine Funktion zuweisen

dremba

Ensign
Registriert
März 2021
Beiträge
135
Ich versuche gerade in PHP Blackjack zu programmieren. Ich brauche einen Button für "keine weitere Karte ziehen" und für "weiter Karte ziehen". Wie kann ich jetzt dem Button die Funktion(vllt falscher Ausdruck dafür) zuweisen, das wenn der Button geklickt wird, die nächste Karte gezogen wird.
So funktioniert es nicht:
<input type="button" name="weiter" value="nächste Karte ziehen" />

if (isset($_POST['weiter'])){
echo $card['face'] . ' of ' . $card['suit'];
}
 
PHP läuft halt nur im Backend (auf dem Server), in deinem Browser stattdessen HTML/CSS/JS. Du musst nun dafür sorgen, dass eine Anfrage an deinen Server übermittelt wird, dort bearbeitet und das Ergebnis wieder in HTML ausgegeben wird.

Da du vermutlich nicht jedes mal die komplette Seite neu laden willst, bietet sich hier Ajax an.
Vereinfacht ausgedrückt: Damit sendest du per Javascript eine Anfrage zum Server, bearbeitest sie dort mit PHP und schickst die Antwort zurück, und Javascript wertet die Antwort entsprechend aus und aktualisiert den entsprechenden Teil deiner Webseite.
 
  • Gefällt mir
Reaktionen: dremba, proserpinus und Lawnmower
Vielleicht einfach

<form method="post">
<input type="submit" value="nächste Karte ziehen">
<input type="hidden" name="weiter" value="1">
</form>

if (isset($_POST['weiter']) && $_POST['weiter'] == 1){
echo $card['face'] . ' of ' . $card['suit'];
}

Geht aber alles mittels JS un Co. eleganter, aber wenn man gerade mit Programmieren anfängt, auch ok.
 
  • Gefällt mir
Reaktionen: eigsi124 und dremba
Das würde ich mit Javascript lösen und nur wenn nicht anders geht serversseitig (dann mit Hilfe von AJAX).
 
  • Gefällt mir
Reaktionen: FrAGgi, dremba und Der Lord
TheChief79 schrieb:
Vielleicht einfach

<form method="post">
<input type="submit" value="nächste Karte ziehen">
<input type="hidden" name="weiter" value="1">
</form>

if (isset($_POST['weiter']) && $_POST['weiter'] == 1){
echo $card['face'] . ' of ' . $card['suit'];
}

Geht aber alles mittels JS un Co. eleganter, aber wenn man gerade mit Programmieren anfängt, auch ok.
Danke ich probiere das mal fürs erste aus. Anonsten versuche ich es auch mal mit JS :)

edit: Problem ist das ich noch ein submit button für "keine weitere karte ziehen" habe. Und dieser macht dasselbe wie der "weiter" button.
 
Zuletzt bearbeitet:
dremba schrieb:
Danke ich probiere das mal fürs erste aus. Anonsten versuche ich es auch mal mit JS :)

edit: Problem ist das ich noch ein submit button für "keine weitere karte ziehen" habe. Und dieser macht dasselbe wie der "weiter" button.

Deswegen ja type="hidden", dann sieht man den zweiten button nicht.

EDIT: Achso, nee, verlesen

Mal so ganz grob.

<form method="post">
<input type="button" value="nächste Karte ziehen" onclick="document.getElementById("weiter").value = '0';this.form.submit();">
<input type="button" value="keine Karte ziehen" onclick="document.getElementById("weiter").value = '1';this.form.submit();">
<input type="hidden" name="weiter" id="weiter" value="0">
</form>
 
  • Gefällt mir
Reaktionen: dremba
Hmm funktioniert leider immer noch nicht :(
 
"Funktioniert nicht" ist nun wahrlich eine schlechte Beschreibung deines Problems, das man ohne Glaskugel nicht wirklich beheben kann. ;)

Angesichts deines Beispiels im ersten Beitrag nehme ich mal stark an, dass du gerade dabei bist die Grundlagen überhaupt erst zu lernen. Wie sind deine jetzigen "Skills" in etwa einzuschätzen (gerne genauer aufgegliedert in HTML, JS, PHP, etc...)? Wie gehst du beim Lernen vor? Fachliteratur vorhanden?

Ich frage das nur, um einen groben Überblick zu bekommen. Bringt ja nichts, dir Begriffe wie Ajax an den Kopf zu klatschen, wenn die Basics nicht vorhanden sind um damit umzugehen. :)
 
So gehts zumindest:

<form method="post" name="form">
<input type="button" value="nächste Karte ziehen" onclick="document.getElementById('weiter').value = 1;document.form.submit();">
<input type="button" value="keine Karte ziehen" onclick="document.getElementById('weiter').value = 0;document.form.submit();">
<input type="hidden" name="weiter" id="weiter" value="-1">
</form>
<?php

if (isset($_POST['weiter']) && $_POST['weiter'] == 1)
{
echo "nächste";
}
else if (isset($_POST['weiter']) && $_POST['weiter'] == 0)
{
echo "keine";
}
?>
 
Der Lord schrieb:
"Funktioniert nicht" ist nun wahrlich eine schlechte Beschreibung deines Problems, das man ohne Glaskugel nicht wirklich beheben kann. ;)

Angesichts deines Beispiels im ersten Beitrag nehme ich mal stark an, dass du gerade dabei bist die Grundlagen überhaupt erst zu lernen. Wie sind deine jetzigen "Skills" in etwa einzuschätzen (gerne genauer aufgegliedert in HTML, JS, PHP, etc...)? Wie gehst du beim Lernen vor? Fachliteratur vorhanden?

Ich frage das nur, um einen groben Überblick zu bekommen. Bringt ja nichts, dir Begriffe wie Ajax an den Kopf zu klatschen, wenn die Basics nicht vorhanden sind um damit umzugehen. :)
Ja bin ein ziemlicher Anfänger was programmieren angeht. Blackjack ist jetzt so das erste größere Programm was ich mal versuchen wollte. Also ich kann HTML und CSS, C++ Grundlagen und jetzt versuche ich gerade PHP zu lernen. Mit JS hatte ich noch nie was am Hut.
Ergänzung ()

TheChief79 schrieb:
So gehts zumindest:

<form method="post" name="form">
<input type="button" value="nächste Karte ziehen" onclick="document.getElementById('weiter').value = 1;document.form.submit();">
<input type="button" value="keine Karte ziehen" onclick="document.getElementById('weiter').value = 0;document.form.submit();">
<input type="hidden" name="weiter" id="weiter" value="-1">
</form>
<?php

if (isset($_POST['weiter']) && $_POST['weiter'] == 1)
{
echo "nächste";
}
else if (isset($_POST['weiter']) && $_POST['weiter'] == 0)
{
echo "keine";
}
?>
Vielen Dank dir für die Hilfe, funktioniert wie ich es mir vorgestellt habe :)
 
Zuletzt bearbeitet:
@TheChief79 Du weißt, dass du auch mehrere Formulare haben kannst? Dann kannst du auf dein hacky onclick verzichten, indem du deinen HTML-Code aus #3 duplizierst und nur beim hidden input den Wert änderst.
 
  • Gefällt mir
Reaktionen: dremba und Der Lord
Zurück
Oben