Редактировать конкретную строку из таблицы (SQL & PHP)

0

Я работаю над проектом на PHP, и я не знаю, как это сделать.

У меня есть таблица с данными из базы данных.

Я хочу, чтобы в каждой строке таблицы была кнопка "edit", которая перенаправляет меня на другую страницу, откуда я могу редактировать и обновлять эту информацию. И кнопка "Удалить", которая удалит эти данные из базы данных.

Мой стол:

Клиенты (IdClient, имя, адрес, телефон)

Например, у меня есть:

Имя | Адрес | Телефон | - Кнопка EDIT | - Кнопка DELETE

Это мой код до сих пор.

<?php
    $db_host = 'localhost';
    $db_user = 'root';
    $db_pass = '1234';
    $db_name = "hoteldb";

    $con = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
    if ($con->connect_error)
            die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
    $sql = "SELECT * FROM clients ORDER BY IdClient DESC";
    $result = $con->query($sql);

    ?>
    <table>
        <tr style="font-weight:bold">
        <th>ID</th>
        <th>Name </th>
        <th>Address</th>
        <th>Phone</th>
        </tr>

        <?php
            if ($result->num_rows > 0) {
                 while($row = $result->fetch_assoc()) {
                    echo "<tr>";
                    echo "<td>" . $row["IdClient"] ."</td>";
                    echo "<td>" . $row["Name"]. "</td>";
                    echo "<td>" . $row["Address"] ."</td>";
                    echo "<td>" . $row["Phone"]. "</td>";
                    echo "</tr>";
                 }
            } else {
                 echo "0 results";
            }
            $con->close();
        ?>
    </table>

Можете ли вы мне помочь и сказать мне, как я могу это сделать?

  • 0
    Ваш код не показывает попытки, вы даже не добавили столбцы для Edit / Delete . С чем вы хотите помочь?
  • 0
    Следует упомянуть, что если вы не получили результатов в своем наборе записей, вы пытаетесь отобразить «0 результатов», но это делается внутри таблицы без тегов строки / ячейки, поэтому это будет неверной разметкой. Если это для домашней работы, то учитель будет отмечать вас
Теги:
database
select
edit

1 ответ

3
Лучший ответ

вы можете добавить еще один td:

<td><a href="edit.php?id=<?php echo urlencode($row['id']); ?>">Name</a></td>

а затем создайте функцию типа:

function find_client_by_id($client_id) {
        global $connection;

$safe_client_id = mysqli_real_escape_string($connection, $client_id);

$query = "SELECT * FROM 'clients' WHERE id = {$safe_client_id} LIMIT 1";
$client_set = mysqli_query($connection, $query);
if($client = mysqli_fetch_assoc($client_set)) {
    return $client;
} else {
    return null;
   }
}

то на странице edit.php вызовите функцию:

require_once('functions.php');

а также получить идентификатор клиента следующим образом:

$client = find_client_by_id($_GET['id']);

теперь вы можете создать свою форму и просто вызвать всю информацию, например:

<input type="text" name="name" value="<?php echo htmlentities($client['name'];) ?>"

а затем вы просто обновляете всю форму форму формы, как пример:

$id = $client['id'];
$name = mysqli_real_escape_string($_POST['name']);
$address = mysqli_real_escape_string($_POST['address']);

$query  = "UPDATE clients SET name = '{$name}', ";
$query .= "address = '{$address}' WHERE id = {$id} LIMIT 1";
$result = mysqli_query($connection, $query);
if($result) {
   // do something like success
} else {
   // do something else
}

и для удаления вы могли бы просто создать страницу delete.php и получить идентификатор клиента точно так же, как на странице редактирования, и как:

<td><a href="delete.php?id=<?php echo urlencode($clients['id']); ?>" onclick="return confirm('are you sure?');">Delete</a></td>

здесь у вас также есть немного javascript, чтобы убедиться, что вы случайно не коснитесь delete.

и на странице delete.php используйте ту же функцию

$client = find_client_by_id($_GET['id']);

$id = $client_id['id'];

$query = "DELETE FROM clients WHERE id = {$id} LIMIT 1";
$result = mysqli_query($connection, $query);
if($result && mysqli_affected_rows($connection) == 1) {
    //do something
} else {
    //do something else
}
  • 0
    Большое спасибо! Очень полезно!
  • 0
    ваш желанный друг :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню