Jump to content
Sign in to follow this  
Verwolf

Проверка состояния элементов формы (checkbox, radio и т.д.)

Recommended Posts

Доброго времени суток, уважаемые форумчане!

 

Работаю над реализацией следующей задачи:

 

В админке в настройках модуля выбираются опции товаров, при нажатии на "Сохранить" отмеченные опции (реализовано в виде checkbox) фиксируются в БД. В каталоге, соответсвенно, отмеченные опции отображаются.

 

Практически всё реализовано за исключением одной мелочи: в БД отмечаются не только выбранные checkbox, а все...

 

Реализация в коде:

<a onclick="setView(); $('#form').submit();" class="button"><?php echo $button_save; ?></a>
public function setViewTest($option_id, $value)
{
$this->db->query("UPDATE ". DB_PREFIX ."product_option_view SET view = "
.(int)$value." WHERE option_id = ".(int)$option_id);
}
<script type="text/javascript">
function setView()
{
if($("#<?php echo $option['option_id']?>").prop('checked'))
{
<?php $this->model_module_module_test->setViewTest($option['option_id'], 1); ?>
}
else
{
<?php $this->model_module_module_test->setViewTest($option['option_id'], 0); ?>
}
}
</script>

По логу SQL-запросов действительно делается update всех записей таблицы. Даже просто при загрузке страницы. Хотя на самом деле нужно, чтобы JS функция вызывалась только при клике на ссылку. Почему это происходит - для меня загадка.

 

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

Share this post


Link to post
Share on other sites

сотри все, почитай про serialize и напиши заново.

Share this post


Link to post
Share on other sites

сотри все, почитай про serialize и напиши заново.

 

Спасибо, конечно, за ответ... но как serialize решит мою проблему, что у меня js-код выполняется при загрузке страницы, а не при вызове его??? Или, возможно, я не совсем разобрался с serialize... В инете нарыл, что эта php-функция позволяет представить переменную или массив в виде, удобном для хранения в БД или текстовом файле... так с этим, вроде, проблем нет...

Share this post


Link to post
Share on other sites

jquery - :checked

 

пример давать не буду, здесь работа должна быть проделана самостоятельно

Share this post


Link to post
Share on other sites

jquery - :checked

 

пример давать не буду, здесь работа должна быть проделана самостоятельно

эммм.... я как бы его и использовал...

$("#<?php echo $option['option_id']?>").prop('checked')

Share this post


Link to post
Share on other sites

В общем, всем спасибо. Решил проблему с помощью $this->request->post

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Kanzas82
      Здравствуйте, помогите решить вопрос, хочу сделать пересчет цены в зависимости от количества товара в категориях товара, поставил счетчик а вот реализовать пересчет не получается.. OcStore 3.0.2
      Вот код в category.twig отвечающий за вывод цены
      <div class="us-module-price"> {% if not product.special %} <span class="us-module-price-actual">{{ product.price }}</span> {% else %} <span class="us-module-price-old">{{ product.price }}</span><span class="us-module-price-new">{{ product.special }}</span> {% endif %} {% if product.tax %} <div class="price-tax">{{ text_tax }} {{ product.tax }}</div> {% endif %} </div> {% endif %} А это ниже сам счетчик
      {% if oc_quantity_category_status and oc_quantity_status %} <a href="javascript:void(0);" onclick="cart.add('{{ product.product_id }}', $(this).parent().parent().find('.input-number').val());" class="us-module-cart-btn button-cart">{{ button_cart }}</a> {% else %} <a href="javascript:void(0);" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');" class="us-module-cart-btn button-cart">{{ button_cart }}</a> {% endif %} {% if oc_quantity_category_status and oc_quantity_status %} <div class="input-group"> <span class="input-group-btn"> <button type="button" class="minus-square" data-type="minus" data-field="category" onclick="descrement($(this).parent().parent())" )><i class="fas fa-minus-square"></i> <span class="glyphicon glyphicon-minus"></span> </button> </span> <input type="text" name="quantity" class="form-control input-number" id="category" value="1"> <span class="input-group-btn"> <button type="button" class="plus-square" data-type="plus" data-field="category" onclick="increment($(this).parent().parent())"><i class="fas fa-plus-square"></i> <span class="glyphicon glyphicon-plus"></span> </button> </span> </div> {% endif %}</div></div></div>{% endfor %} За ранее спасибо.

    • By Dragon
      jQuery async load
      Скачать/Купить дополнение Модуль позволяет переместить javascript-скрипты из шапки в подвал сайта и подгружать их асинхронно, тем самым ускорить отрисовку страницы, увеличить баллы в Google Pagespeed и повысить ранжирование в поисковой выдаче.

      Важно: модуль распространяется по принципу – одна лицензия на один домен.
       
      С его помощью можно добиться 100/100 баллов в Google PageSpeed Insights. Но только если вы выполнили все рекомендации Google PageSpeed Insights, кроме пункта "Удалите код JavaScript и CSS, блокирующий отображение верхней части страницы". В противном случае результат может быть всего на пару процентов лучше. 
      Демо: https://matuvi.com/oc2/async/


       
      Внимание. На демо помимо самого модуля оптимизированы изображения и включен кэш (не входит в модуль). 

      Протестировано на версиях OpenCart/ocStore 2.0.1.1, 2.1.0.2 и 2.3.0.2.3 на стандартных шаблонах со стандартным набором модулей.
      Автор модуля не гарантирует стабильную работу со сторонними плагинами и шаблонами.

      Теоретически модуль будет работать и на других версиях и сборках (пока кроме 3+).
      Если самостоятельно модуль установить не удалось: пишите в тему поддержки - поможем настроить.
      Добавил Dragon Добавлено 22.01.2018 Категория Кэширование, сжатие, ускорение Системные требования Сайт разработчика https://matuvi.com/ Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет Старая цена  
    • By riny
      Скачать/Купить дополнение


      Поиск с категориями в шапке
      Модуль выводит список категорий до 2-х уровней вложенности для фильтрации поиска по категории в шапке сайта.
      Установка:
      скопировать содержимое папки upload в корневой каталог вашего сайта (стандартные файлы не заменяются)
      Совместимость:
      ocStore 1.5.5.x, отдельная версия для 1.5.1.3
      Добавил riny Добавлено 21.03.2014 Категория Поиск Системные требования Сайт разработчика Метод активации Ioncube Loader OpenCart ocStore OpenCart.Pro, ocShop Обращение к серверу разработчика Старая цена  
    • By mpn2005
      Скачать/Купить дополнение


      Опции с вводом количества select, checkbox, radio (vqmod)
      Добавляет новые типы опций: Флажок с количеством, Переключатель с количеством, Список с количеством.
      Работа модуля проверена на Opencart и OcStore v1.5.3.1, v1.5.4.1, v1.5.5.1
      Лицензия:
      Данное дополнение является бесплатным и распространяется по лицензии GNU GPL.
      Разрешается: модификация кода дополнения, использование с целью получения коммерческой выгоды, продажа или бесплатное размещение на других ресурсах.
      Возможности:
      Для каждой группы опций выводится промежуточный итог Каждая группа опций имеет кнопку "Очистить", которая очищает введённые значения Поддерживается совместимость с модулем авторасчёта при выборе опций http://opencartforum.ru/files/file/743-obnovlenie-tceny-pri-vybore-optcii-bez-ajax-vqmod/ Список изменений:
      v1.0.2 (01.07.2013) - Вычитает со склада введённое количество (указанное при заказе), для каждой опции. v1.0.3 (01.07.2013) - Исправлена ошибка в SQL запросе. v1.0.4 (08.07.2013) - Итого выводится с учётом налогов (если они включены). v1.0.5 (14.07.2013) - Добавлено ещё два типа опций с количеством (radio и select). Изменено назване модуля: 1_options_with_quantity_v1.0.5.xml v1.0.6 (14.07.2013) - Исправлен расчёт опций с налогом. v1.0.7 (23.07.2013) - Добавлена поддержка модификатора цены опции "=". v1.0.8 (24.07.2013) - Добавлена поддержка модификатора цены опции "*". v1.0.9 (16.10.2013) - Исправлена логика работы кнопки 'Очистить'. v1.0.10 (26.02.2014) - Добавлен вес опции с учётом введённого количества. v1.0.11 (11.07.2014) - Реализовано добавление опций этого типа в админке (при добавлении товара к заказу). v1.0.15 (15.04.2015) - Исправлен расчёт 'итого' для модификатора '=' (у флажков с количеством). Инструкция по установке (если vqmod уже установлен начинаем с пункта 5):
      Скачиваем vqmod http://code.google.c.../downloads/list (например vqmod-2.2.1-opencart.zip) Загружаем "vqmod" в корневую директорию вашего сайта. Устанавливаем права 777 следующим папкам: /vqmod, /vqmod/vqcache. В адресной строке браузера вписываем: http://имя-вашего-сайта/vqmod/install/ Закидываем xml модуль в папку /vqmod/xml Если в файлы движка или темы вносились изменения, то возможно придётся адаптировать xml.
      Добавил mpn2005 Добавлено 26.06.2013 Категория Опции Системные требования Сайт разработчика Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1 ocStore 1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop OcShop 1.5.6.4.х Обращение к серверу разработчика Старая цена  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.