Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2018, 16:38   #31
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

после explode & следовало бы пробежаться по массиву и сделать еще explode по = чтобы массив принял вид

$mass['a'] = true;
$mass['b'] = false;

и так далее

а потом заюзать свитч

Код:
switch ($i) {
    case 0:
        sql_str.= " or (или and) field=1"
    case 1:
        sql_str.= " or (или and) field=2"
    case 2:
       sql_str.= " or (или and) field=3"
}
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 28.05.2018, 18:10   #32
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

В этом коде я сравниваю два чекбокса на false и true
PHP код:
$sort $_POST['a'];
$pieces explode("&"$sort);
if (
$pieces[0] == 'a=false' && $pieces[1] == 'b=true' ){$vibor 'WHERE svet = "0"';
  include 
$table_rol;}

if (
$pieces[0] == 'a=true' && $pieces[1] == 'b=false'){$vibor 'WHERE svet = "1"';
  include 
$table_rol;}
  
if (
$pieces[0] == 'a=true' && $pieces[1] == 'b=true'){include $table_rol;}
elseif (
$pieces[0] == 'a=false' && $pieces[1] == 'b=false'){include $table_rol;} 
А если чекбоксов 10, это же капец геморой.
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 28.05.2018, 18:34   #33
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

У вас запрос зависит от выбранных чекбоксов. Кто мешает динамически строить sql зарос от выбранных чекбоксов ?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 28.05.2018, 19:08   #34
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Можно пример запроса?
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 28.05.2018, 21:23   #35
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

А пост номер 31 вам не показывает пример запроса? Хорошо давайте еще более подробно. предположим у вас 10-20 чексбоксов не важно. они что-то делают отражают статус это может быть что угодно, предположим пусть это будет устройство по включению / отключению света. вот вы выбрали включить свет в комнате номер 1 за это пусть отвечает чексбокс #1. конечно, же вы хотите сохранить статус последнего события.

По конкретно примеру давайте рассмотрим как можно сделать табличку (упрощенный вариант)

Код:
ID(auto) | DEVICE_NAME | STATUS_DEVICE
    1               LAMP1                 0 
    2               LAMP2                 1
Дадим в качестве name чекбоксам названиях наших устройств

Код:
  <input type="checkbox" name="LAMP1">
  <input type="checkbox" name="LAMP2">
  <input type="checkbox" name="LAMP3">
  <input type="checkbox" name="LAMP4">
Получим следующею строку
Цитата:
LAMP1=false&LAMP2=true&LAMP3=false& LAMP4=false&LAMP4=false
Распарсим ее.


Код:
$mass_device = explode('&',$str);
В результате получим массив:


Код:
array(2)
(
    [0] => string(5) "LAMP1=true",
    [1] => string(5) "LAMP1=true"
)
и т.д
Теперь запишем изменения в базу.

Код:

$sql = "UPDATE DEVICE_STATUS SET ";
foreach($mass_device as $key => $value)
{
      $tmp_device = explode('=', $value);
      // $tmp_device[0] будет равно LAMP1
      // $tmp_device[1] будет равно TRUE

      $sql.= "'.$tmp_device[0] .' = ". $tmp_device[1] . ",";
}

$sql = mb_substr($sql, 0, -1);
В переменной $sql лежит запрос на обновление. Для правильной работы необходимо сначала добавить все датчики (названия) в базу. По ним же можно динамически отобразить чекбоксы. (не ручками рисовать чекбоксы - инпут поля, а брать из базы) добавили запись DEVICE_NAME появился чекбокс. Что считаю правильным.

Это так же избавит Вас от вопроса
Цитата:
А если чекбоксов 10, это же капец геморой.
Для критиков скажу сразу, можете идти сразу лесом. это пример который, не является самым правильным на земле. но годиться как начальный шаг к пониманию. Расписывать все по феншую цели не преследовал.

Если остались вопросы пишите. И да если что-то будете спрашивать, расскажите о том что хотите сделать, и желательно подробно. Так от задачи зависит ее решения, порой из за не понимания или недостаточных знаний решаешь ее кустарным способом чтобы этого избежать этого изложите суть вашего задания, а я попробую описать ее решение со своей стороны, ну или не только я но и мои коллеги)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 28.05.2018 в 21:34.
Stanislav вне форума Ответить с цитированием
Старый 29.05.2018, 15:42   #36
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
если что-то будете спрашивать, расскажите о том что хотите сделать, и желательно подробно.
Идея тривиальна) Есть база с таблицами role и ver, пока две но планируется штук 6 и каждая таблица будет выводиться в этот блок при нажатии на кнопку, сейчас выводиться role при загрузки страницы.
Код HTML:
<div id="block-tovar-grid" class="row rounded border-primary">
<div class="col text-center" style="overflow: auto; height: 600px;">
<?php include 'tkani/role.php'; ?>	
 </div>
 </div>
В таблице role один вид ткани, в ver другой. Сейчас работаю с таблицей role, пока ver не трогаю т.к. принцип один и тот же.
Задача такова, сделать выбор тканей по параметрам, таких как : прозрачность(svet), категория(categoria), цвет(color) это всё управляется чекбоксами т.е. делаем три блока с чекбоксами Прозрачность, Категория и Цвет.
В Прозрачности два чекбокса первый-светопропускающая, второй-блэкаут, как видно из таблицы колонка svet имеет только два значения 0 и 1 которые присвоены определенным тканям и при клике первого чекбокса выбираются все ткани с параметром 0 колонки svet, если кликаем по второму то выбираем ткани с параметром 1 колонки svet, если они не выбраны то выводим все ткани.
В Категории пять чекбоксов каждый соответствует своей категории, как видно по фото колонка categoria имеет пять значений (0, 1, 2, 3, 4, 5) каждый присвоен определенной ткани, ну и дальше всё так же как с выбором Прозрачности.

Для чекбоксов использую ваш код, этот для Прозрачности
Код HTML:
$('[name="prosvet"] input[type=checkbox]').click(function() { 
  var str = $('[name="prosvet"] input:not([type="checkbox"])').serialize();
  var str1 = $('[name="prosvet"] input[type="checkbox"]').map(function() {
    return this.name + "=" + this.checked;
  }).get().join("&");
  if (str1 != "" && str != "") str += "&" + str1;
  else str += str1;
  $.ajax({
    type: 'POST',
    url: 'svet.php',
    data: {ida: str1},
    success: function(ide) {
      $("#block-tovar-grid .col").html(ide);
    }
  });
});
Этот для Категории
Код HTML:
$('[name="categori"] input[type=checkbox]').click(function() { //функция выбора категории по чекбоксу
  var str = $('[name="categori"] input:not([type="checkbox"])').serialize();
  var str1 = $('[name="categori"] input[type="checkbox"]').map(function() {
    return this.id + "=" + this.checked;
  }).get().join("&");
  if (str1 != "" && str != "") str += "&" + str1;
  else str += str1;
  $.ajax({
    type: 'POST',
    url: 'categori.php',
    data: {idcat: str1},
    success: function(ide) {
      $("#block-tovar-grid .col").html(ide);
    }
  });
});
Пока разметка такая
Код HTML:
<body>
<div class="container-fluid" style="margin-left: 10;">
	
<!-- Блок кнопок выбора таблиц ткани role и vertical -->
<div id="tkani" class="row rounded border-primary">
	<div class="col text-center" style="padding-bottom: 10px;">
	<h1 class="h4 font-weight-bold">Выбираем ткани</h1>
	<button type="button" id="rol_but" class="btn btn-outline-primary active">Рулонки</button>
	<button type="button" id="ver_but" class="btn btn-outline-primary">Вертикалки</button>
	<button type="button" id="gor_but" class="btn btn-outline-primary">Горизонтальные</button>
	<button type="button" id="rim_but" class="btn btn-outline-primary">Римские</button>
	<button type="button" id="zeb_but" class="btn btn-outline-primary">Зебра</button>
	</div>
</div>

<!-- Блок параметров-->
<div id="rol_svet" class="row rounded border-primary">
<div class="col-6 text-center border-primary" style="border-right: 2px solid;">
	<form name="prosvet">
	<h1 class="h4 font-weight-bold">Прозрачность</h1>
	<input id="svet" name="a" type="checkbox" style="opacity: 0; position: absolute;">
	<label for="svet" name="svetpro">
    <img class="pro" src='/images/3.png'/>
	<p style="margin:0;">Светопропускающие</p>
    </label>
	<input id="svet_bo" name="b" type="checkbox" align="left" style="opacity: 0; position: absolute;">
	<label for="svet_bo" name="svetpro">
    <img class="pro" src='/images/4.png'/ style="margin-top: 20px;">
	<p style="margin:0;">BO</p>
    </label>
</form>
</div>
<div class="col-6 text-center">
<form name="categori">
   <h1 class="h4 font-weight-bold">Категории</h1>
  <input type="checkbox" name="cat" id="box-1">
  <label for="box-1">0 категория</label>

  <input type="checkbox" name="cat" id="box-2">
  <label for="box-2">1 категория</label>

  <input type="checkbox" name="cat" id="box-3">
  <label for="box-3">2 категория</label>
  
  <input type="checkbox" name="cat" id="box-4">
  <label for="box-4">3 категория</label>
  
  <input type="checkbox" name="cat" id="box-5">
  <label for="box-5">4 категория</label>
  
  <input type="checkbox" name="cat" id="box-6">
  <label for="box-6">5 категория</label>
</form>
</div>
</div>

<!-- Блок вывода таблиц с тканями при нажатии кнопок -->
<div id="block-tovar-grid" class="row rounded border-primary">
<div class="col text-center" style="overflow: auto; height: 600px;">
<?php include 'tkani/role_tkani.php'; ?>	
 </div>
 </div>
 </div>
</body>
В дальнейшем добавлю расчет стоимости изделий в зависимоти от ширины, высоты и определенных параметров.

Сравнение чекбоксов сделал так:
это Прозрачность файл svet.php
PHP код:
$table_rol='tkani/role_tkani.php';

//чекбоксы блока Прзрачность----------------------------------------------------------
$sort $_POST['ida'];
$pieces explode("&"$sort);
if (
$pieces[0] == 'a=true'){$vibor 'WHERE svet = "0"';
  include 
$table_rol;}
  
if (
$pieces[1] == 'b=true'){$vibor 'WHERE svet = "1"';
    include 
$table_rol;}
    
elseif (
$pieces[0] == 'a=false' && $pieces[1] == 'b=false'){include $table_rol;} 
это Категории файл categori.php
PHP код:
$table_rol='tkani/role_tkani.php';

//чекбоксы блока Категории----------------------------------------------------------
$cat $_POST['idcat'];
$catpieces explode("&"$cat);

if (
$catpieces[0] == 'box-1=true')
{
$catvibor 'WHERE categoria = "0"';
    include 
$table_rol;}
 
if (
$catpieces[1] == 'box-2=true')
{
$catvibor 'WHERE categoria = "1"';
    include 
$table_rol;}

if (
$catpieces[2] == 'box-3=true')
{
$catvibor 'WHERE categoria = "2"';
    include 
$table_rol;}

if (
$catpieces[3] == 'box-4=true')
{
$catvibor 'WHERE categoria = "3"';
    include 
$table_rol;}
    
if (
$catpieces[4] == 'box-5=true')
{
$catvibor 'WHERE categoria = "4"';
    include 
$table_rol;}
    
if (
$catpieces[5] == 'box-6=true')
{
$catvibor 'WHERE categoria = "5"';
    include 
$table_rol;}
    
if (
$catpieces[0] == 'box-1=false' && $catpieces[1] == 'box-2=false' && $catpieces[2] == 'box-3=false' && $catpieces[3] == 'box-4=false' && $catpieces[4] == 'box-5=false' && $catpieces[5] == 'box-6=false')
{include 
$table_rol;} 
Изображения
Тип файла: png Таблица role.png (67.0 Кб, 129 просмотров)
Еду медленно, но верно!

Последний раз редактировалось spoon100500; 29.05.2018 в 16:18.
spoon100500 вне форума Ответить с цитированием
Старый 29.05.2018, 16:15   #37
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Ваши ответ не внес ясности, подробнее можно? что за процесс зачем таблички, быть может сделать можно все проще. (написал это раньше чем, вы дописали пост)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 29.05.2018 в 16:50.
Stanislav вне форума Ответить с цитированием
Старый 29.05.2018, 16:23   #38
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Вот пример того что хочу сделать
Без БД думаю не обойтись.
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 29.05.2018, 19:11   #39
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Времени много нет потому пока напишу по базе. Во-первых приучайтесь давайте осмысленные названия и таблицам и полям желательно на англ, транслитом читать как - то не гуд. вот таблица role что значит? какой смысл туда хотели заложить. role - это роль. Второе. зачем плодить таблицы? нужно создать адекватную структуру если вам пока сложно это делать со связями и т.д можно попробовать все в одной пока хранить. но если список параметров различный то это крайне не удобно, потому ответьте сначала на вопрос. список параметров ваших тканей может различаться? или вы будете использовать только тот список что перечислили выше? прозрачность и т.п?

по хорошему я бы создал таблицу со списком параметров, таблицу с тканями , и таблицу связку 1 к о многим где к каждой ткани клеится свой набор различный параметров
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 30.05.2018, 18:57   #40
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

role-это таблица с рулонными тканями, ver-с вертикальными.
В каждой таблице более 200 тканей т.е. строк, если закинуть все таблицы (а их примерно 6 штук) в одну, наверное не гуд-это на мой не профессиональный взгляд), но если большой объем в 1500 допустим, то можно и одну таблицу.
Параметры у каждой таблицы разные, не намного но отличаются.

Цитата:
Сообщение от Stanislav Посмотреть сообщение
по хорошему я бы создал таблицу со списком параметров, таблицу с тканями , и таблицу связку 1 к о многим где к каждой ткани клеится свой набор различный параметров
Наверное это правильное решение, но насколько это проще для меня)) я пока в этом плаваю)
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упоряддочить по колонкам чекбоксы ninja2 HTML и CSS 1 23.03.2016 12:40
Неактивные чекбоксы _dvr JavaScript, Ajax 12 17.09.2015 21:23
IE 8 чекбоксы tati89 HTML и CSS 4 13.08.2014 16:09
Столбцы и чекбоксы Lamo Microsoft Office Excel 2 27.07.2013 18:34
чекбоксы (делфи) NewLamer&Programer Помощь студентам 1 12.01.2013 13:48