PHP.SU

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

Страниц (6): [1] 2 3 4 5 6 »

> Найдено сообщений: 79
Nizz Отправлено: 13 Сентября, 2019 - 16:22:15 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
LIME пишет:
Вставляй sort в ссылку пагинатора.

Так и сделал, однако при смене страниц, срабатывает условие
PHP:
скопировать код в буфер обмена
  1. if(!isset($_GET['sort'])){
  2.        $_GET['sort']='default_up';
  3.        
  4.        }

Как мне правильно написать условие, что бы оно единожды принимало значение в случае если $_GET['sort'] - не существует?
(Добавление)
А нет, все получилось Просто не туда подставил. Спасибо. Как код? Стал лучше чем с POST?
(Добавление)
Подскажите пожалуйста еще последний момент: какими способами проверять GET данные для безопасности?. Спасибо.
Nizz Отправлено: 13 Сентября, 2019 - 15:53:24 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
LIME пишет:
Выброси сессию вообще. Похоже ты не совсем понял.

А как мне тогда сохранить параметр GET в url при смене страницы?

Страницы меняет параметр GET['start']
Nizz Отправлено: 13 Сентября, 2019 - 15:40:25 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
Еще раз хочу попросить помощи. Решил переписать все и подойти с поправкой на ошибки, использую метод GET. Передаю параметры, однако возникла особенность некорректной работы при смене страниц. Далее код
PHP:
скопировать код в буфер обмена
  1.  
  2. //** Новая ф-ия фильтра
  3.         $_SESSION['sort']=$_GET['sort'];
  4.        if(!isset($_SESSION['sort'])){
  5.         $_SESSION['sort']='default_up';
  6.        
  7.        }
  8.        $params_get = array(
  9.         'name_up' => '`name` ASC',
  10.         'name_down' => '`name` DESC',
  11.         'price_up' => '`price` ASC, `priceflo` ASC',
  12.         'price_down' => '`price` DESC, `priceflo` DESC',
  13.         'default_up' => '`id` ASC',
  14.         'default_down' => '`id` DESC',
  15.        );
  16.        
  17.        
  18.        //* $params_get[$_SESSION['sort']];        данный массив вернет значение текущего ключа сессии.
  19.      
  20.        //** Завершение ф-ии фильтра
  21.  

Далее подставляю $params_get[$_SESSION['sort']] в запрос, однако при переключении страниц $params_get[$_SESSION['sort']] возвращает через одну страницу значение 'default_up'. Помогите понять, где моя ошибка? Спасибо
(Добавление)
Сами параметры GET
CODE (html):
скопировать код в буфер обмена
  1. <form method="GET">
  2.          <input type="hidden" name="start" value=<?php echo '"'.$_GET['start'].'"'?>>
  3.  
  4.  
  5.       <li class="menu-item">
  6.          
  7.           <input type="submit" class="table1" name="sort" value="price_up">
  8.       </li>
  9.       <li class="menu-item">
  10.          
  11.           <input type="submit" class="table1" name="sort" value="price_down">
  12.       </li>
  13.       <li class="menu-item">  
  14.          
  15.           <input type="submit" class="table1" name="sort" value="name_up">      
  16.       </li>
  17.       <li class="menu-item">  
  18.          
  19.           <input type="submit" class="table1" name="sort" value="name_down">      
  20.       </li>
  21.      
  22.       <li class="menu-item">  
  23.          
  24.           <input type="submit" class="table1" name="sort" value="default_up">      
  25.       </li>
  26.       <li class="menu-item">  
  27.          
  28.           <input type="submit" class="table1" name="sort" value="default_down">      
  29.       </li>
  30.       <?php
  31.      
  32.      
  33.      ?>
  34.       </form>
Nizz Отправлено: 10 Сентября, 2019 - 16:16:55 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
Спасибо всем за подсказки!
Nizz Отправлено: 09 Сентября, 2019 - 13:42:12 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
Мелкий ваши наставления мотивируют развиваться. На счет сессии даже сразу и не подумал. Вы абсолютно правы, если например с использованием GET мне не хватает опыта, то глупым названиям переменных и ф-ий - нет никакого оправдания. Спасибо за ваши пояснения, буду пробовать переделывать.
(Добавление)
Мелкий пишет:
Почему разные name с формы? Обычно направления сортировки - это value заранее заданного name, к примеру sort=PriceUP. Соответственно маппится на выражение сортировки элементарным поиском по ключу массива.

А можно менее техническим языком для чайника, тк не все понял?
Nizz Отправлено: 09 Сентября, 2019 - 11:57:15 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
andrewkard
Огромное вам спасибо за помощь и за направление мысли. Я даже и не додумался сразу все запихнуть в массив....
Nizz Отправлено: 09 Сентября, 2019 - 11:47:20 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
andrewkard Я решил дополнить условием на проверку POST в самом верху. Как думаете, не сильно плохо получилось?
PHP:
скопировать код в буфер обмена
  1. function Str_result($POST){
  2.  if(empty($_POST)) {
  3.   return '`id` ASC';
  4.  } else {
  5.  
  6.  if (!isset($_SESSION['Ul_params'])) {
  7.         $_SESSION['Ul_params'] = 0;
  8.         return '`id` ASC';
  9.     }
  10.  
  11.     $params = array(
  12.         'NameUP' => '`name` ASC',
  13.         'NameDown' => '`name` DESC',
  14.         'PriceUP' => '`priceflo` ASC',
  15.         'PriceDown' => '`priceflo` DESC',
  16.         'idUP' => '`id` ASC',
  17.         'idDown' => '`id` DESC',
  18.     );
  19.  
  20.     $index = 0;
  21.  
  22.     foreach ($params as $name => $sort){
  23.         $index++;
  24.         if(isset($_POST[$name])){
  25.             $_SESSION['Ul_params'] = $index;
  26.             return $params[$name];
  27.         }
  28.     }
  29.  
  30.     return false;
  31.  }
  32. }
Nizz Отправлено: 09 Сентября, 2019 - 11:29:18 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
Мелкий пишет:


Вы не написали главного - какую задачу решаете.


Задача проста - в зависимости от нажатой кнопкой содержащей метод POST - вернуть нужную часть кода в запрос. Я решил промаркировать индексами от 0 до 5 и сохранять в сесии, тк есть пагинация.
(Добавление)
andrewkard пишет:
Наверное так да?

Ваш код и правда адекватнее моего структурно и он работает. Единственное, выбивает ошибку когда метод POST не передает никаких параметров "PHP Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in"
Nizz Отправлено: 09 Сентября, 2019 - 11:01:34 • Тема: Страшный код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1354
Добрый день ув. форумчане. Помогите пожалуйста переписать код в человеческий, поскольку у меня с этим постоянная проблема.
PHP:
скопировать код в буфер обмена
  1.  
  2. function Str_result($POST){
  3.  
  4.  
  5.    
  6.      if (!isset($_SESSION['Ul_params'])) {
  7.       $_SESSION['Ul_params'] = 0;
  8.       } else {
  9.        
  10.       if ($_POST['NameUP']) $_SESSION['Ul_params'] = 1;
  11.       else if ($_POST['NameDown']) $_SESSION['Ul_params'] = 2;
  12.       else if ($_POST['PriceUP']) $_SESSION['Ul_params'] = 3;
  13.       else if ($_POST['PriceDown']) $_SESSION['Ul_params'] = 4;
  14.       else if ($_POST['idUP']) $_SESSION['Ul_params'] = 0;
  15.       else if ($_POST['idDown']) $_SESSION['Ul_params'] = 5;
  16.   }
  17.    
  18.      if($_SESSION['Ul_params'] == 0) return '`id` ASC';
  19.      else if($_SESSION['Ul_params'] == 0) return '`id` ASC';
  20.      else if($_SESSION['Ul_params'] == 1) return '`name` ASC';
  21.      else if($_SESSION['Ul_params'] == 2) return '`name` DESC';
  22.      else if($_SESSION['Ul_params'] == 3) return '`priceflo` ASC';
  23.      else if($_SESSION['Ul_params'] == 4) return '`priceflo` DESC';
  24.      else if($_SESSION['Ul_params'] == 5) return '`id` DESC';
  25.  
  26.  
  27. }
  28.  


Проблема изначально связана с неопределенными индексами POST: NameUP,NameDown,PriceUP,PriceDown,idUP,idDown. Помогите пожалуйста. Спасибо.
Nizz Отправлено: 27 Августа, 2019 - 15:27:58 • Тема: Вопрос по Сессии • Форум: Вопросы новичков

Ответов: 4
Просмотров: 648
LIME, andrewkard: огромное спасибо вам за подсказки.
Nizz Отправлено: 23 Августа, 2019 - 15:58:20 • Тема: Вопрос по Сессии • Форум: Вопросы новичков

Ответов: 4
Просмотров: 648
Добрый день ув. форумчане. Интересует реализация функции, которой будет сохранять переданные параметры при обновлении страницы.
CODE (html):
скопировать код в буфер обмена
  1. [PHP]
  2. <form method="POST" >
  3.     <ul class="menu">
  4.      <div class="arttext"><i class="fa fa-filter"></i> Фильтры</div>
  5.       <li class="menu-item">
  6.        <input type="submit" class="table1" name="NameUP" value="По имени от А-я ">        
  7.       </li>
  8.       <li class="menu-item">
  9.        <input type="submit" class="table1" name="NameDown" value="По имени от Я-а">          
  10.       </li>
  11.       <li class="menu-item">
  12.        <input type="submit" class="table1" name="PriceUP" value="По цене &#11014;">          
  13.       </li>
  14.       <li class="menu-item">
  15.        <input type="submit" class="table1" name="PriceDown" value="По цене &#11015;">          
  16.       </li>
  17.     </ul>
  18.    </form>
  19. [/PHP]


Есть 4 параметра, которые я передаю методом POST.
Помогите пожалуйста написать функцию, которая сохранит выбранный параметр при обновлении страницы. Спасибо
Nizz Отправлено: 22 Августа, 2019 - 17:41:46 • Тема: Функция • Форум: Вопросы новичков

Ответов: 0
Просмотров: 224
Всем доброго времени суток ув. форумчане. Помогите пожалуйста написать функцию отсекающие определенные значения:

имеем исполняемый код отвечающий за пагинацию:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. // Часть с пагинацией # -> ------------
  4.        
  5.          
  6.          $numperpage = 18; //кол-во записей на одной странице
  7.          $countsql = $db->prepare('SELECT COUNT(id) FROM products WHERE '.$query_search.'');
  8.          $countsql -> execute($params);
  9.          $row_count = $countsql->fetch();
  10.          
  11.          $numrecords = $row_count[0]; // всего записей
  12.          
  13.          $numlinks = ceil($numrecords/$numperpage); // всего страниц
  14.          $page_start= $_GET['start'];
  15.          if (!$page_start) $page_start = 0;
  16.          $start_page= $page_start * $numperpage;
  17.          
  18.          echo '<div class="PageSelector1">';
  19.          
  20.          for ($i=0;$i<$numlinks;$i++){
  21.            if ($page_start == $i) $Swch = 'SwchItemCur1';
  22.            else $Swch = 'SwchItem1';
  23.           $y=$i+1;
  24.           echo '<a href="/search_new/'.$keyword.'?start='.$i.'" class="'.$Swch.'">'.$y.'</a>';
  25.          }
  26.          echo '</div>';
  27.          
  28.         // <- Завершение пагинации # ----------
  29.        
  30.         $query = $db->prepare('SELECT * FROM products WHERE '.$query_search.' ORDER BY
  31.        name limit '.$start_page.','.$numperpage.'');
  32.         $query->execute($params);
  33.  
  34.  

беда в том, что он выдает все страницы, но мне необходимо отсечь ненужные, так, что бы одновременно показывало не более 15 страниц. Помогите пожалуйста с решением.
Nizz Отправлено: 02 Февраля, 2019 - 13:45:07 • Тема: Вопрос по массиву • Форум: Вопросы новичков

Ответов: 9
Просмотров: 361
Строитель еще раз большое вам спасибо. С оператором if - гораздо понятнее.
Nizz Отправлено: 02 Февраля, 2019 - 10:39:17 • Тема: Вопрос по массиву • Форум: Вопросы новичков

Ответов: 9
Просмотров: 361
LIME , а как переписать условие под традиционный оператор if ?
Nizz Отправлено: 01 Февраля, 2019 - 16:47:50 • Тема: Вопрос по массиву • Форум: Вопросы новичков

Ответов: 9
Просмотров: 361
Строитель огромное вам спасибо !

Страниц (6): [1] 2 3 4 5 6 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB