Как удалить из таблицы json?

У меня есть таблица, как показано ниже:

                <table class = "table">
                    <thead class = "thead-dark">
                        <tr>
                            <th scope = "col">ID</th>
                            <th scope = "col">Nazwa</th>
                            <th scope = "col">Cena</th>
                            <th scope = "col">Kupujący</th>
                            <th scope = "col"> </th>
                        </tr>
                    </thead>
                    <tbody>
                    <?php foreach($data as $key => $value): ?>
                        <tr>
                            <td><?php echo $value['id']; ?></td>
                            <td><?php echo $value['name']; ?></td>
                            <td><?php echo $value['price']; ?></td>
                            <td><?php echo $value['buyer']; ?></td>
                            <td><button type = "button" name = "button2" >Usuń</button></td>
                        </tr>
                    <?php endforeach; ?>
                    </tbody>
                </table>

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

мой php:

 
    $jsonData = file_get_contents("data.json");
    $data = json_decode($jsonData, true);
    

спасибо за любую помощь, я не знаю, как получить значение, нажав кнопку:/

вы можете передать $key при нажатии кнопки в php-форму, а с помощью unset($data[$key]) на php вы можете удалить определенную запись из массива

Prateik Darji 20.12.2020 18:54

@PrateikDarji, можете ли вы показать, как передавать данные при нажатии кнопки? :( Я новичок в php :(

interiaRules 20.12.2020 18:58

Конечно, не могли бы вы объяснить мне, как загружаются данные? код php и html находится на одной странице?

Prateik Darji 20.12.2020 19:03

да, все на этой же странице

interiaRules 20.12.2020 19:04

я не знаю, как получить ключ записи в таблице, чтобы удалить эту строку в php-скрипте

interiaRules 20.12.2020 19:05

проверить мой ответ

Mostav 20.12.2020 19:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
157
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, что ваши данные получены из файла, поэтому для этого вам нужно выполнить все эти шаги в одном и том же php-скрипте:

  • Получить данные из этого файла
  • Анализировать данные с помощью json_decode
  • Удалить предмет с помощью unset($data['id'])
  • Сохранить новые данные в том же файле

Вот пример:

$jsonData = file_get_contents("data.json");
  $data = json_decode($jsonData, true);

  // here we go
  if (isset($_POST['item_key']) && !empty($_POST['item_key'])) {
    $data = array_values($data);
    $i=0;
    foreach($data as $element) {
      //check if it's the right item
      if (intval($_POST['item_key']) == $element['id']){ // intval only if you are sure id passed in POST[item_key] always integer 
         unset($data[$i]);
      }
      $i++;
   }
    file_put_contents('data.json', json_encode(array_values($data)));
  }

$_POST['item_key'] придет после отправки формы в html, см. ниже. В ваш html-код вам нужно будет добавить следующее:

<table class = "table">
    <thead class = "thead-dark">
        <tr>
            <th scope = "col">ID</th>
            <th scope = "col">Nazwa</th>
            <th scope = "col">Cena</th>
            <th scope = "col">Kupujący</th>
            <th scope = "col"></th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($data as $key =>
        $value): ?>
        <tr>
            <td><?php echo $value['id']; ?></td>
            <td><?php echo $value['name']; ?></td>
            <td><?php echo $value['price']; ?></td>
            <td><?php echo $value['buyer']; ?></td>
            <td>
                <!-- action = "#" means you will stay in the same script after submit -->
                <form action = "#" method = "POST">
                    <input
                        hidden
                        type = "text"
                        name = "item_key"
                        value = "<?php echo $value['id'];?>"
                    />
                    <input type = "submit" value = "Remove" />
                </form>
            </td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

ОБНОВЛЯТЬ

  • Используется unset с array_values после json_decode
  • Удалено header(refre..), так как обновление будет выполняться путем отправки формы в тот же скрипт.

я получаю Warning: Cannot modify header information - headers already sent by (output started at /24/table.php:1) in /24/table.php on line 56 после запуска, строка 56 ваша header("Refresh:0");

interiaRules 20.12.2020 19:46

и удаление не работает правильно: / после нажатия на кнопку элемент все еще здесь

interiaRules 20.12.2020 19:51

Можете ли вы привести пример вашего data.json?

Mostav 20.12.2020 20:05

`[ { "id": 1, "name": "Cyberpunk 2077", "покупатель": "V", "price": "199" } ]`

interiaRules 20.12.2020 20:25

в этом случае я буду использовать array_values для получения данных после декодирования, скоро сообщу вам

Mostav 20.12.2020 20:46

Посмотрите также полный пример здесь: github.com/mostafero/php-remove-html-table-item

Mostav 20.12.2020 21:20
foreach($data as $i => $element) { вместо того, чтобы самостоятельно управлять переменной $i.
Iván Pérez 20.12.2020 21:30

Другие вопросы по теме