Guten Abend
Ich habe eine Datei settings.php, welche immer den Datensatz mit der ID = 0 zum aktualisieren einlesen soll.
Es funktioniert alles, ausser dass er die ID irgendwie nicht finden oder zuordnen kann (No id specified!)
Ausser ich helfe manuell nach und ergänze nach dem Aufruf die URL indem ich ?id=0 anhänge (dann wird Formular aufgerufen, ich kann mutieren und abspeichern).
Nachdem einiges Suchen und Ausprobieren nichts genützt hat, erlaube ich mir hier die Frage zu stellen, wie ich den Code ergänzen/ändern muss.
Ich habe eine Datei settings.php, welche immer den Datensatz mit der ID = 0 zum aktualisieren einlesen soll.
Es funktioniert alles, ausser dass er die ID irgendwie nicht finden oder zuordnen kann (No id specified!)
Ausser ich helfe manuell nach und ergänze nach dem Aufruf die URL indem ich ?id=0 anhänge (dann wird Formular aufgerufen, ich kann mutieren und abspeichern).
Nachdem einiges Suchen und Ausprobieren nichts genützt hat, erlaube ich mir hier die Frage zu stellen, wie ich den Code ergänzen/ändern muss.
PHP-Code:
<?php
include_once 'main.php';
if (!$_SESSION['role'] == 'Admin') {
header("Location: home.php");
exit;
}
$messages_false =[];
$messages_true = [];
// Variable an die URL angehängt (bei form action = ...)?
if (isset($_GET['id'])) {
if (!empty($_POST)) {
// POST-Variablen vorhanden? - sonst nimm leeren Wert
$id = isset($_POST['id']) ? $_POST['id'] : ''; // NULL;
$db_charset = isset($_POST['db_charset']) ? $_POST['db_charset'] : '';
$mail_from = isset($_POST['mail_from']) ? $_POST['mail_from'] : '';
$mail_address = isset($_POST['mail_address']) ? $_POST['mail_address'] : '';
$account_activation = isset($_POST['account_activation']) ? $_POST['account_activation'] : '';
$activation_url = isset($_POST['activation_url']) ? $_POST['activation_url' ] : '';
if (empty($messages_false)) {
// Aendere den Datensatz (record)
$stmt = $pdo->prepare('UPDATE settings SET id = ?, db_charset = ?, mail_from = ?, mail_address = ?, account_activation = ?, activation_url = ? WHERE id = ?');
$stmt->execute([$id, $db_charset, $mail_from, $mail_address, $account_activation, $activation_url, $_GET['id']]);
$messages_true[] = 'Datensatz ist gespeichert';
}
}
// Get the account from the settings table
$stmt = $pdo->prepare('SELECT * FROM settings WHERE id = ?');
$stmt->execute([$_GET['id']]);
$account = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$account) {
exit('Kein Kontakt mit dieser id');
}
}
else {
exit('No id specified!');
}
?>
<?=template_header('Update')?>
<div class="content update">
<h2>Einstellung ändern</h2>
<form action="settings.php?id=<?=$account['id']?>" method="post">
<div class="tabelle">
<div class="fl">
<label for="db_charset">Charset</label><br>
<input type="text" name="db_charset" value="<?php echo isset($account['db_charset']) ? htmlspecialchars($account['db_charset']) : ''; ?>" />
</div>
<div class="fl">
<label for="mail_from">Email von</label><br>
<input type="text" name="mail_from" value="<?php echo isset($account['mail_from']) ? htmlspecialchars($account['mail_from']) : ''; ?>" />
</div>
<div class="fl">
<label for="mail_address">Email-Adresse</label><br>
<input type="text" name="mail_address" value="<?php echo isset($account['mail_address']) ? htmlspecialchars($account['mail_address']) : ''; ?>" />
</div>
<div class="fl">
<label for="account_activation">Account Aktivierung</label><br>
<input type="text" name="account_activation" value="<?php echo isset($account['account_activation']) ? htmlspecialchars($account['account_activation']) : ''; ?>" />
</div>
<div class="fl">
<label for="activation_url">Aktivierungs-Internetadresse</label><br>
<input type="text" name="activation_url" value="<?php echo isset($account['activation_url']) ? htmlspecialchars($account['activation_url']) : ''; ?>" />
</div>
<div class="fl">
<input type="submit" value="Sichern">
<?php
// Fehlermeldungen ausgeben:
echo '<div class="false">';
foreach($messages_false as $message) {
echo '<p>'.htmlspecialchars($message).'</p>';
}
echo '</div>'; ?>
<?php
// Erfolgsmeldungen ausgeben:
echo '<div class="true">';
foreach($messages_true as $message)
{
echo '<p>'.htmlspecialchars($message).'</p>';
}
echo '</div>'; ?>
</div>
</div>
</form>
</div>
<?=template_footer()?>
Kommentar