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 :: checkbox + js + php

 PHP.SU

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


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

> Описание: статус для чекбокса
megahertz
Отправлено: 07 Ноября, 2016 - 09:53:15
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




Добрый день формучане,
разбираюсь со следующей задачкой
есть код:
чекбокс


функция для работы с чекбоксом
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.         $("input:checkbox").change(function() {
  3.             if($(this).is(":checked")) {
  4.                 $.ajax({
  5.                     url: 'on.php',
  6.                     type: 'POST',
  7.                     data:{action:'call_this'},
  8.                 });
  9.             } else {
  10.                 $.ajax({
  11.                     url: 'on.php',
  12.                     type: 'POST',
  13.                     data:{action:'call_this2'},
  14.                 });
  15.             }
  16.         });
  17.     });



при нажатии на чекбокс выполняется действие call_this которое влечет за собой запись On в базу данных через скрипт on.php, соответственно при снятии call_this2 так же выполняется действие которое перезаписывает On в Off т.е данные обрабатываются и передаются корректно, но вот вопрос в следующем, как заставить чекбокс помнить(согласно записи в базе) нажат он или нет если я обновлю страничку или зайду с другого клиента ?

Сейчас для вывода текущего статуса я делаю так:
PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "On")
  2. echo "status - on";
  3. else
  4. echo "status - off";
  5. }

(Отредактировано автором: 07 Ноября, 2016 - 10:09:36)

 
 Top
3d_killer
Отправлено: 07 Ноября, 2016 - 09:57:38
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




сделать запрос в базу если запись есть то
<input type="checkbox" checked>
 
My status
 Top
megahertz
Отправлено: 07 Ноября, 2016 - 09:59:51
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




спасибо, смотрел в сторону if ($(this).is(":checked"))... но что-то пошло не так и в итоге вернулся к вышеописанному вариантуНедовольство, огорчение
3d_killer, можно чуточку подробнее...возможно с примером на коде
 
 Top
StereoFlo
Отправлено: 07 Ноября, 2016 - 10:57:18
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Нояб. 2016  


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




Информации мало, 3d_killer сказал верно. Надо привязываться к БД, в случае если запись имеет флаг on, то ставить чекбокс

PHP:
скопировать код в буфер обмена
  1.  
  2. $hasFlag = "тут описать запрос к БД, допустим  select flag from table where item_id = 1";
  3. if ($hasFlag) {
  4. print '<input type="checkbox" checked>';
  5. } else {
  6. print '<input type="checkbox">';
  7. }
  8.  
  9.  

(Отредактировано автором: 07 Ноября, 2016 - 10:57:41)

 
 Top
megahertz
Отправлено: 08 Ноября, 2016 - 07:34:50
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




таки не получилосьНедовольство, огорчение
пробую делать так:

CODE (html):
скопировать код в буфер обмена
  1.  
  2.  <input type="checkbox" id="1"/>


CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.     $(document).ready(function(){
  3.         $("input:checkbox").change(function() {
  4. var data = {};
  5.  if ($(this).is(":checked"))
  6.      data.action = 'off';
  7. else
  8.         data.action = 'on';
  9.  
  10. $.ajax({
  11.         url: './on.php',
  12.         type: "POST",
  13.         data: {action:'on', action:'off'},
  14. })
  15. .done(function(data) {
  16. document.getElementById('1').checked = (data.status == "on");  });
  17. </script>
  18.  


on.php
PHP:
скопировать код в буфер обмена
  1. $stat1 = $row['value'];
  2.  
  3. if ($stat1 == "on")
  4. echo "on";
  5. else
  6. echo "off";
  7. }


По моему с синтаксисом беда, но в силу незнания js не соображу как корректно выполнить проверки для чекбокс
 
 Top
3d_killer
Отправлено: 08 Ноября, 2016 - 12:56:38
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




показывал же
CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" checked>
 
My status
 Top
megahertz
Отправлено: 08 Ноября, 2016 - 19:50:18
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




исправил, чекбокс все равно не проверяется
 
 Top
3d_killer
Отправлено: 08 Ноября, 2016 - 19:51:31
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




что тут?

что выдаст?
 
My status
 Top
megahertz
Отправлено: 08 Ноября, 2016 - 20:00:01
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




string(2) "on" при это чекбокс стоит как отмеченный, если сменить запись в базе и получить string(3) "off" то чекбокс также остается как отмеченный
 
 Top
3d_killer
Отправлено: 08 Ноября, 2016 - 20:08:14
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "on"):
  2. $select=" selected";
  3. else:
  4. $select="";
  5. endif;
  6. echo "<input type='checkbox' ".$select.">";

(Отредактировано автором: 08 Ноября, 2016 - 20:09:10)

 
My status
 Top
megahertz
Отправлено: 08 Ноября, 2016 - 20:08:41
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




пардон, исправился

PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "on")
  2. echo '<input type="checkbox" checked>';
  3. else
  4. echo '<input type="checkbox">';

(Добавление)
PHP:
скопировать код в буфер обмена
  1. if ($stat1 == "on"):
  2. $select=" selected";
  3. else:
  4. $select="";
  5. endif;
  6. echo "<input type='checkbox' ".$select.">";


при такой проверке ничего не меняется

(Отредактировано автором: 08 Ноября, 2016 - 20:23:40)

 
 Top
3d_killer
Отправлено: 08 Ноября, 2016 - 20:37:20
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




у меня меняется
 
My status
 Top
megahertz
Отправлено: 09 Ноября, 2016 - 07:50:28
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




спасибо за помощь
(Добавление)
еще вопрос, а можно как то выполнить проверку средствами ajax + php?
т.е выполнять проверку и действие через чекбокс через функцию и результат уже выводить на страничку
изначально все это было с задумано для проверки функцией, сейчас ;t проверку получилось выполнить без js
 
 Top
megahertz
Отправлено: 10 Ноября, 2016 - 13:08:13
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2016  


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




разобрался, но остался последний вопрос)
Хочу прикрутить к чекбоксу стиль но почему то все стили используют свои идентификаторы...
Например:
CODE (html):
скопировать код в буфер обмена
  1. <section>
  2.         <div class="checkboxTwo">
  3.                 <input type="checkbox" value="1" id="checkboxTwoInput" name="" />
  4.                 <label for="checkboxTwoInput"></label>
  5.         </div>
  6. </section>

    https://paulund.co.uk/style-checkboxes-with-css


соответственно у него идентификатор=checkboxTwoInput а для работы моего чекбокса мне нужно делать id=checkbox_room, т.е на одном чекбоксе 2 идентификатора которых быть не может... если повесить на стиле мой id то чекбокс работать перестает...

CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" id="checkbox_room"/>


$(document).ready(function(){
$("#checkbox_room").change(function() {
if($(this).is(":checked")) {
$.ajax({
url: 'on.php',
type: 'POST',
data:{action2:'on'},
});
} else {
$.ajax({
url: 'on.php',
type: 'POST',
data:{action2:'off'},
});
}
});
});
[/code]

(Отредактировано автором: 10 Ноября, 2016 - 13:08:39)

 
 Top
3d_killer
Отправлено: 10 Ноября, 2016 - 13:31:15
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




задавай префиксы, ищи элемент по классу
Прикреплено изображение (Нажмите для увеличения)
2016-11-10_14-29-10.jpg
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB