0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4

Неправильно работает удаление записей

02.04.2016, 16:51. Показов 815. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть несложный код для добавления и удаления записей из БД, но когда нажимается кнопка "Удалить" _POST передает в любом случае только последний id и удаляется последняя запись. Не понимаю в чем проблема и как сделать чтобы каждая кнопка удалить соответствовала своей записи. Помогите пожалуйста, а то сам уже не знаю на что грешить.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
 
echo <<<_END
<html>
<head><title>Cats in zoo</title></head><body>
_END;
 
//подключение и настройка БД
require_once 'login_servers.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
 
if(!$db_server) die("Невозможно подключиться к MySQL: ". mysql_error());
 
mysql_select_db($db_database) or die("Невозможно выбрать базу данных: ". mysql_error());
 
 
//создание или проверка существования таблицы
$query_isset = "SHOW TABLES LIKE 'cats'";
 
if(!mysql_query($query_isset))
{
$query = "CREATE TABLE cats (
            id  SMALLINT NOT NULL AUTO_INCREMENT,
            family VARCHAR(32) NOT NULL,
            name VARCHAR(32) NOT NULL,
            age TINYINT NOT NULL,
            PRIMARY KEY (id)
            )";
 
$result = mysql_query($query);
if(!$result) die ("Сбой при доступе к базе данных". mysql_error());
}
 
 
 
 
if(isset($_POST['family']) &&
    isset($_POST['name']) &&
    isset($_POST['age']))
{
    $family = get_post('family');
    $name = get_post('name');
    $age = get_post('age');
    if (intval($age))
        {
            $query_add = "INSERT INTO cats VALUES(NULL, '$family', '$name', '$age')";
            $result_add = mysql_query($query_add);
            if(!$result_add) die("Сбой добавления данных в базу данных".mysql_error());
        }
    else {echo "Невозможно добавить данные. Укажите возраст цифрами.";}
}
 
 
//удаление данных с таблицы
if(isset($_POST['delete']) && $_POST['id'] != '')
{
    $id = get_post('id');
    $query_delete = "DELETE FROM cats WHERE id='$id' LIMIT 1";
    if(!mysql_query($query_delete, $db_server)) die("Сбой при удалении с базы данных: ".mysql_error());   
}
 
 
echo"<pre>Состав POST: "; 
print_r($_POST); 
echo "</pre><hr>";
 
//добавление данных в таблицу
echo <<<_END
<form action="cats.php" method="POST">
<table border="1"><tr><th>Family</th><th>Name</th><th>Age</th></tr>
<tr>
<td><input type="text" name="family" maxlength="20" /></td>
<td><input type="text" name="name" maxlength="20" /></td>
<td><input type="text" name="age" maxlength="3" /></td>
</tr>
<tr><td colspan="3" align="center"><input type="submit" value="Добавить"></td></tr>
</table>
</form><hr />
_END;
 
 
//просмотр данных таблицы
$query_show = "SELECT * FROM cats";
$result_show = mysql_query($query_show);
if(!$result_show) die ("Сбой доступа к базе данных".mysql_error());
$rows_show = mysql_num_rows($result_show);
echo "<form action='cats.php' method='POST'><table border='1'><tr><th>ID</th><th>Family</th><th>Name</th><th>Age</th></tr>";
for($s = 0; $s < $rows_show; ++$s)
{
$row_show = mysql_fetch_row($result_show);
echo "<tr>";
for($p = 0; $p < 4; ++$p) echo "<td>$row_show[$p]</td>";
echo "<td><input type='hidden' name='delete' value='yes'><input type='hidden' name='id' value='$row_show[0]'><input type='submit' value='Удалить'></td></tr>";   
}
echo "</table></form><hr />";
 
 
//просмотр свойств таблицы
$query_table = "DESCRIBE cats";
$result_table = mysql_query($query_table);
if(!$result_table) die ("Сбой при доступе к базе данных :". mysql_error());
$rows = mysql_num_rows($result_table);
echo "<table border='1'><tr><th>Column</th><th><Type></th><th>Null</th><th>Key</th></tr>";
for($j=0; $j < $rows; ++$j)
{
$row = mysql_fetch_row($result_table);
echo "<tr>";
for($k=0; $k < 4; ++$k) echo "<td>$row[$k]</td>";
echo "</tr>";
}
echo "</table></body></html>";
 
 
function get_post($var) 
{ 
return mysql_real_escape_string($_POST[$var]); 
} 
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2016, 16:51
Ответы с готовыми решениями:

Почему неправильно работает удаление символов из строки?
const g=; var s : string; i : integer; d : integer; begin readln (s); d := length (s); while i&lt;d do begin

Не работает удаление записей в БД
вопрос возник насчет удаления.при нажатии на кнопку раотает редактирование и добавлени записей в таблицу в удаление нет.как его сделать...

MySQL: не работает обновление и удаление записей. Найти ошибку в коде
Господа, немогу понять что делаю не так. Ткните пожалуйста поправкой в код. Инсёрт делаю так - РАБОТАЕТ private void...

7
 Аватар для UchihaSV
286 / 235 / 113
Регистрация: 08.06.2013
Сообщений: 725
02.04.2016, 17:03
Denver23, Потому что у вас все инпуты для удаления с одинаковым названием и в одной форме.
Нужно для каждого свою форму делать.
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
02.04.2016, 17:03
Denver23, у Вас одна форма для всех записей и для каждой одинаковое имя id. Как вариант, если не особо заморачиваться, можно для каждой записи (строки таблицы) сделать свою форму, т.е. внести открывающий и закрывающий теги form в цикл for.
1
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
02.04.2016, 17:12  [ТС]
UchihaSV, ну название там и должно быть одинаковым, я же потом проверяю именно существование delete и не пустой id. А проблема действительно в том, что форма одна на все кнопки, поместил форму внутрь цикла и заработало правильно. Спасибо за оперативные подсказки.
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
02.04.2016, 17:14
Denver23, именем для input`а может быть и массив (id[]), но тогда и на сервере его нужно обрабатывать как массив,а не строку, т.е. $_POST['id'][0]
0
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
02.04.2016, 17:29  [ТС]
romchiksoad, разве это не усложнит лишний раз код?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
02.04.2016, 18:54
UchihaSV и romchiksoad походу вам говорят про кнопку удаления помеченных записей. Если нужен функционал кнопки удаления отдельной записи, можете просто кнопку-ссылку использовать, а если команда передается методом POST, можете на JS делать пометку и активировать запрос через ту же общую кнопку удаления.

Добавлено через 2 минуты
Смысл в том, чтобы не лепить отдельную форму для каждой записи.
0
0 / 0 / 0
Регистрация: 06.06.2015
Сообщений: 4
02.04.2016, 20:23  [ТС]
miketomlin, да нет, я сделал отдельную форму для каждой кнопки и заработало как положено, у меня изначально же была одна форма на весь цикл, поэтому оно и возвращало только последнее значение _POST.

Да, я понимаю, изначально я и делал одну форму чтобы не лепить для каждой записи отдельную.
Спасибо за подсказку, но я пока практикуюсь только с PHP+MySQL без JS, до него очередь дойдет чуть позже
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2016, 20:23
Помогаю со студенческими работами здесь

Проверьте задачку по циклам, неправильно работает. [думаю что неправильно]
Спасибо что решили зайти. Задание выгладит так: http://*******/PW95p А результат выплнения: http://*******/KwhuS #include...

Неправильно работает цикл for, и функции работают неправильно
1) Неправильно работает цикл for(k=0...). Входит только 1 раз, дальше вылетает. Делал пошаговую отладку на проверку значения k. Выдаёт...

База данных на основе массива записей: добавление, удаление, поиск записей
Комрады, учусь асму, а некоторые моменты не осиливаю :( задача в реализовании некой базы данных с записями &quot;фамилия&quot;,...

Удаление всех записей из DataGridView и добавление записей
Всем доброго времени суток. Столкнулся со следующей проблемой: написал код на удаление строк DataGridView. Строки удаляет но не все, а...

Формы: добавление новых записей и удаление записей
у меня следующая форма (приложение) добавила кнопки добавление новых записей, удаление записей, вроде работает, нужно ли для них писать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru