@NeroKore
Начинающий

Как в цикле редактировать БД?

Доброго времени суток, сложилась такая проблема. Соединение с БД происходит с помощью RedBeanPHP
Есть у меня БД под именем bugs , в ней есть поля : id, login, date, text, done и так далее.
По умолчанию done стоит false
Вывод происходит с помощью цикла foreach
Вывод показан на картинке :
5aa3f6e42f178374837995.png
В чем собственно проблема, хочу , что бы при нажатии на кнопку "Проблема решена"(name = bug_done), в БД именно для этой формы done менялась на true.
Как поменять я знаю, но когда я делаю , что при нажатии на кнопку "Проблема решена", в БД done меняется на true, то он меняется только у последнего ID, который был выведен. К примеру :
5aa3f99e77d9f800007760.png
Вот данном изображении. У нас есть 3 формы , в которых выводится информация. Если я нажму в любой из форм на кнопку "Проблема решена", то она меняется только у ID:3 , так как в БД он последний.
Вот код на исполнение замены :
$bugs = R::findAll('bugs');
	$data = $_POST;
if (isset($data['bug_done'])) {
	$bugs->done = 'true';
	R::store($bugs);
}
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
вариант 1:
Каждый из блоков заключить в тег <form></form>, внутри создать соответствующие скрытые поля. При субмите будете получать весь набор данных, согласно которым уже можно что-то в базу писать. У вас же судя по всему одна форма на весь список. По этому в обработчик попадают все данные, но та как поля дублируются по имени - учитываются последние полученные данные, то есть самые нижние поля. Что и происходит у вас, последний набор меняет состояние.
Вариант 2: принцип как у варианта 1, только через яваскрипт отлавливать нажатую кнопку и от этого уже делать субмит нужных полей, например используя аякс. Вариант более сложный для новичка, и в целом не слишком популярный.
Вариант 3: смесь 1 и 2 - при субмите формы отлавливать событие яваскриптом и отправлять данные аяксом на сервер в виде сериализованных данных. По результату ответа от сервера менять состояние кнопки яваскриптом на "готово", или как там у вас, и кнопку дизэйблить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы