Здравствуйте! Долгое время никак не получается как решить следующую проблему: 1. Запросом GET по имени вывожу данные из БД в табличном виде в input-ы для того, чтобы их можно было отредактировать и POST запросом по кнопке вновь занести в БД. 2. Поскольку могут выводиться несколько строк из базы данных, пытаюсь сделать checkbox для того, чтобы можно было удалить или сохранить в бд только выбранные строки. Проблема: 1. Не могу понять как именно связать выводимую строку с выбираемым checkbox. У меня получается что либо по кнопке передаются абсолютно все выведенные данные (если всем инпутам дать имя как у чекбокса), либо последняя выведенная строка из бд по get запросу, вне зависимости от того на какой checkbox я ставлю галочку... Вот код запроса данных и внизу две кнопки "Сохранить" и "Удалить" PHP: <?php if (isset($_GET['names'])) { $names = $_GET['names']; if($names == false) { echo "<br><b style='color:red'>Введи имя</b>"; } else { mysqli_query($link, "SET NAMES 'utf8'"); $query = "SELECT * FROM tablballs WHERE nickname='$names'"; $result = mysqli_query($link, $query) or die("Ошибка ".mysqli_error($link)); if($result) { $rows = mysqli_num_rows($result); if ($rows > 0) { echo "<br>Данные игрока <b style='color:red'>$names</b><br><br>"; echo "<form method='POST' action=''><table class='table_dark2'><tr> <th>Выбор</th> <th>id</th> <th>Имя</th> <th>Очки</th> </tr>"; echo "<tr>"; for($i = 0; $i < $rows; ++$i) { $row = mysqli_fetch_row($result); echo "<td><input class='input_checkbox' type='checkbox' name='check' value=' '>"; echo nl2br("<td><input class='input' name='id_user' value='$row[0]' readonly='readonly'</td>"); echo nl2br("<td><input class='input' name='nick_user' value='$row[1]'></td>"); echo nl2br("<td><input class='input' name='point_user' value='$row[2]'></td>"); echo "</tr>"; echo "<th colspan='4'>История игрока</th>"; echo "<tr>"; echo "<td colspan='4'><textarea class='textarea' name='history_user'>$row[3]</textarea></td>"; echo "</tr>"; } echo "</table><br><br>"; echo " <div class='block_button'> <button class='button10' type='submit' name='update_line'>Сохранить изменения</button> <button class='button10' type='submit' name='del_line'>Удалить строку</button> </div></form>"; } else { echo "<table class='table_dark2'> <tr> <th>Ошибка</th> </tr> <tr> <td>Такого имени нет</td> </tr> </table>"; } } } } ?> include_once '../script/editing.php'; Далее код editing.php , но он актуален только для простых строк без чекбоксов.. PHP: <?php // Обновление данных if (isset($_POST['update_line'])) { include_once 'connect.php'; $id_player = $_POST['id_user']; $nickname_player = $_POST['nick_user']; $points_player = $_POST['point_user']; $history_player = $_POST['history_user']; $query ="UPDATE tablballs SET nickname='$nickname_player', balls='$points_player', history='$history_player' WHERE id='$id_player'"; $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); if($result) { echo "<b style='color:red'>Данные игрока $nickname_player обновлены</b>"; } } // Удаление данных if (isset($_POST['del_line'])) { include_once 'connect.php'; $id = $_POST['id_user']; $nickname = $_POST['nick_user']; $query = "DELETE FROM tablballs WHERE id = '$id'"; $result = mysqli_query($link, $query) or die("Ошибка ".mysqli_error($link)); echo "<br><b style='color:red;'>Игрок $nickname (id $id) удален из таблицы</b>"; } Вот что примерно выводится т.е. мне нужно чтобы при нажатии на 2 галочку изменялась вторая строка) Подскажите пожалуйста как реализовать, какие темы почитать или скиньте ссылку с темой где я могу найти ответы на свои вопросы, я сколько искал но не нашел того, что бы мне помогло..
Множественное редактирование – это идиотизм. Даже когда для пользователя оно выглядит так, в реале обновление происходит отдельными записями или даже отдельными полями отдельных записей. --- Добавлено --- Осваивайте AJAX или переходите на редактирование отдельными записями.
@Cyusik я делал такое буквально недавно, человеку надо было без JS для лабораторной работы: PHP: function table_2( $db ) { $sql ="SELECT `mg`.id, `ms`.`fio`, `ml`.`lesson`, `mg`.grade FROM `my_student` AS `ms` LEFT JOIN `my_grade` AS `mg` ON `mg`.`student_id` = `ms`.`id` LEFT JOIN `my_lessons` AS `ml` ON `ml`.`id` = `mg`.`lesson_id`"; $query = $db->prepare($sql); $query->execute(); $row = $query->fetchAll(); $table = '<form method="post"><table border="1" style="text-align:center; padding: 2px"> <caption>Полный список</caption> <tr> <th>ФИО</th> <th>Предмет</th> <th>Оценка</th> <th>Изменить</th> </tr>'; foreach( $row as $key => $item ) { $select = "<select name='chage[{$key}]'><option selected disabled>Выберите оценку</option>"; for ($i = 1; $i <= 10; $i++) { $select .= "<option value='{$i}'>{$i}</option>"; } $select .= "</select><input type='hidden' name='grade_id[$key]' value='{$item['id']}'/>"; $table .= "<tr> <td>{$item['fio']}</td> <td>{$item['lesson']}</td> <td>{$item['grade']}</td> <td>{$select}</td> </tr>"; } $table .= "</table><br><input type='submit' value='Изменить оценки'/> </form>"; return $table; } insert не покажу, но думаю будет понятно как надо) как работает тут http://testui.ru/
"Идите и учитесь" - что может быть проще.. Хоть бы подсказали, что на Ваш взгляд лучше и с чего начать, я то не против. --- Добавлено --- Буду пробовать, может что-то путное выйдет с foreach. Спасибо Вам
А вам не понятно, что на мой взгляд лучше, исходя из этого: P.S. При редактировании отдельных записей, конечно, тоже можно использовать AJAX. Вся разница в том, как отображается форма редактирования, на отдельной странице или на странице списка (во всплывающем блоке).
Проблема в недопонимании как работает этот элемент формы. У вас что-то вроде: Код (Text): <form method=post action="checkbox.php"> <input type=checkbox name="check" value="check1"><br /> <input type=checkbox name="check" value="check2"><br /> <input type=checkbox name="check" value="check3"><br /> <input type=submit value="GO"> </form> Все элементы названы одинаково. В этом случае будет отправлен только последний из активированных Выхода два. Либо именовать все эти элементы различными именами, например: Код (Text): <form method=post action="checkbox.php"> <input type=checkbox name="check01" value="check1"><br /> <input type=checkbox name="check02" value="check2"><br /> <input type=checkbox name="check03" value="check3"><br /> <input type=submit value="GO"> </form> И уже искать в полученном массиве S_POST все элементы с именами начинающимися на "check" Либо же преобразовать имена этих элементов в массив. Средствами HTML. Просто добавив к имени элемента []. Вот попробуйте: PHP: <?php if (isset($_POST['check'])) { print_r($_POST['check']); } else { echo 'something wrong<br /><br />'; } ?> <form method=post action="checkbox.php"> <input type=checkbox name="check[]" value="check1"><br /> <input type=checkbox name="check[]" value="check2"><br /> <input type=checkbox name="check[]" value="check3"><br /> <input type=submit value="GO"> </form>