У меня есть HTML-таблица с произвольным количеством строк, каждая с 4 столбцами. И идея состоит в том, чтобы позволить пользователю редактировать любую из этих строк, а затем сохранить результат. Эти изменения должны быть сохранены в базе данных. Но у меня есть несколько проблем.
Я нашел несколько сообщений о stackoverflow, указывающих на то, как вы должны подходить к этому, но ни один совершенно не полезен в моем случае. Вот как это выглядит, когда пользователь редактирует мою таблицу (хотя у меня сейчас только одна строка, их может быть несколько).
мой стол http://oi58.tinypic.com/2gvq9nb.jpg
И, конечно же, есть кнопка отправки, которая переводит мой файл php с именем что-то вроде «handle_edit.php».
Сейчас еще один пост на stackoverflow Об этом указывалось, что я должен использовать какой-то цикл foreach для редактирования одной строки в таблице SQL на строку в моей таблице HTML. Моя версия этого цикла в «handle_edit.php» выглядит следующим образом:
foreach( $_POST['appearances'] as $appearances ) {
$goals = $_POST['goals'];
$assists = $_POST['assists'];
$name = ??????? //How to I do this?
mysqli_query($connection, "UPDATE players
SET appearances=$appearances, goals=$goals, assists=$assists
WHERE name=$name");
}
Прежде всего. foreach
Цикл должен содержать выражение массива, и компилятор говорит мне, что сейчас это не так. Но я понятия не имею, как посчитать количество строк. В теме, которую я связал выше, они делают что-то похожее на это, но я не думаю, что полностью понимаю, что они делают, так как мой foreach
цикл не работает.
Во-вторых, поскольку столбец имени в таблице не является полем ввода, я не знаю, как отправить его на эту страницу с остальной информацией. Мне нужно как-то это сделать, поскольку я хочу определить, какую строку редактировать, исходя из предоставленного имени. Каждый из игроков в этой таблице SQL имеет уникальный идентификатор игрока. Могу ли я использовать это как-нибудь?
Может быть, я подхожу к этому неправильно? Есть ли более жизнеспособное решение?
Пожалуйста, скажите мне, если вам нужен дополнительный код.
Заранее спасибо!
Прежде всего, имя переменной.
вам нужно добавить <input type='hidden' name='name' value='<*YOUR WAY OF GETTING THE NAME*>'/>
к вашей форме. если вы сделаете это, вы можете получить значение имени в цикле foreach с помощью $_POST['name']
, Для получения дополнительной информации о том, как сделать форму для PHP, смотрите здесь: http://www.w3schools.com/php/php_forms.asp
Во-вторых, неверно использовать строку sql. Вы не можете вводить имена переменных в строке. Я предлагаю сначала объявить строку sql следующим образом:
$sql = "UPDATE players SET appearances=" . $appearances . ", goals=" . $goals . ", assists=" . $assists . " WHERE name=". $name;
Затем установите соединение и выполните запрос следующим образом:
mysqli_query($connection, $sql);
для проблемы foreach я предлагаю отладку с использованием var_dump()
метод и посмотреть, если вы действительно получите массив с $_POST['appearances']
,
Надеюсь, это поможет.
Других решений пока нет …