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 :: Сортировка одним кликом

 PHP.SU

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


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

> Без описания
leshiy
Отправлено: 30 Ноября, 2017 - 12:58:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 188
Дата рег-ции: Июнь 2008  


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




Есть код который сортирует данные из бд по имени: от А до Я и в обратном порядке: от Я до А.А как бы сделать вместо двух этих кнопок одну и что бы при кликах по ней происходила бы сортировка и по убыванию и по возрастанию и еще бы название этой кнопки менялось бы: Имя по убыванию, Имя по возрастанию.
index.php
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. include("functions.php");
  4. $db = connect_db();
  5. if($_GET['sort_id']){
  6.    $id = strip_tags($_GET['sort_id']);
  7.    $goods = get_goods($db,$id);
  8.        foreach($goods as $item){
  9. echo '<li>
  10.     <p id="title">'.$item['name'].'</p>
  11.     <p id="price">'.$item['age'].'</p>
  12.     </li>'.$ppp;
  13.      }exit();
  14. }else{$goods = get_goods($db);}
  15. $goods = get_goods($db);
  16. ?>
  17. <!DOCTYPE html>
  18. <html lang="ru-RU">
  19. <head>
  20. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  21. <title></title>
  22. <script type="text/javascript" src="js/jquery.js"></script>
  23. <script type="text/javascript" src="js/script.js"></script>
  24. <style>
  25. .sort span{color: blue;text-decoration: underline; cursor: pointer;}
  26. #fon{display: none; opacity: 0.8; position: absolute; width: 700px;height: 100%; z-index: 100; background-color: white;}
  27. #load{position: fixed; left:40%; top: 50%; width: 65px; height: 65px;z-index: 150; display: none;}
  28.     </style>
  29. </head>
  30. <body>
  31. <div id="content">
  32. <div id="main">
  33.     <div id="fon"></div>
  34.     <div id="load"></div>
  35. <div class="sort">
  36.     Сортировать по: <strong>Имени</strong><span id="name">А-Я</span> | <span id="name1">Я-A</span>
  37.     <ul id="tovar">
  38. <?php
  39.    foreach($goods as $item){
  40. echo '<li>
  41.     <p id="title">'.$item['name'].'</p>
  42.     <p id="price">'.$item['age'].'</p>
  43.     </li>';
  44.      }?>
  45.     </ul>
  46.     </div>
  47.     </div>
  48.     </div>
  49. </body>
  50. </html>
  51.  

functions.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function connect_db(){
  4.     $db = mysqli_connect('localhost','root','','bbb');
  5.     if(!$db){
  6.         exit('error'.mysqli_error());
  7.     }
  8.     mysqli_query($db,"SET NAMES utf8");
  9.     return $db;
  10. }
  11. function get_goods($db,$id = FALSE){
  12.     $sql = "SELECT * FROM table01";
  13.         if($id){if($id == 'name1'){
  14.         $sql .= ' ORDER BY name DESC';
  15.         }elseif($id == 'name'){
  16.         $sql .= ' ORDER BY name ASC';
  17.         }}
  18.     $result = mysqli_query($db,$sql);
  19.     for($i = 0;$i < mysqli_num_rows($result); $i++){
  20.         $goods[] = mysqli_fetch_array($result);
  21.     }
  22.     return $goods;
  23. }
  24. ?>

script.js
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function () {
  3.     $(".sort span").click(function ()
  4.                          {
  5.         var id = $(this).attr('id');
  6.         $.ajax({
  7.             data:'sort_id='+id,
  8.             success:function (html){
  9. $("#tovar").html(html).hide().fadeIn(2000);
  10.             }
  11.         });
  12.     });
  13. });
 
 Top
Vladimir Kheifets
Отправлено: 30 Ноября, 2017 - 20:29:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Добрый вечер!
Попробуйте добавть после стр.15
PHP:
скопировать код в буфер обмена
  1. //В начале  сортировка А-Я перключатель показывает Я-A
  2. $sort_id=($_GET["sort_id"])?$_GET["sort_id"]:"name";
  3. $sort_span=($sort_id=="name")?'<span id="name1">А-Я</span>':'<span id="name">Я-A</span>'

Строку 36 заменить на:
PHP:
скопировать код в буфер обмена
  1. Сортировать по: <strong>Имени</strong><?=$sort_span;?>

Удачи!
 
 Top
leshiy
Отправлено: 30 Ноября, 2017 - 20:44:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 188
Дата рег-ции: Июнь 2008  


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




Сортирует только по убыванию один раз и все и кнопка не меняется.
 
 Top
Vladimir Kheifets
Отправлено: 01 Декабря, 2017 - 09:53:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




leshiy пишет:
Сортирует только по убыванию один раз и все и кнопка не меняется.
Доброе утро! Значит не изменяется $_GET["sort_id"]. Попробуйте убрать JS и вставить
PHP:
скопировать код в буфер обмена
  1. $sort_span=($sort_id=="name")?'<a href="?sort_id=name1">А-Я</a>':'<a href="?sort_id=name" >Я-A</a>'

Удачи!
 
 Top
leshiy
Отправлено: 01 Декабря, 2017 - 10:06:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 188
Дата рег-ции: Июнь 2008  


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




А без js вообще не работает.Ведь index.php не перегружается.

(Отредактировано автором: 01 Декабря, 2017 - 10:07:53)

 
 Top
teleoperator27
Отправлено: 01 Декабря, 2017 - 11:08:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


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




CODE (html):
скопировать код в буфер обмена
  1.   <span id="sort" data-sort="asc">А-Я</span>    




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function () {
  3.                 $('#sort').on('click', function(){
  4.                                 var sort = $(this).attr('data-sort');
  5.                                 sort == 'asc' ? $(this).attr('data-sort', 'desc').text('Я-А') : $(this).attr('data-sort', 'asc').text('А-Я') ;
  6.                                 value = $(this).attr('data-sort');
  7.                                 console.log(value); //проверим в консоли
  8.                                 $.ajax({
  9.                                                 data:value,
  10.                                                 success:function (html){
  11.                                                         $("#tovar").html(html).hide().fadeIn(2000);
  12.                                                 }
  13.                                         });
  14.                         });
  15.         });
  16.  

Дальше на сервере принимаешь в data значение asc или desc на и дальше на пыхе как обычно, делаешь запрос
 
My status
 Top
Vladimir Kheifets
Отправлено: 01 Декабря, 2017 - 12:50:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




leshiy пишет:
А без js вообще не работает.Ведь index.php не перегружается.

А Вы пробовали? Вы действительно думаете, что всё работает только у клиента в браузере?
PHP-скрипт обрабатывает $_GET параметры, переданные клиентом через URL.
за деревьями леса не видно...
 
 Top
leshiy
Отправлено: 01 Декабря, 2017 - 16:57:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 188
Дата рег-ции: Июнь 2008  


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




Спасибо teleoperator27!Все работает!
Только чуток подправил.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.ajax({
  3. data:'sort_id='+value,
  4.  
 
 Top
teleoperator27
Отправлено: 01 Декабря, 2017 - 19:54:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


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




leshiy пишет:
Спасибо teleoperator27!Все работает!
Только чуток подправил.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.ajax({
  3. data:'sort_id='+value,
  4.  
Ну я там особо в детали не стал заморочиваться, ответил на вопрос по кнопке. ) А уж данные аяксом передать проблем не должно быть)
 
My status
 Top
Строитель Модератор
Отправлено: 01 Декабря, 2017 - 20:14:59
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




leshiy, спасибо можно выразить кликом на Спасибо - уровень вашей репутации это позволяет.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB