За последние 24 часа нас посетили 52267 программистов и 1770 роботов. Сейчас ищут 824 программиста ...

как в цикле удалять без перезагрузки?

Тема в разделе "PHP для новичков", создана пользователем serj011, 8 апр 2013.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    В цикле выводится список уведомлений

    <div class="avto" term="1">
    Уведомление 1
    </div>
    <div class="head avto" term="1">
    <a href="#">Удалить</a>
    </div>
    <div class="avto" term="2">
    Уведомление 2
    </div>
    <div class="head avto" term="2">
    <a href="#">Удалить</a>
    </div>

    При нажатии на "Удалить" нужно скрыть блок с этим уведомлением и удалить его в базе без перезагрузки

    Как это правильно реализовать?

    Скрытие блока я реализовал так
    $(document).ready(function(){
    $('.head').click(function(){
    term = $(this).attr('term');
    //alert(term_text);
    $('.avto').each(function(){
    if ($(this).attr('term') == term){
    if ($(this).css('display') == 'none'){
    $(this).css('display','block');
    }
    else {
    $(this).css('display','none');}

    }
    });
    });
    });

    а обновление не получается сделать
    с помощью этого кода можно обновить ($.get("/executive/del_alert.php", "", function(res))
    но я не знаю как это сделать в цикле, ведь нужно передавать еще и переменную с идентификатором уведомления!!!???
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Оффтопик: Раздел JavaScript и AJAX подошел бы больше для этого вопроса. Оформляй код в [ code ] [ /code ] (без пробелов). прояви уважение к тем, кто захочет тебе помочь.

    чтобы было обновление, надо запрашивать список этих самых обновлений (по таймеру).
    не изменяй данные запросом GET!
    у тебя есть идентификатор в переменной term. передавай его. может уже напишешь код на PHP, как ты его хочешь получить, а мы тебе подскажем как передать )))
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    за оффтоп извеняюсь. artoodetoo, я не совсем понял что вы написали, да и вы наверное не поняли суть вопроса.
    в цикле do while выводится div блоки с информацией, в каждом блоке есть ссылка "удалить". при нажатии по ссылке нужно удалить этот блок в базе без перезагрузки и соответственно убрать со страницы... я реализовал скрытие блока этим скриптом

    Код (Text):
    1. $(document).ready(function(){
    2.   $('.head').click(function(){
    3.     term = $(this).attr('term');
    4.     //alert(term_text);
    5.     $('.avto').each(function(){    
    6.       if ($(this).attr('term') == term){        
    7.         if ($(this).css('display') == 'none'){
    8.           $(this).fadeOut();
    9.         }          
    10.          else {
    11.           $(this).fadeOut();}      
    12.                    
    13.       }
    14.     });
    15.   });
    16. });
    а вот как при этом удалить из базы не знаю
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    сделать тем же jquery ajax-запрос к некоему скрипту, который и удалит требуемое из БД
     
  5. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Ganzal, спасибо. дельный совет... то что это нужно сделать ajax-запросом я понимаю, можно хоть кусочек кода-) у каждого блока есть id, который нужно передавать скрипту для удаления записи из базы. я не знаю как передать эту переменную в скрипт... мой код можно доделать для этой цели, допустим с помощью $.get('/executive/inviz_switch.php', '', function(res)?
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    можно. только я не вижу смысла тратить время на копипаст того чего полно в интернете. ищите, пилите, используйте. удачи.
     
  7. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Ganzal, раз уж заговорили о смыслах, тогда какой смысл этого сайта и твоих сообщений, без обид конечно-)
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а смысл в том что что-то можно быстро разжевать, а что-то разжевывать совершенно не обязательно - его навалом и в интернетах и на форуме. это раз.
    это ваша задача и вы решаете ее своим алгоритмом со своим уровнем знаний и понимания. не вижу смысла решать задачу за вас. вы покажите наработки и мы направим в нужном направлении. это два.

    да в первую очередь это новичкам нужно понимать, что никто никого не пытается обидеть.
     
  9. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    вот я и спрашиваю нужное направление:

    в цикле выводятся ссылки
    <div class="head" id="1" term="1"><a href="#">Удалить</a></div>
    <div class="head" id="2" term="2"><a href="#">Удалить</a></div>
    <div class="head" id="3" term="3"><a href="#">Удалить</a></div>

    При нажатии запрос обращается к text.php

    Код (Text):
    1.  
    2.                         $(document).ready(function(){
    3.                     $('#head').click(function() {
    4.                         $.get('/executive/test.php', '', function(res) {
    5.                             if (res == 'on') {
    6.                                 $('#inviz').html('Успешно');
    7.                             }
    8.                             if (res == 'off') {
    9.                                 $('#inviz').html('Не успешно');
    10.                             }
    11.                         })
    12.                     });
    13.                 });
    Как передать парамерт id оброботчику test.php ?
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а что официальная документация jq думает про протаскивание значений через запрос?))))
     
  11. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    неужели тяжело подсказать? я поэтому и обращаюсь что не знаю
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто присваивай id и по id и удаляй.

    Добавлено спустя 1 минуту 2 секунды:
    или паррента удаляй =)
    $(this).parent().remove() типа
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    serj011, вы прочитали мануал? что вы не поняли в нем? я вот не понимаю почему я на форуме php.ru должен разжевывать то что ясным языком написано на офсайте jq. я не понимаю для кого тогда ребята из команды jq пишут мануалы если их все равно никто не читает и рассказывать как работает их инструмент приходится мне. я не понимаю человека который не поискал в интернете, не попытался вникнуть в инструмент а тупо требует решения своей задачи. да пажаласта

    сам запрос бэкэнда надо переделать на так: $.get('/executive/test.php', {k: v} - это даст установку GET-переменной k в значение переменной v. далее вы придумаете сами как в значение переменной v подставится нужный вам идентификатор ибо это базис программирования который вы должны были пройти перед тем как взяться за решение данной задачи.
    далее. в бэкэнде мы экстрактим этот ключ из запроса и выполняем с ним запрос к бд. поскольку обсуждение целесообразности вооружения приматов выходит за рамки вашей задачи то публикую сразу мартышку с гранатой: mysql_query('DELETE FROM `table` WHERE `id`='.$_GET['k']);. вот и все. аякс сделал запрос, бэкэнд удалил запись из БД.

    и даже не думайте обижаться на меня. данные поправки в код как раз примитивно решают вашу задачу. небезопасно, исключительно, но решают.

    кстати, это работать не будет так как вы навешиваете листенер на элемент с идентификатором head который ни разу не встречается в листинге.
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    дорогой топикстартер. если бы ты сам понимал чего спрашиваешь, то ответ был бы очевиден самому.
    я тебе уже ответил по существу: id у тебя в коде есть. нах тебе думать про цикл! просто пойми какой нужен метод, прочти доку по нему и сделай.
    если мы за тебя кажый шаг будем делать, ты так и останешся 0