[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удалить одну запись
m4a1fox
Доброго дня уважаемые эксперты. В админ панели выводятся новости. Рядом с каждой новостью новостью есть чекбокс в value которого записывается id. После того как я выделил его нажимаю кнопку удалить. Запись или несколько удаляются. А вот стало интересно. Можно ли рядом с этим чекбоксом поставить картинку, что бы при нажатии на нее запись удалялась. Помогите или подскажите. Спасибо.



Спустя 1 минута, 12 секунд (16.02.2011 - 14:46) DmitryOpalev написал(а):
Не понял... типа <input type='image'>?

Спустя 14 минут, 32 секунды (16.02.2011 - 15:00) m4a1fox написал(а):
Я так пробовал. Тут проблемка с запросом в БД. Хочется что бы он был на этой же странице.
Насколько понимаю вот так должно быть. <input type="image" name="delete" value=".$_POST['id'].">

А на странице сверху написать - if(isset($_POST['delete']))
{
$query = mysql_query("DELETE FROM data WHERE id =".$_POST['id'] )
}
Гляньте! Так это будет приблизительно?

Спустя 20 минут, 26 секунд (16.02.2011 - 15:21) DmitryOpalev написал(а):
Да, коллега smile.gif

Спустя 49 минут, 42 секунды (16.02.2011 - 16:10) m4a1fox написал(а):
DmitryOpalev
Дык.... не работает!

Спустя 17 минут, 41 секунда (16.02.2011 - 16:28) m4a1fox написал(а):
Что то тут не так. Я хочу рядом с постом поставить кнопочку, по щелчку на кот. запись будет удаляться.

Спустя 37 минут, 44 секунды (16.02.2011 - 17:06) Ulan написал(а):
дело в том, что <image> передает не просто
$_POST['delete']

а в виде
$_POST['delete_x']
$_POST['delete_y']

потому условие нажатия кнопки нужно проверять по этим переменным.

Спустя 3 минуты, 23 секунды (16.02.2011 - 17:09) m4a1fox написал(а):
А если поместить submit? Дело в том что я уже перепробывал много вариантов. Ни как не могу найти правильный ответ.

Спустя 10 минут, 7 секунд (16.02.2011 - 17:19) Ulan написал(а):
кстати <image> поле value вообще не передает

я сделал так, хотя это может и не совсем красиво

<form action="" method="post">
<
p><h3>правка</h3></p>
<
input name="id" type="hidden" value="<?php echo $edit_res['id']?>">
<
p><textarea name="edit_message" ><?php echo $edit_res['message']?></textarea></p>
<
p><input name="edit" type="image" src="skins/images/imgbutton.gif"></p>
</
form>


и запрос, только я делал для update

$id = isset($_POST['id']) ? $_POST['id'] : null;
if (isset($_POST['edit_x']))
{
mysqlQuery("UPDATE `". IRB_DBPREFIX ."guest` SET `message`='".
$_POST['edit_message'] ."' WHERE `id`='". $id ."'", 0);
reDirect();
}

тоже самое легко трансформируется для submit

Спустя 58 минут, 34 секунды (16.02.2011 - 18:18) m4a1fox написал(а):
Ulan
А если цикл. Как к картинке прикрепить id?

Спустя 3 минуты, 50 секунд (16.02.2011 - 18:22) m4a1fox написал(а):
А если так? Запрос if (isset($_POST['edit_x']))
{
mysql_query("DELETE FROM `data` WHERE `id`='". $_POST['id'] ."'");
}

А картинка - <input name="delete" value="'.$myrow['id'].'" type="image" src="./img/delete.gif">?

Спустя 12 минут, 2 секунды (16.02.2011 - 18:34) Ulan написал(а):
у меня id передается через скрытое поле, в цикле этот участок и обрабатывается, выводя кнопку для каждой записи.
<input name="id" type="hidden" value="<?php echo $edit_res['id']?>">

а элемент image поле value передавать не будет, только поле name.

Спустя 1 минута, 9 секунд (16.02.2011 - 18:35) inpost написал(а):
<input type="submit" class="image">
.image {background-image:}

Хватит уже советовать type="image", он передаёт 3 значения и с ним огромные путаницы.

Спустя 11 минут, 25 секунд (16.02.2011 - 18:46) Ulan написал(а):
я ж написал что вариант не идеальный smile.gif
спасибо за подсказку

Спустя 1 минута, 20 секунд (16.02.2011 - 18:48) m4a1fox написал(а):
Ulan
Я не понимаю. Как скрипт удалит запись, если он не знает id который я передаю?

Спустя 9 минут, 42 секунды (16.02.2011 - 18:57) Ulan написал(а):
я ж написал тремя постами выше свой вариант решения.

Спустя 13 минут, 16 секунд (16.02.2011 - 19:10) m4a1fox написал(а):
Да. Спасибо. Разобрался. Теперь нормально удаляет. Только жаль что не смогу применить. Так как у меня есть уже удаление. Просо работает немного лучше. Я просто выделяю несколько или одну строк и нажимаю удалить. И скрипт удаляет. А так, как сегодня сделал, получается первый скрипт не работает.(

Спустя 38 минут, 18 секунд (16.02.2011 - 19:49) alex12060 написал(а):
А я через аякс удаляю)

Просто делаю так:
echo '<img src="rem.png" onclick=\'if (confirm("Удалить запись?")) { adm_del("'.$g[0].'", "'.$_SESSION['hash'].'"); }\' style="cursor: pointer" alt="Удалить" />';


А функция:


function adm_del(id, hash) {

if (id.length == 0) { $(".alert").html("<b>Параметр `идентификатор` пуст!</b>").fadeOut(5000); }
if (hash.length < 8 || hash.length > 8) { document.location.href="login.php?act=login&nohash"; }


$.ajax({
type: "GET",
url: "admin.php",
data: "act=del_post&id="+id+"&hash=<?php echo mt_rand(100, 999).'es'; ?>"+hash+"",
success: function(msg) {
$(".alert").css({'background-color' : '#CFF7CB', 'border-color' : '#389C2D'}).html('<b>'+msg+'</b>').fadeIn(500);
$('#post_'+id).fadeOut(2000);
$(".alert").fadeOut(5000);
}
}
);
}


И сам запрос:


private function procDel($id) {

$del = $this->sql("DELETE FROM `messages` WHERE `id`='$id'", 1);

if (!$del) { echo 'Невозможно удалить запись :('; return false; }

echo 'Запись успешно удалена из базы!';

return true;
}


Хоть тут и через классы реализованно, мне кажется, что все предельно просто.
З.Ы Использую JQuery

Спустя 2 минуты, 50 секунд (16.02.2011 - 19:52) m4a1fox написал(а):
alex12060
Силен. Но если не сложно, я сейчас попробую сделать, и скорее всего будут вопросы - поможете?

Спустя 1 минута, 39 секунд (16.02.2011 - 19:53) m4a1fox написал(а):
alex12060
А если все вынимается через массив - ничего страшного?

Спустя 23 секунды (16.02.2011 - 19:54) alex12060 написал(а):
Не вопрос)
Просто реализуй не через классы) Я у себя в ГК это использую прост)
Потом + поставь))

Спустя 1 минута, 18 секунд (16.02.2011 - 19:55) alex12060 написал(а):
m4a1fox

Цитата
adm_del("'.$g[0].'",


Если ты заметил, у меня тоже) Главное в 1 параметр вставь id записи, второй параметр необязателен для тебя, но лучше подстраховаться и завести хэш.

Спустя 51 секунда (16.02.2011 - 19:56) m4a1fox написал(а):
alex12060
Само собой. но... эээ а уточнение - не через классы? А через что? И что такое ГК?

Спустя 2 минуты, 3 секунды (16.02.2011 - 19:58) m4a1fox написал(а):
alex12060
Сейчас попробую.... Но даже визуально не могу представить как это выглядит! И еще. У вас $g[0]. А у меня получается как будет? $myrow['id']. ноль куда вставлять? Или лучше заранее сделать так $myrow['id'] = $g?

Спустя 56 секунд (16.02.2011 - 19:59) alex12060 написал(а):

function procDel($id) {

$del = mysql_query("DELETE FROM `messages` WHERE `id`='$id'");
if (mysql_affected_rows() == -1) { if (!$del) { echo 'Не существует такой записи!'; return false; } }

if (!$del) { echo 'Невозможно удалить запись :('; return false; }

echo 'Запись успешно удалена из базы!';

return true;
}


Тебе будет достаточно.

ГК - Гостевая книга)

Спустя 1 минута, 25 секунд (16.02.2011 - 20:00) alex12060 написал(а):
Да, туда идет идентификатор записи. 0? Я тебе функцию переделал выше.

Спустя 7 минут, 52 секунды (16.02.2011 - 20:08) m4a1fox написал(а):
alex12060
А вот и вопросы!!!! Вот кнопка -
<img src="./img/delete.gif" onclick=\'if (confirm("Удалить запись?"))
{ procDel("'
.$g[0].'", "'.$_SESSION['hash'].'"); }\'
style="cursor: pointer" alt="Удалить" />


вот функция, она крепиться вверху страницы -
function procDel($g) {

$del = mysql_query("DELETE FROM `data` WHERE `id`='$g'");
if (mysql_affected_rows() == -1) { if (!$del) { echo 'Не существует такой записи!'; return false; } }

if (!$del) { echo 'Невозможно удалить запись :('; return false; }

echo 'Запись успешно удалена из базы!';

return true;
}

Спустя 4 минуты, 19 секунд (16.02.2011 - 20:12) alex12060 написал(а):
Я тебе сказал же, что 2 параметр - hash тебе не обязателен. Если, кончно, у тебя есть админская сессия, то вписывай ее туда.

А еще, это яваскриптовскя функция, тебе надо передавать запрос аяксом.

Спустя 1 минута, 41 секунда (16.02.2011 - 20:14) m4a1fox написал(а):
alex12060
Тоесть. Убрать "'.$_SESSION['hash'].'". А передать Аяксом? Это -
function adm_del(id, hash) {

if (id.length == 0) { $(".alert").html("<b>Параметр `идентификатор` пуст!</b>").fadeOut(5000); }
if (hash.length < 8 || hash.length > 8) { document.location.href="login.php?act=login&nohash"; }


$.ajax({
type: "GET",
url: "admin.php",
data: "act=del_post&id="+id+"&hash=<?php echo mt_rand(100, 999).'es'; ?>"+hash+"",
success: function(msg) {
$(".alert").css({'background-color' : '#CFF7CB', 'border-color' : '#389C2D'}).html('<b>'+msg+'</b>').fadeIn(500);
$('#post_'+id).fadeOut(2000);
$(".alert").fadeOut(5000);
}
}
);
}

Спустя 7 минут, 3 секунды (16.02.2011 - 20:21) alex12060 написал(а):
Да, все правильно.

Спустя 4 минуты, 22 секунды (16.02.2011 - 20:25) m4a1fox написал(а):
alex12060
Так... Банальный вопрос. Аксн нельзя ставить вот <?php тут ?>?

Спустя 12 минут, 32 секунды (16.02.2011 - 20:38) m4a1fox написал(а):
))) С этим разобрался.

Спустя 47 секунд (16.02.2011 - 20:39) m4a1fox написал(а):
Что-то с ссылками запутался.((

Спустя 1 минута, 41 секунда (16.02.2011 - 20:40) m4a1fox написал(а):
Так. Начну по порядку. Вот кнопка -
<img src="./img/delete.gif" onclick=\'if (confirm("Удалить запись?"))
{ adm_del("'.$g[0].'"); }\'
style="cursor: pointer" alt="Удалить" />


вот функция. -
function procDel($g) {

$del = mysql_query("DELETE FROM `data` WHERE `id`='$g'");
if (mysql_affected_rows() == -1) { if (!$del) { echo 'Не существует такой записи!'; return false; } }

if (!$del) { echo 'Невозможно удалить запись :('; return false; }

echo 'Запись успешно удалена из базы!';

return true;
}


И вот аякс
<script type="text/javascript">
function adm_del(id) {

if (id.length == 0) { $(".alert").html("<b>Параметр `идентификатор` пуст!</b>").fadeOut(5000); }
if (hash.length < 8 || hash.length > 8) { document.location.href="admin_news.php?act=login&nohash"; }


$.ajax({
type: "GET",
url: "admin_news.php",
data: "act=del_post&id="+id+"&hash=<?php echo mt_rand(100, 999).'es'; ?>"+id+"",
success: function(msg) {
$(".alert").css({'background-color' : '#CFF7CB', 'border-color' : '#389C2D'}).html('<b>'+msg+'</b>').fadeIn(500);
$('#post_'+id).fadeOut(2000);
$(".alert").fadeOut(5000);
}
}
);
}
</script>


Постарался убрать hash. Но именно запутался... При нажатии ничего не происходит.

Спустя 2 минуты, 14 секунд (16.02.2011 - 20:43) m4a1fox написал(а):
Так.... НА ПЕРЕКУР!

Спустя 3 минуты, 38 секунд (16.02.2011 - 20:46) alex12060 написал(а):

<script type="text/javascript">
function adm_del(id) {

if (id.length == 0) { $(".alert").html("<b>Параметр `идентификатор` пуст!</b>").fadeOut(5000); }
if (hash.length < 8 || hash.length > 8) { document.location.href="admin_news.php?act=login&nohash"; }


$.ajax({
type: "GET",
url: "admin_news.php",
data: "act=del_post&id="+id+"",
success: function(msg) {
$(".alert").css({'background-color' : '#CFF7CB', 'border-color' : '#389C2D'}).html('<b>'+msg+'</b>').fadeIn(500);
$('#post_'+id).fadeOut(2000);
$(".alert").fadeOut(5000);
}
}
);
}
</script>


А ты JQuery подключил?

Спустя 13 минут, 27 секунд (16.02.2011 - 21:00) m4a1fox написал(а):
ээ............... нет

Спустя 55 секунд (16.02.2011 - 21:01) m4a1fox написал(а):
Сейчас подключу. Если не ошибаюсь то этот кусок кода надо вставить? <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>

Спустя 1 минута, 9 секунд (16.02.2011 - 21:02) m4a1fox написал(а):
Подключил... но он не реагирует. Тут именно с ссылками что-то не так, я думаю.

Спустя 3 минуты, 29 секунд (16.02.2011 - 21:05) m4a1fox написал(а):
alex12060
А вот функция procDel куда подключается?

Спустя 9 часов, 51 минута, 13 секунд (17.02.2011 - 06:57) alex12060 написал(а):
Вот мой код:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>
Гостевая книга 1.0</title>
<meta
http-equiv="content-type" content="text/html; charset=windows-1251" />
<script
type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script
type="text/javascript">

function
adm_del(id, hash) {

if (id.length == 0) { $(".alert").html("<b>Параметр `идентификатор` пуст!</b>").fadeOut(5000); }
if (hash.length < 8 || hash.length > 8) { document.location.href="login.php?act=login&nohash"; }


$.ajax({
type: "GET",
url: "admin.php",
data: "act=del_post&id="+id+"&hash=213es"+hash+"",
success: function(msg) {
$(".alert").css({'background-color' : '#CFF7CB', 'border-color' : '#389C2D'}).html('<b>'+msg+'</b>').fadeIn(500);
$('#post_'+id).fadeOut(2000);
$(".alert").fadeOut(5000);
}
}
);
}
</script>
...


Вот так в идеале быть должно (некоторые элементы упустил)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.