Hallo zusammen,
ich habe nun eine Woche PHP-Unterricht hinter mir. Meine Hausaufgabe ist es, ein Formular zu erstellen, dessen Werte in einer Session-ID gespeichert werden. Nach dem Absenden des Formulars werden dem User alle Einträge noch einmal gezeigt, und er kann ggf. mit einem Zurück-Link ins Formular zurückkehren und seine Angaben ändern, die sich dank der Session-ID noch immer in den Formularfeldern befinden. Das habe ich alles hinbekommen, es funktioniert.
Was nicht funktioniert, sind mehrere Checkboxen. Wenn ich eine davon auswähle, das Formular absende und mir die Ausgabe auf der Ergebnisseite anschaue, ist alles in Ordnung, nur der Wert der gewählten Checkbox wird angezeigt. Kehre ich aber zum Formular zurück, sind alle drei Boxen ausgewählt. Meine Überprüfung mit isset funktioniert hier also nicht. Das ist der Code:
<input type="checkbox" value="mag ich" name="fussball" id="fussball" <?php echo (isset($_SESSION['fussball'])) ? 'checked' : false; ?>>
<label for="fussball">
Fußball
</label>
<input type="checkbox" value="mag ich" name="handball" id="handball" <?php echo (isset($_SESSION['handball'])) ? 'checked' : false; ?>>
<label for="handball">
Handball
</label>
<input type="checkbox" value="mag ich" name="laufen" id="laufen" <?php echo (isset($_SESSION['laufen'])) ? 'checked' : false; ?>>
<label for="laufen">
Laufen
</label>
Alles anzeigen
Ich komme nicht darauf, welchen Wert ich zusätzlich prüfen müsste, damit das "checked" nur für die wirklich gesetzten Checkboxen übernommen wird. Oder muss ich bei mehreren Checkboxen ganz anders vorgehen?
Ich danke im Voraus für jede Hilfe!
Gruß
Felix
---
Nachtrag: Ich habe hier mal den entsprechenden Code in einem funktionierenden PHP-Dokument, bereinigt um alles Überflüssige. Das macht es bestimmt einfacher für Euch. Sorry, hätte ich schon vorhin machen sollen.
<?php
declare(strict_types=1);
session_start();
const NL = '<br>';
?>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>phpGrundlagen</title>
</head>
<body>
<?php
if (isset($_POST['sendenPost'])) {
$vorgaben = array(
'Anrede' => 'anrede',
'Name' => 'name',
'Vorname' => 'vorname',
'Land' => 'land',
'PLZ' => 'plz',
'Ort' => 'ort',
'Straße' => 'strasse',
'HausNr.' => 'hausnr',
'Email' => 'email',
'Verein' => 'verein',
'Fußball' => 'fussball',
'Handball' => 'handball',
'Laufen' => 'laufen',
'Nachricht' => 'nachricht',
'Newsletter' => 'newsletter',
);
$keys = array_keys($vorgaben);
$values = array_values($vorgaben);
for ($j = 0; $j < count($keys); $j++) {
echo $keys[$j] . ': ' . $_SESSION[$values[$j]] = $_POST[$values[$j]] ?? '';
echo NL;
}
echo NL;
echo '<a href="' . $_SERVER['PHP_SELF'] . '">zurück</a>';
echo NL;
echo NL;
} else {
?>
<form>
<label for="verein">Welche Sportarten mögen Sie?</label>
<input type="checkbox" value="mag ich" name="fussball"
id="fussball" <?php echo (isset($_SESSION['fussball']) && $_SESSION['fussball'] == 'mag ich') ? 'checked' : false; ?>>
<label for="fussball">
Fußball
</label>
<input type="checkbox" value="mag ich" name="handball"
id="handball" <?php echo (isset($_SESSION['handball'])) ? 'checked' : false; ?>>
<label for="handball">
Handball
</label>
<input type="checkbox" value="mag ich" name="laufen"
id="laufen" <?php echo (isset($_SESSION['laufen'])) ? 'checked' : false; ?>>
<label for="laufen">
Laufen
</label>
<br><br>
<button type="submit" name="sendenPost"
formaction="<?php echo $_SERVER['PHP_SELF']; ?>" value="sendenP" formmethod="post">Nachricht senden
</button>
<br><br>
<button type="submit" name="destroySession"
formaction="<?php session_destroy(); ?>" value="sendenP" formmethod="post">Session Destroy
</button>
</form>
<?php
}
?>
</body>
</html>
Alles anzeigen