Я пытаюсь создать страницу обновления для моего приложения формы, чтобы пользователи могли изменять то, что в формах. Проблема в том, что я продолжаю получать ошибки, такие как:
Примечание: неопределенный индекс в строке 72
$ PersonId = $ _GET [‘PersonId’];
<?phpfunction connect_db() {$mysqli = new mysqli('localhost', 'root', '', 'db_lab2');if (!$mysqli->set_charset("utf8")) {
echo "Fel vid inställning av teckentabell utf8: %s\n". $mysqli->error;
} else {
}
if ($mysqli->connect_errno) {
echo "Misslyckades att ansluta till MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
return $mysqli;
}?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<?php
if(isset($_POST['spara'])){$PersonId = $_POST['PersonId'];
$Fnamn = $_POST['Fnamn'];
$Enamn = $_POST['Enamn'];
$Gatuadress = $_POST['Gatuadress'];
$Postnummer = $_POST['Postnummer'];
$Postadress = $_POST['Postadress'];
$Telefon = $_POST['Telefon'];
$Epost = $_POST['Epost'];
$sql = "UPDATE person SET Fnamn='$Fnamn', Enamn='$Enamn', Gatuadress='$Gatuadress', Postnummer='$Postnummer', Postadress='$Postadress',
Telefon='$Telefon', Epost='$Epost' WHERE PersonId=$PersonId";if($mysqli = connect_db()) {
$mysqli->query($sql);
print_r($mysqli->error);
}echo "Personen är nu ändrad<br />";
echo "<a href='person.php'>Tillbaka till listningssidan</a>";
}
else{$PersonId = $_GET['PersonId'];$sql = "SELECT * FROM person WHERE PersonId=$PersonId";if($mysqli = connect_db()) {
$result = $mysqli->query($sql);
print_r($mysqli->error);
}
$myRow = $result->fetch_array()
?>
<form action="update_person.php?PersonId=<?php echo $PersonId ?>" method="post">
<table cellpadding="3" cellspacing="0" border="1">
<tr><td>Person</td><td><input type="text" name="PersonId" value="<? echo $myRow[0]; ?>" /></td></tr>
<tr><td>Förnamn</td><td><input type="text" name="Fnamn" value="<? echo $myRow[1]; ?>" /></td></tr>
<tr><td>Efternamn</td><td><input type="text" name="Enamn" value="<? echo $myRow[2]; ?>" /></td></tr>
<tr><td>Gatuadress</td><td><input type="text" name="Gatuadress" value="<? echo $myRow[3]; ?>" /></td></tr>
<tr><td>Postnummer</td><td><input type="text" name="Postnummer" value="<? echo $myRow[4]; ?>" /></td></tr>
<tr><td>Postadress</td><td><input type="text" name="Postadress" value="<? echo $myRow[5]; ?>" /></td></tr>
<tr><td>Telefon</td><td><input type="text" name="Telefon" value="<? echo $myRow[6]; ?>" /></td></tr>
<tr><td>Epost</td><td><input type="text" name="Epost" value="<? echo $myRow[7] ?>" /></td></tr>
<tr><td colspan="2"><input type="submit" name="spara" value="Spara" />
</table>
</form>
<?php
}
?></body>
</html>
<?php
function connect_db() {
$mysqli = new mysqli('localhost', 'root', '', 'db_lab2');
if (!$mysqli->set_charset("utf8")) {
echo "Fel vid inställning av teckentabell utf8: %s\n". $mysqli->error;
}
if ($mysqli->connect_errno) {
echo "Misslyckades att ansluta till MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
return $mysqli;
}?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<?php
if ( isset ( $_POST['spara'] ) ) {
$PersonId = $_POST['PersonId'];
$Fnamn = $_POST['Fnamn'];
$Enamn = $_POST['Enamn'];
$Gatuadress = $_POST['Gatuadress'];
$Postnummer = $_POST['Postnummer'];
$Postadress = $_POST['Postadress'];
$Telefon = $_POST['Telefon'];
$Epost = $_POST['Epost'];
if ( $mysqli = connect_db() ) {
$sql = "UPDATE person SET Fnamn='$Fnamn', Enamn='$Enamn', Gatuadress='$Gatuadress', Postnummer='$Postnummer', Postadress='$Postadress', Telefon='$Telefon', Epost='$Epost' WHERE PersonId=". $mysqli->escape_string($PersonId);
$mysqli->query ( $sql );
print_r ( $mysqli->error );
}
echo "Personen är nu ändrad<br />";
echo "<a href='person.php'>Tillbaka till listningssidan</a>";
} else {
if ( isset ( $_GET['PersonId'] ) ) {
if ( $mysqli = connect_db() ) {
$PersonId = $_GET['PersonId'];
$sql = "SELECT * FROM person WHERE PersonId=$PersonId";
$result = $mysqli->query($sql);
print_r ( $mysqli->error );
$myRow = $result->fetch_array();
}
}
?>
<form action="update_person.php?PersonId=<?php echo $PersonId ?>" method="post">
<table cellpadding="3" cellspacing="0" border="1">
<tr><td>Person</td><td><input type="text" name="PersonId" value="<? echo $myRow[0]; ?>" /></td></tr>
<tr><td>Förnamn</td><td><input type="text" name="Fnamn" value="<? echo $myRow[1]; ?>" /></td></tr>
<tr><td>Efternamn</td><td><input type="text" name="Enamn" value="<? echo $myRow[2]; ?>" /></td></tr>
<tr><td>Gatuadress</td><td><input type="text" name="Gatuadress" value="<? echo $myRow[3]; ?>" /></td></tr>
<tr><td>Postnummer</td><td><input type="text" name="Postnummer" value="<? echo $myRow[4]; ?>" /></td></tr>
<tr><td>Postadress</td><td><input type="text" name="Postadress" value="<? echo $myRow[5]; ?>" /></td></tr>
<tr><td>Telefon</td><td><input type="text" name="Telefon" value="<? echo $myRow[6]; ?>" /></td></tr>
<tr><td>Epost</td><td><input type="text" name="Epost" value="<? echo $myRow[7]; ?>" /></td></tr>
<tr><td colspan="2"><input type="submit" name="spara" value="Spara" />
</table>
</form>
<?php
}
?>
</body>
</html>
Это должно сделать.
Добавить условие isset:
Это может быть условие, что $_GET['PersonId']
не устанавливается.
$PersonId = isset($_GET['PersonId']) ? $_GET['PersonId'] : '';
Кроме того, если это значение не указано или не задано, код, следующий за ним, не используется.
Лучше использовать, если условие, как:
if (isset($_GET['PersonId']) {
$sql = "SELECT * FROM person WHERE PersonId=$PersonId";
// The form code
}
Проверьте, установлены ли параметры GET, прежде чем использовать их в вашем скрипте.
Вы могли бы сделать:
if (!isset($_GET['param'])) {
exit;
}
Прежде всего, это не ошибка, его предупреждение
и вы можете удалить это, добавив в начало вашего скрипта эту строку (игнорируйте предупреждения)
error_reporting(E_ERROR | E_PARSE);
И как уже было сказано, вы можете проверить, была ли инициализирована переменная
как это
if(isset($_GET['PersonId']) {
//do something with PersonId
}
Из вашего кода вы получите форму в предложении else. Вы помещаете переменную в форму, которая отображается только в том случае, если эта переменная находится в GET-запросе. Это добавлено в ваш URL?
Эта ошибка рождается, потому что $_GET['PersonId']
ищет PersonId
Параметр в вашем URL и не находит его.
Все, у кого есть ответы с isset
в этом тоже на правильном пути. Используйте это, чтобы правильно защитить ваш код.