Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Избитые чекбоксы на аяксе

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вроде просто, но не тут то было.
hardcore
Отправлено: 22 Сентября, 2015 - 00:06:51
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Доброй ночи, случайный гость.
Будь любезен, подскажи, как осуществить такую тему:

Есть "туева хуча" чекбоксов. И, чтобы не грузить форму, да и для удобства пользователя, хочу, чтобы при нажатии на чекбокс передавался нужный мне параметр (0 либо 1, разумеется), который хранится в базе в таком же виде, и быстренько находил свою ячеечку в базе, где бы мог спокойно себе дальше жить. В аяксе я пока ни в зуб ногой. Принцип понимаю, язык пока не знаю.
В общем, заранее благодарю, милсдарь.

(Отредактировано автором: 22 Сентября, 2015 - 00:08:10)

 
 Top
hardcore
Отправлено: 22 Сентября, 2015 - 10:11:19
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Неужели никто не знает, как это сделать? Огорчение
 
 Top
Viper
Отправлено: 22 Сентября, 2015 - 13:17:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Подключаете jQuery
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="checkboxes"><input type="checkbox" name="chk[]" value="" /><label>Lorem ipsum</label></div>


CODE (javascript):
скопировать код в буфер обмена
  1. $('.chk').change(function(){
  2.         var chk = $(this);
  3.  
  4.         if (chk.is(':checked')) { // Если отмечено
  5.                 // Отсылаем запрос на сервер методом POST
  6.                 $.post('index.php', $('.checkboxes input').serialize(), function(response){
  7.                         alert('Ok');
  8.                 });
  9.         }
  10. });


Как-то так.
Подробнее смотрите в api:
http://api[dot]jquery[dot]com/jQuery[dot]post/
http://api[dot]jquery[dot]com/serialize/

PS!
hardcore пишет:
И, чтобы не грузить форму
не привыкайте к говнокоду.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
SAD Модератор
Отправлено: 22 Сентября, 2015 - 15:22:33
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




не прокатит, так как автору нужно, чтобы ушли 0 или 1. сериалайз не пашет для чекбоксов
и ради 3 строчек чистого js незачем прикручивать jquery
 
 Top
hardcore
Отправлено: 22 Сентября, 2015 - 16:32:12
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




SAD пишет:
не прокатит, так как автору нужно, чтобы ушли 0 или 1. сериалайз не пашет для чекбоксов
и ради 3 строчек чистого js незачем прикручивать jquery


Именно!
Если обработка формы целиком - говнокод, то избегаю, как могу.

По сабжу: насколько я понимаю принцип, каждый чекбокс, по сути, должен сабмитить свой name и value в php-файл, где записывает полученное значение в колонку (название колонки аналогично названию чекбокса). За изучение скриптов я только взялся, а данный функционал нужен раньше, чем я успею все понять. В общем, нельзя ли написать такой сценарий, к которому бы обращался чекбокс на онклик?
 
 Top
Panoptik
Отправлено: 22 Сентября, 2015 - 16:42:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




даю практически готовый ответ

http://www[dot]sitepoint[dot]com/forums/[dot][dot][dot]heckbox-onchange
можете не благодарить


-----
Just do it
 
 Top
hardcore
Отправлено: 22 Сентября, 2015 - 19:05:07
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Panoptik пишет:
даю практически готовый ответ

http://www[dot]sitepoint[dot]com/forums/[dot][dot][dot]heckbox-onchange
можете не благодарить


Благодарю, но делал иначе.

Короче, мужики. Вот реально готовое решение (не знаю, насколько это говнокод в JS, но работает просто ВАХ!)
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function () {
  2.  
  3.  
  4.             $("input").click (function () {
  5.  
  6.                 var id = $(this).parent().attr("id");
  7.                 var table = $(this).parent().parent().parent().attr("id");
  8.  
  9.                 if ($(this).attr("checked")) {
  10.  
  11.                     $.ajax ({
  12.                         url: "check.php",
  13.                         type: "POST",
  14.                         data: {id: id, table: table, check: 1}
  15.  
  16.                     });
  17.  
  18.                 } else {
  19.  
  20.                     $.ajax ({
  21.                         url: "check.php",
  22.                         type: "POST",
  23.                         data: {id: id, table: table, check: 0}
  24.  
  25.                     });
  26.                 }
  27.  
  28.             });
  29.  
  30.         });


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

Вот как выводятся:

PHP:
скопировать код в буфер обмена
  1. while($i<$array['count']) {
  2.             echo '<li id="' . $array['id'][$i] . '">
  3.                <input '.$check.' type="checkbox" id="' . $array['id'][$i] . '"/>' . $array['names'][$i] . '
  4.                </li>';
  5.             $i++;
  6.         }
  7.  


Тут в общем-то фишка в том, что берется айдишник родительского элемента. Хотя, тут вроде можно и проще было сделать: просто взять айдишник инпута.
В общем, все проще, чем казалось.
 
 Top
Viper
Отправлено: 22 Сентября, 2015 - 20:21:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




hardcore пишет:
Если обработка формы целиком - говнокод, то избегаю, как могу.
не использовать форму вообще - вот это говнокод.
(Добавление)
SAD пишет:
сериалайз не пашет для чекбоксов
йо ли? Может руки не под то заточены?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
SAD Модератор
Отправлено: 22 Сентября, 2015 - 21:04:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Давай. Научи меня сериализовать форму)

Цитата:
Values from checkboxes and radio buttons (inputs of type "radio" or "checkbox") are included only if they are checked


(Добавление)
hardcore пишет:
Короче, мужики. Вот реально готовое решение


Это п... Ц а не решение

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("input").click (function () {
  3. var $this = $(this);
  4.  
  5.                 $.ajax ({
  6.                         url: "check.php",
  7.                         type: "POST",
  8.                         data: {
  9. id: $this.attr('id'),
  10. table: $this.closest('table').attr('id'),
  11. check: +$this.is(':checked')
  12. }
  13.  
  14.                     });
  15.  
  16.             });
  17.  
 
 Top
Viper
Отправлено: 23 Сентября, 2015 - 02:51:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




SAD неужели? А то не знал Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
hardcore
Отправлено: 23 Сентября, 2015 - 13:00:36
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




SAD пишет:
Это п... Ц а не решение

CODE (javascript):
скопировать код в буфер обмена
 
$("input").click (function () {
var $this = $(this);
 
                $.ajax ({
                        url: "check.php",
                        type: "POST",
                        data: {
id: $this.attr('id'),
table: $this.closest('table').attr('id'),
check: +$this.is(':checked')
}
 
                    });
 
            });
 


Так и в чем тут проблема то?
 
 Top
SAD Модератор
Отправлено: 23 Сентября, 2015 - 13:55:56
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




тут. миллион parent
CODE (javascript):
скопировать код в буфер обмена
  1. $(this).parent().parent().parent().attr("id")


тут дублирование кода

CODE (javascript):
скопировать код в буфер обмена
  1. if ($(this).attr("checked")) {
  2.  
  3.                     $.ajax ({
  4.                         url: "check.php",
  5.                         type: "POST",
  6.                         data: {id: id, table: table, check: 1}
  7.  
  8.                     });
  9.  
  10.                 } else {
  11.  
  12.                     $.ajax ({
  13.                         url: "check.php",
  14.                         type: "POST",
  15.                         data: {id: id, table: table, check: 0}
  16.  
  17.                     });
  18.                 }


Усли бы у Вас был выпадающий список с 10 значениями вместо чекбокса, у Вас было бы 10 условий и продублированного кода?
 
 Top
Panoptik
Отправлено: 23 Сентября, 2015 - 17:53:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




Браво


-----
Just do it
 
 Top
hardcore
Отправлено: 24 Сентября, 2015 - 12:38:34
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




SAD пишет:
тут. миллион parent
CODE (javascript):
скопировать код в буфер обмена
  1. $(this).parent().parent().parent().attr("id")


тут дублирование кода

CODE (javascript):
скопировать код в буфер обмена
  1. if ($(this).attr("checked")) {
  2.  
  3.                     $.ajax ({
  4.                         url: "check.php",
  5.                         type: "POST",
  6.                         data: {id: id, table: table, check: 1}
  7.  
  8.                     });
  9.  
  10.                 } else {
  11.  
  12.                     $.ajax ({
  13.                         url: "check.php",
  14.                         type: "POST",
  15.                         data: {id: id, table: table, check: 0}
  16.  
  17.                     });
  18.                 }


Усли бы у Вас был выпадающий список с 10 значениями вместо чекбокса, у Вас было бы 10 условий и продублированного кода?


А, ну это все бы попровилось по ходу изучения JS. Главное, что я разобрался и в целом-то правильно.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB