środa,
Usuwanie rekordów z bazy danych
Aby w pełni prezentowane zrozumieć przykłady, wymagana jest znajomość zagadnień przedstawionych w poprzednich materiałach. Tabela wykorzystana w przykładach jest dostępna do pobrania.
Wyświetlanie danych
Wyświetlanie danych zrealizowano podobnie jak w poprzednim materiale. Zasadniczą różnicą jest generowanie formularzy, które umożliwią wskazanie danych do usunięcia. Do wysyłki formularza przyjęto metodę POST, ponieważ jego wysłanie wprowadzi trwałą zmianę po stronie serwera. Identyfikator rekordu do usunięcia umieszczony został jako atrybut value ukrytego (type="hidden") pola formularza.
include 'config.php';
$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
$result = mysqli_query($link, "SELECT nid, fname, lname FROM names ORDER BY lname ASC LIMIT 10");
echo '<table><tr>
<th>First name</th>
<th>Last name</th>
<th> </th>
</tr>';
while($row = mysqli_fetch_row($result)) {
vprintf('<tr><td>%s</td><td>%s</td>
<td><form action="" method="post">
<input type="hidden" name="nid" value="%s">
<input type="submit" name="s" value="Usuń">
</form></td>
</tr>', $row);
}
echo '</table>';
Wyświetlone dane
Imię | Nazwisko | |
---|---|---|
Oren | Aguilar | |
Callum | Barber | |
Vincent | Beach |
Usuwanie rekordu
Z założenia, danym wysłanym przez użytkownika nie powinno się bezgranicznie ufać, dlatego za pomocą funkcji sprintf() wymuszany jest właściwy typ danych (%d). Po wykonaniu zapytania SQL strona zostaje przeładowana na adres ustalony na podstawie zmiennej $_SERVER['PHP_SELF'] – do tej samej lokalizacji, jednak za pomocą metody GET. Instrukcja die() oznacza bezwarunkowe zaprzestanie wykonywania dalszej części skryptu.
include 'config.php';
$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
if(isset($_POST['nid'])) {
$sql = sprintf("DELETE FROM names WHERE nid = %d", $_POST['nid']);
mysqli_query($link, $sql);
header('Location: ' . $_SERVER['PHP_SELF']);
die();
}
Pełna implementacja usuwania danych
include 'config.php';
$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
if(isset($_POST['nid'])) {
$sql = sprintf("DELETE FROM names WHERE nid = %d", $_POST['nid']);
mysqli_query($link, $sql);
header('Location: ' . $_SERVER['PHP_SELF']);
die();
}
$result = mysqli_query($link, "SELECT nid, fname, lname FROM names ORDER BY lname ASC LIMIT 10");
echo '<table><tr>
<th>First name</th>
<th>Last name</th>
<th> </th>
</tr>';
while($row = mysqli_fetch_row($result)) {
vprintf('<tr><td>%s</td><td>%s</td>
<td><form action="" method="post">
<input type="hidden" name="nid" value="%s">
<input type="submit" name="s" value="Usuń">
</form></td>
</tr>', $row);
}
echo '</table>';
Podstawy pracy z MySQLi
- Wprowadzenie do MySQLi.
- Deklarowanie parametrów połączenia z bazą danych.
- Obsługa błędów w MySQLi.
- Pobieranie rekordów z bazy danych.
- Dodawanie rekordów.
- Usuwanie rekordów z bazy danych.