О странице update.php: сообщения об ошибках, которые вы получаете, говорят о том, что «имя», «фамилия» и «плз» не определены.
Это потому, что вы пытались определить их, используяPOST:
$contactDto->setFirstName($_POST['firstname']);
$contactDto->setLastName($_POST['lastname']);
$contactDto->setPlz($_POST['plz']);
Но на самом деле значения имени, фамилии и plz не были размещены на этой странице.POST активируется только когда вы нажимаете кнопку отправки в форме, где вы написали
<form method="POST"...
Но вы попали на страницу update.php не через форму, а через гиперссылку в этой таблице.Вы сделали:
foreach ($contacts as $contact) {
?>
<tr>
<th scope="row"><?php echo $contact->getId()?></th>
<td><?php echo $contact->getFirstname() ?></td>
<td><?php echo $contact->getLastname() ?></td>
<td><?php echo $contact->getPlz() ?></td>
<td><a href=delete.php?id=<?php echo (int)$contact->getId()?> >Delete</a></td>
<td><a href=update.php?id=<?php echo (int)$contact->getId()?> >Update</a></td>
</tr>
<?php
}
?>
Это не так!Эта таблица очень хорошая.
Но на странице update.php вы не можете определить 'firstname', 'lastname' и 'plz', используя $ _POST ['....'].
Единственное, что на странице update.php определено, это 'id'.Это потому, что «id» был единственным, что вы отправили на эту страницу, используя метод get.Опять же: это правильный способ сделать это, поэтому не меняйте это.
**
То, что вам нужно изменить, это:
**
изменить код:
$contactDto = new ContactDto();
$contactDto->setId($_GET['id']);
$contactDto->setFirstName($_POST['firstname']);
$contactDto->setLastName($_POST['lastname']);
$contactDto->setPlz($_POST['plz']);
На это:
$contactDto = new ContactDto();
$contactDto->setId($_GET['id']);
Таким образом, определен только «id».Теперь определите «firstname», «lastname» и «plz», получив эти значения из вашей базы данных, используя запрос.
Примерно так:
$getstuff = "SELECT * FROM yourtablename WHERE id = $thevariablethatcontainstheid";
(я думаю, переменная, которая содержитid: $ contactDto-> setId (); ??)
Затем выполните запрос в следующей строке:
$results = mysqli_query($yourconnectingthing,$getstuff);
И напишите это ниже:
$row = $results->fetch_assoc();
И тогда вы можете определить «имя», «фамилия» и «плз»!Написав это:
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$plz = $row['plz'];
Теперь последнее, что вам нужно изменить, это значения в форме редактирования.Это был ваш код:
<tr>
<th>First Name: </th>
<td>
<input type="text" id="vorname" name="firstname" placeholder="Dein Vorname" size="35" value="<?php echo $contactDto->getFirstName(); ?>">
</td>
</tr>
измените его на:
<tr>
<th>First Name: </th>
<td>
<input type="text" id="vorname" name="firstname" placeholder="Dein Vorname" size="35" value="<?php echo $firstname ?>">
</td>
</tr>