|
|
|
| Добрый день.
Прошу прощения за повтор темы. Просто не нашёл ответа на свой вопрос в предыдущих.
У меня на странице список записей, который выводится в таблице, и слева от каждой записи стоит по чекбоксу.
Если мне надо что нибудь удалить, я ставлю галочки и жму на кнопку Стереть.
Вот отрывок кода:
// delete records
if(isset($_POST['deletelist'])) {
$deletelist = $_POST['deletelist'];
$deletestr = implode(",",$deletelist);
mysql_query("DELETE FROM bookmarks WHERE Bookmark_ID IN ($deletestr)");
}
|
function deleteRecord(button){
// show confirmation message
var msg = confirm("Are you sure you want to delete selected record(s)?");
// if users accepts, delete selected records
if(msg == true){
button.disabled = true;
document.forms.frm_bookmarks.submit();
}
}
|
while ( $list = mysql_fetch_array( $sql_total_records ) ) {
// alter cell colors
$bgc = ( $bgc==='tdLight' ? 'tdDark' : 'tdLight' );
?>
<tr>
<td align="center" class="<?php print($bgc);?>" width="10%">
<input type="checkbox" name="deletelist[<?php echo $list['Bookmark_ID']; ?>]" id="deletelist" value="<?php echo $list['Bookmark_ID']; ?>" />
</td>
...
<?php } //end of while ?>
|
Проблема в том, что код действует со второго раза, из за $_POST.
Список кандидатов для уничтожения виден только тогда, когда форма была отправлена.
Как сделать так чтобы он был виден уже при загрузке страницы?
Спасибо. | |
|
|
|
|
|
|
|
для: codexomega
(31.08.2005 в 22:24)
| | А в смысле со второго раза? Как организовано приложение - HTML-форма и её обработчик разнесены в отдельные файлы или находятся в одном файле?
В середине темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=427 приводится каркас похожего приложения. | |
|
|
|
|
|
|
|
для: cheops
(31.08.2005 в 23:56)
| | Всё находится в одном файле.
Открываю страницу.
Таблица заполняется данными из БД.
Отмечаю галочками те строки в таблицe которые хочу удалить.
Кликаю по кнопке Удалить.
Происходит перезагрузка страницы,данные которые должны были быть удаленны, остаются в списке.
Жму на кнопку Удалить ещё раз.
Происходит перезагрузка страницы.
Отмеченные данные удаляются.
------------------------------------------------
Каждая коробка с галочкой содержит ID соответствующего элемента.
При отправке формы посредством POST, отмеченные ID записываются в массив Array.
Потом происходит их удалении с помощью команды SQL.
Только вот я никак не могу понять, почему у меня срабатывает запрос только со 2-го раза. | |
|
|
|
|
|
|
|
для: codexomega
(01.09.2005 в 00:28)
| | Прикрепите пожалуйста файл с кодом к сообщению - здесь нужно смотреть весь файл. | |
|
|
|
|
|
|
|
для: cheops
(01.09.2005 в 12:54)
| | Вот файл. | |
|
|
|
|
|
|
|
для: codexomega
(01.09.2005 в 17:04)
| | Правильно ли я понял: у вас SELECT выполняется раньше чем DELETE, поэтому даже после того, как выбрана операция удаления, SELECT срабатывает раньше и выбирает ещё не удалённые данные, а затем срабатывает DELETE, который их удаляет? Поэтому изменения проявляются только после перезагрузки страницы? | |
|
|
|
|
|
|
|
для: cheops
(01.09.2005 в 18:48)
| | Действительно, для экономии места я решил загнать Delete в Select.
Хоть они и в разных формах находились, но использовали одно подключение к БД.
Теперь я их разъеденил. И всё работает с первого раза. Но, надо еще чтобы страница обновлялась сразу же после удаления записей, иначе они остаются в таблице, пока я вручную не сделаю Refresh, в браузере.
Не знаю, можно ли это сделать средствами PHP, или же придется что нибудь придумывать с JavaScript? | |
|
|
|
|
|
|
|
для: codexomega
(01.09.2005 в 19:19)
| | Обычно все изменеия проводят в самом начале и автоматически проводят редирект либо средствами JS, либо при помощи конструкции
<?php
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD></HTML>";
?>
|
Либо отсылая HTTP-заголовок Location при помощи функции header. Это позволяет обновить данные и сбросить POST-буффер. | |
|
|
|
|
|
|
|
для: cheops
(01.09.2005 в 19:25)
| | Огромное спасибо!!!
Всё работает отлично. | |
|
|
|