Что-то не так с моим кодом:
На странице редактирования Я хочу показать пользователю предыдущее значение в поле ввода.
Но одна ошибка, которую я получаю по поводу значения, заключается в следующем:
Notice: Undefined variable: gebruikers_naam in C:\xampp\htdocs\website_herkansing\edit_gebruiker.php on line 72
Я думаю, что с частью isset/submit что-то не так, но я просто
не могу понять ..
Вот код, с которым я работаю
<?php
session_start();
define('DB_NAME', 'ochtendgloren');
$servername = "localhost";
$username = "root";
$password = "";
$db = "ochtendgloren";
$tbl = "members";
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
//Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['submit']))
{
$gebruikers_naam = mysqli_real_escape_string($db, $_POST['gebruikers_naam']);
htmlentities($gebruikers_naam);
$id = $_GET['id'];
$query = "UPDATE members
SET gebruikers_naam = '$gebruikers_naam'
WHERE id = '$id' " ;
$result = $conn->query($query);
if ($result){
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('edit succesvol!')
window.location.href='admin_members.php';
</SCRIPT>");
}
}
?>
<html>
<head>
<link rel = "stylesheet" href = "boekingsform.css">
<link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Abel">
</head>
<div class = "boeken">
<h1>Wijzig hier de gebruiker</h1>
<form action = "editrij.php?id=<?= $id ?>" method = "post" >
<div class = "row">
<div class = "col-25">
<label for = "gebruikers_naam"> vul hier de nieuwe gebruikers naam in: </label>
</div></div>
<br>
<div class = "row">
<div class = "col-75">
<input type = "text" name = "voornaam" required = "required" value = "<?= $gebruikers_naam['gebruikers_naam'] ?>"/>
</div>
</div>
<br>
<input type = "submit" value = "submit" name = "submit" />
</form>
</div>
</html>
Узнайте о подготовленных операторах для предотвращения SQL-инъекций
должен быть <input type='text' name='gebruikers_naam' />. Тег label не отправляется на php. ты знаешь, что это правильно
функция mysqli_real_escape_string () требует подключения к базе данных ($ conn в вашем коде, а не $ db, как сейчас) mysqli_real_escape_string($conn, $_POST['gebruikers_naam']);
@AkintundeOlawale ах, я вижу глупую ошибку, скопировал старый код, но забыл его изменить, но это все еще не так
@jibsteroos, конечно, спасибо! все еще не решает проблему со значением tho):






Вы отправляете не переменную gebruikers_naam, а voornaam. Эта строка кода
<input type = "text" name = "voornaam" required = "required" value = "<?= $gebruikers_naam['gebruikers_naam'] ?>"/>
Должно быть
<input type = "text" name = "gebruikers_naam" required = "required" value = "<?= $gebruikers_naam['gebruikers_naam'] ?>"/>
Кроме того, поскольку вы используете в форме переменные $ id и $ gebruikers_naam, вам следует присвоить им значение перед предложением if.
да глупая ошибка, спасибо! изменил его, но мой код по-прежнему показывает ту же ошибку):
Возможно, проблема в том, что вы используете $ id и $ gebruikers_naam в html, но они не имеют значения, пока вы не отправите форму. Перед строкой if (isset($_POST['submit'])) вы можете сделать выбор и присвоить им значение.
Я думаю, что проблема связана с использованием вашей переменной и именем поля ввода, это должно быть gebruikers_naam
В сети :
<input type = "text" name = "voornaam" required = "required" value = "<?= $gebruikers_naam['gebruikers_naam'] ?>"/>
Вы можете использовать $gebruikers_naam только для печати имени.
Также вы должны назначить глобальную переменную, прежде чем использовать ее в предложении if.
Просто присвойте null, как $gebruikers_naam = "";, после объявления переменных.
Можете ли вы помочь мне объяснить, как сделать это глобальной переменной, я просто не понимаю.
Я обновил свой ответ. Также помните, что $ gebruikers_naam не является массивом. Это просто переменная.
Все еще не совсем уверен, что «поток» вашего кода имеет большой смысл, но следующее должно немного помочь:
<?php
session_start();
//define('DB_NAME', 'ochtendgloren'); // not used in your code, commented out
$servername = "localhost";
$username = "root";
$password = "";
$db = "ochtendgloren";
$tbl = "members";
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
//Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['submit']))
{
if (isset($_POST['gebruikers_naam']) && !empty($_POST['gebruikers_naam'])) { // added condition: we need a 'gebruikers_naam'
$gebruikers_naam = mysqli_real_escape_string($conn, $_POST['gebruikers_naam']); // changed $db to $conn
// the return value (encoded string) of htmlentities is not used in your code
// so commented it out
//htmlentities($gebruikers_naam);
$id = $_GET['id'];
$query = "UPDATE members
SET gebruikers_naam = '$gebruikers_naam'
WHERE id = '$id' " ;
$result = $conn->query($query);
}
if ($result){
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('edit succesvol!')
window.location.href='admin_members.php';
</SCRIPT>");
} else { // added else {} statement
echo "<script> alert('Error: could not update the database'); </script>"; // added: error message
}
}
?>
<html>
<head>
<link rel = "stylesheet" href = "boekingsform.css">
<link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Abel">
</head>
<div class = "boeken">
<h1>Wijzig hier de gebruiker</h1>
<form action = "editrij.php?id=<?php echo $id; ?>" method = "post" > <!-- you need to echo $id and close with ';' - changed: echo $id; -->
<div class = "row">
<div class = "col-25">
<label for = "gebruikers_naam"> vul hier de nieuwe gebruikers naam in: </label>
</div></div>
<br>
<div class = "row">
<div class = "col-75">
<?php $gebruikers_naam = (isset($gebruikers_naam)) ? $gebruikers_naam : 'N/A'; ?> <!-- added a test to see if $gebruikers_naam is available -->
<input type = "text" name = "voornaam" required = "required" value = "<?php echo $gebruikers_naam; ?>"/> <!-- variable is $gebruikers_naam, changed (echo and ';') -->
</div>
</div>
<br>
<input type = "submit" value = "submit" name = "submit" />
</form>
</div>
</html>
Возможный дубликат PHP: «Примечание: неопределенная переменная», «Примечание: неопределенный индекс» и «Примечание: неопределенное смещение»