Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2017, 17:40
Новичок на форуме
Отправить личное сообщение для qpurypaHT Посмотреть профиль Найти все сообщения от qpurypaHT
 
Регистрация: 26.02.2017
Сообщений: 7

click checkbox for send data
Здравствуйте, я рад приветствовать вас!

Я столкнулся с проблемой и нуждаюсь в помощи. Надеюсь моя просьба будет не слишком наглой.
Дело в том, что я javascript и jquery я еще не разбираюсь, так как не хочу хвататься за несколько языков сразу и метаться между ними, изучаю сейчас php

Я пишу сайт корпоративный для жены, в целом все готово, лишь осталось дописать админку.

На странице списка зарегистрированных пользователей, сверстал разметку, в которой оформил checkbox



Бегунки активны и переключаются.

input[type="checkbox"]{display: none;}
input[type="checkbox"] + label{cursor: pointer;padding-left: 50px;position: relative;font-family: tahoma, sans-serif, arial;}
input[type="checkbox"] + label::before{content: "";display: inline-block;position: absolute;top: 0;left: 0;vertical-align: middle;padding: 0;height: 15px;width: 36px;margin: 0 5px 0 0;border: 1px solid #dadada;border-radius: 12px;background: #fc7979;}
input[type="checkbox"] + label::before,
input[type="checkbox"] + label::after{-webkit-transition: all .2s ease-out;transition: all .2s ease-out;}
input[type="checkbox"] + label::after{content: "";display: block;position: absolute;top: 1px;left: 1px;width: 22px;height: 13px;border-radius: 22px;
background: #fff;border: 1px solid #dadada;box-shadow: 0 3px 3px rgba(140, 140, 140, .1);}
input[type="checkbox"]:checked + label::before{background: #6edc5f;border-color: #6dd75e;}
input[type="checkbox"]:checked + label::after{left: 13px;}



Вывел с БД список пользователей:

$sql = "SELECT * FROM `cordinators`";
$sql = mysql_query($sql, $link_connect);
while ($cordinators = mysql_fetch_assoc($sql)){
    if($cordinators['first'] == 'yes'){
        $first = '<img src="check_box.png" alt="" />';
    }else{
        $first = '<img src="cancel.png" alt="" />';
    }
 
    if($cordinators['status'] == 'activated'){
        $a = 'checked';
    }else{
        $a = '';
    }
    
    echo '
        <div class="cordinator">
            <a href="cordi_edit.php?=id'.$cordinators['id'].'" id="edit"><img src="application_edit.png" alt=""/></a>
            <div class="name">'.$cordinators['surname'].' '.$cordinators['name'].' '.$cordinators['patronymic'].'</div>
            <div class="email">'.$cordinators['email'].'</div>
            <div class="user_group">'.$cordinators['user_group'].'</div>
            <div class="UCode">'.$cordinators['UCode'].'</div>
            <div class="first">'.$first.'</div>
            <div class="status"><input type="checkbox" id="'.$cordinators['id'].'" checked="'.$a.'" /> <label for="'.$cordinators['id'].'"></label></div>
        </div>
    
    ';
}





id стилей для <input type="checkbox" /> в цикле нужен индивидуальный, чтобы работал <label for=""></label>
Выдал его по id пользователей.


Эта проверка определяет, активирована учетка или нет, в соответствии: checked="'.$a.'"


if($cordinators['status'] == 'activated'){
        $a = 'checked';
    }else{
        $a = '';
    }



Суть идеи такова, как сделать, чтобы переключая в этом списке учеток этот чек бокс на записи пользователя и в БД менять статус учетки activated/deactivated

Знаю что это делается через ajax, но даже не представляю как такой скрипт написать и обработчик

Знаю моя просьба возможно наглая, но без помощи я не решу вопрос.

Благодарю
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2017, 18:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от qpurypaHT
я javascript и jquery я еще не разбираюсь, так как не хочу хвататься за несколько языков сразу и метаться между ними
jquery, это не язык, а библиотека плюшек написанных на javascript, фреймворк на клиенте, такой же как и существуют для РНР. )

if($cordinators['status'] == 'activated'){ $a = 'checked'; }else{ $a = ''; } для checked="'.$a.'", это лишнее, так как прописанное в поле checked="", и checked="что_угодно", и checked - это все означает одно - флажок отмечен.

Что требуется то - при смене состояния флажка отправлять сообщение об этом серверу?
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2017, 19:06
Новичок на форуме
Отправить личное сообщение для qpurypaHT Посмотреть профиль Найти все сообщения от qpurypaHT
 
Регистрация: 26.02.2017
Сообщений: 7

Побеждено с помощью доброго человека, и вам спасибо за отклик, не совсем понял что вы говорите про:
Цитата:
if($cordinators['status'] == 'activated'){ $a = 'checked'; }else{ $a = ''; } для checked="'.$a.'", это лишнее, так как прописанное в поле checked="", и checked="что_угодно", и checked - это все означает одно - флажок отмечен.

<script  type="text/javascript">
			$(function () {
				$("input:checkbox").on("change", function ()  {
					var id = $(this).attr('id');
					var val = this.checked?'activated':'deactivated';
					$.ajax({
						url:'test.php',
						type:'post',
						data:{id:id,val:val},
						success:function(res){
						}
					});
				});
			});
		</script>
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2017, 19:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от qpurypaHT
не совсем понял что вы говорите
<input type="checkbox" checked> <input type="checkbox" checked=""> <input type="checkbox" checked="fignya">


И все флажки выбраны, не так ли? То есть в вашем коде нет логики и правильно будет так:

<input type="checkbox" id="'.$cordinators['id'].'" "'.($cordinators['status'] == 'activated' ? 'checked' : null).'" />


PS. Если уж оперировать для выбрано/не выбрано строковыми значениями, то выгоднее поле в базе держать по умолчанию NULL или "", а выбранное строка "checked", тогда при выводе флажка не потребуется проверки, а просто "'.$cordinators['status'].'"

Последний раз редактировалось laimas, 26.02.2017 в 19:43.
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2017, 20:12
Новичок на форуме
Отправить личное сообщение для qpurypaHT Посмотреть профиль Найти все сообщения от qpurypaHT
 
Регистрация: 26.02.2017
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
<input type="checkbox" checked> <input type="checkbox" checked=""> <input type="checkbox" checked="fignya">


И все флажки выбраны, не так ли? То есть в вашем коде нет логики и правильно будет так:

<input type="checkbox" id="'.$cordinators['id'].'" "'.($cordinators['status'] == 'activated' ? 'checked' : null).'" />


PS. Если уж оперировать для выбрано/не выбрано строковыми значениями, то выгоднее поле в базе держать по умолчанию NULL или "", а выбранное строка "checked", тогда при выводе флажка не потребуется проверки, а просто "'.$cordinators['status'].'"
т.е. в страктуре sql полю status установить "По умолчанию" NULL и далее запрос типа:
if{что-то == null}{
то...
}

я просто не понимаю пока записи: 'activated' ? 'checked' : null)

не знаю что значит ? и : =) опыт не тот пишу даже в mysql а не в mysqli
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2017, 20:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от qpurypaHT
т.е. в страктуре sql полю status установить "По умолчанию" NULL и далее запрос типа
Вообще-то для такого выгоднее или BOOLEAN или TINYINT тип поля, ну или ENUM. Ведь значение этого поля как activated/deactivated не несет в себе никакого глубокого смысла, а с токи зрения производительности проигрывает ранее указанным трем типам. Первые два типа это числа, а ENUM только в отображении строка, во внутреннем представлении это числа. Вы же сознательно оперируете строками там, где большой надобности в них нет.

Работа флажка как элемента формы имеет особенность - если флажок не выбран, то он на север не передается. Следовательно - пришел флажок, пишем в базу 1, нет флажка, пишем 0. Если значению флажка указать 1 и если нотайсы отключены, что должно быть правилом на удаленном сервере, то проверка его наличия и значения проста:

$check = (int)$_POST['check'] & 1; //пишем $check в базу


Сообщение от qpurypaHT
не знаю что значит ? и :
Это тернарный условный оператор. Его можно привести к более сокращенному виду по логике равному JS выражению a = b || c:

$check = (int)$_POST['check'] ?: 0; //то есть не важно что хранит $_POST['check'], какое число, важно что установлено, либо по умолчанию - 0, не установлено
//хотя в данном случае, если не важно, это лишено смысла, но показано для примера


Ну и при выводе:

<input type="checkbox" value="1" <?=$cordinators['status'] ? 'checked' : null?>>


В случае ENUM, это 1 => неактивен, 2 => активен, или наоборот. Видим при выводе, к примеру для контроля, неактивен / активен, в базу можно писать 1 и 2, соответственно, как и искать по 1 и 2 при выборке. Читайте SQL.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор с вариантом значений. dzho Общие вопросы Javascript 45 06.08.2017 03:54
checkbox, событие click AlexOk Общие вопросы Javascript 1 11.11.2016 14:05
Загрузка процесса при отрисовке изображения slovnosvoboda Общие вопросы Javascript 3 20.05.2016 13:56
вопрос по видимости переменных. yiooxir Angular.js 3 31.10.2013 12:37
jqgrid tree and checkbox gaz2003 jQuery 0 17.12.2011 15:59