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
Форумы портала PHP.SU :: Версия для печати :: фильтрация по определенным критериям и вывод в виде таблицы
Форумы портала PHP.SU » » Вопросы новичков » фильтрация по определенным критериям и вывод в виде таблицы

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

1. alezander - 18 Января, 2017 - 22:31:15 - перейти к сообщению
Хочу сделать таблицу с выводом и вводом данных по пользователям и с сортировкой(фильтрацией) + чтобы данную в данную таблицу можно было добавлять и убирать значения. Таблицу сделал убирать и добавлять тоже, а вот с фильтрацией застрял Пробовал через формы подключать файл с php не получилось. Я сам понимаю что надо скорее всего критерии отбора выносить в другую часть(другу форму php или hmtl). Но не пойму как правильно передать данные из одной формы php в другую передавая данные для фильтрации.

Спойлер (Отобразить)
2. teleoperator27 - 19 Января, 2017 - 03:38:36 - перейти к сообщению
Фильтрация у вас в самом запросе. Через GET получайте нужный параметр и подставляйте его в WHERE. Только фильтровать сам get-параметр не забывайте, что бы инъекций и всего такого не было. Упрощенно так

запрос:

ну а до запроса получаем и обрабатываем данные
PHP:
скопировать код в буфер обмена
  1. $where = "WHERE `user` = 'admin'";
  2. if($_GET['class']){
  3. $class= intval($_GET['class']) // в этой строчке фильтруем полученые через GET данные
  4. $where = $where  . "AND `class` = $class";//если есть фильрация по полю class запрос станет таким  "SELECT * FROM users WHERE `user` = 'admin' AND `class` = 1 "
  5. }

и так далее типа такого
3. alezander - 19 Января, 2017 - 19:18:00 - перейти к сообщению
Спасибо это я примерно понял я не пойму как подвязать кнопку к примеру у меня есть кнопка "на дату"
CODE (htmlphp):
скопировать код в буфер обмена
  1.                 <td><input type="date" name="needdate" value="<?php echo $_POST['needdate']?>"/></td>
  2.                 <th><input type="submit" name="ondate" value="На дату"/></th>
чтобы подстановка данных тойже
PHP:
скопировать код в буфер обмена
  1. $where = "WHERE `needdate` = 'needdate'";
проходило по ее нажатию.

Спойлер (Отобразить)
4. teleoperator27 - 19 Января, 2017 - 19:35:20 - перейти к сообщению
Тут важна не кнопка, а поле с датой
Точно так же и делается. Только внимательней с массивами, в которые все это передается, а то отправляете в пост массив, а получить хотите из гет
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $needdate = trim($_POST['needdate']);
  4.  
  5. $where = !empty($needdate) ? "AND `needdate` = '" . $needdate . "'"  : '';
  6.  
  7. $result = mysqli_query($connection, "SELECT * FROM users WHERE `user` =  admin' " . $where . "");
  8.  
  9.     while ($row = mysqli_fetch_array($result)):
  10.     ///бла бла бла
  11. endwhile;
  12. ?>

типа так
5. alezander - 21 Января, 2017 - 14:49:04 - перейти к сообщению
получаю ошибку как на скрине переменная вроде передается вверху ее выводит текстов и саму и запрос который дописываеться $where, запись верная в mysql пишу все ок наверное я какой - то синтаксис не соблюдаю ?

та часть в которую не пойму проблему
Спойлер (Отобразить)


весь код
Спойлер (Отобразить)
6. teleoperator27 - 21 Января, 2017 - 15:23:23 - перейти к сообщению
Каша у вас какая то непонятная. Выведите все в одном файле без всякой фильтрации, сделайте что бы работало и покажите код. А потом уже дальше двигайте. По вашей таблице вообще непонятно, что там где выводится
7. alezander - 21 Января, 2017 - 17:33:29 - перейти к сообщению
вот я вроде все расписал и скрины тоже ниже и кажется я понял в чем проблема только не знаю как ее описать WHERE `cratedate` = '' передаеться с двойной кавычкой в конце и получается в SQL запросе их попадет две что то типа SELECT * FROM users WHERE `cratedate` = '$needdate'" вопрос почему и как это можно по другому написать ?

Спойлер (Отобразить)


почисти код и добавил описание
Спойлер (Отобразить)


teleoperator27 большое спасибо я понял что надо использовать конкатенацию как вы показали выше.
8. teleoperator27 - 21 Января, 2017 - 18:45:43 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $where = ("WHERE `cratedate` = '$needdate'")


зачем тут скобки?

PHP:
скопировать код в буфер обмена
  1. $where = "WHERE `cratedate` = '" . $needdate ."'";


запрос будет

PHP:
скопировать код в буфер обмена
  1. $result = mysqli_query($connection, "SELECT * FROM users WHERE `cratedate`  = 'что пришло' ");

 

Powered by ExBB FM 1.0 RC1