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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2016, 14:03   #11
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Может кому пригодиться код.

Вынес формирование меню в подключаемый head:
PHP код:
<div>
  <ul class="nav nav-tabs" role="tablist" style="margin: 0px 0px 0px 10px;">
    <?php
        $items 
= [
            [
'name' => 'Главная страница',      'href' => 'series'],
            [
'name' => 'Серии',                 'href' => 'schange'],
            [
'name' => 'Утверждающие органы',   'href' => 'appauthority'],
            [
'name' => 'Изменения в выпуске',   'href' => 'productchange'],
            [
'name' => 'Разработчик',           'href' => 'developer'],
            [
'name' => 'Сотрудник',             'href' => 'employees'],
            [
'name' => 'Выпуски',               'href' => 'edition'],
            [
'name' => 'Статусы',               'href' => 'status'],
            [
'name' => 'Пользователи',          'href' => 'users'],
            [
'name' => 'Выдача на руки',        'href' => 'receipt'],
                 ];

        foreach(
$items as $item)
            {
                
$main_menu[] =
                    
'<li ' .((
                        
$item['href']==preg_replace'/^.(.*)$/''\1'$_SERVER['REQUEST_URI'])
                             ) ? 
'class="active"' ''). '>'.
                        
'<a href="' .$item['href']. '">' .$item['name']. '</a>'.
                    
'</li>';
            }

            foreach (
$main_menu as $_menu)
                echo 
$_menu;
        
?>
  </ul>
</div>
Правда пришлось немного напильником поработать, ибо полоска под меню не хотела отображаться. Весьма странно.

И вывод строк всех таблиц таким образом:
PHP код:
          <?php foreach ($getList as $st_getList): ?>
            <tr>
              <?php foreach ($st_getList as $val_st): ?>
                <td><?php echo $val_st;?></td>
              <?php endforeach;?>
            </tr>
          <?php endforeach;?>
Где $getList получаем из контроллера:
PHP код:
        $select_array 'id_series, number_series, specification, input_date, shelf_number';
        
$from 'series';
        
$orderby 'number_series';
        
$limit 10;
        
        
$getList Tools::getList($select_array$from$orderby$limit); 
Ну и модель в довесок:
PHP код:
    public static function getList($select_array$from$orderby$limit)
    {
        
$db Db::getConntection();
        
        
$result $db->query('SELECT '.$select_array
                
.' FROM '    .$from
                
.' ORDER BY '.$orderby
                
.' LIMIT '   .$limit);
        
        
$getList = array();
        
        
$i 0;
        while (
$row $result->fetch(PDO::FETCH_NUM))
        {
            
//var_dump($row);
            
$sum count($row);
            for(
$x=0$x<$sum$x++)
            {
                
$getList[$i][$x] = $row[$x];
            }
            
$i++;
        }
        return 
$getList;
    } 
Artsiom вне форума Ответить с цитированием
Старый 04.10.2016, 14:17   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Код:
$result = $db->query('SELECT '.$select_array
                .' FROM '    .$from
                .' ORDER BY '.$orderby
                .' LIMIT '   .$limit);
Чот опасно выглядит. Нет ли тут возможности SQL инъекций? (если функция когда-то вызывается с данными от клиента)
Лучше использовать prepared statement.

https://en.wikipedia.org/wiki/Prepar...tement#PHP_PDO

www.phptherightway.com/#databases / http://getjump.me/ru-php-the-right-w...BD%D1%8B%D1%85


Цитата:
Сообщение от Artsiom Посмотреть сообщение
Код:
$item['href']==preg_replace( '/^.(.*)$/', '\1', $_SERVER['REQUEST_URI']
http://php.net/manual/en/function.parse-url.php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2016, 14:41   #13
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Чот опасно выглядит. Нет ли тут возможности SQL инъекций?
Нет. Всё задаю я.
___________________________________ ______
И там максимум что нужно, это удалить или вернуть подстроку с 1-го символа.
Код:
$_SERVER['REQUEST_URI']
даст нам, к примеру, /series или /user...
Код:
substr($_SERVER['REQUEST_URI'], 1)
вернёт series или соответственно user.
Итого
Код:
$item['href']==substr($_SERVER['REQUEST_URI'], 1)
Вполне норм выглядит то же.

Последний раз редактировалось Artsiom; 04.10.2016 в 14:45.
Artsiom вне форума Ответить с цитированием
Старый 04.10.2016, 14:56   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Всё задаю я.
А вдруг потом забудете и вызовете getList($_POST[...], ...)?
Цитата:
Сообщение от Artsiom Посмотреть сообщение
даст нам, к примеру, /series или /user
А если "/series?qwe"?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2016, 15:19   #15
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А вдруг потом забудете и вызовете getList($_POST[...], ...)?
Оно конечно возможно... но я пока не представляю в каком месте дать пользователю что-то где-то ввести что бы получить выборку. Разве что поиск, но это другим методом будет.
Тем более это локальный сайт. Ну не будет же директор занимать SQL-инъекциями
В крайнем слчае, да, придется использовать:
PHP код:
        $sql 'SELECT * FROM user WHERE user.login = :login AND user.password = :password ';
       
        
$result $db->prepare($sql);
        
$result->bindParam(':login'$loginPDO::PARAM_INT);
        
$result->bindParam(':password'$passwordPDO::PARAM_INT);
        
$result->execute(); 
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А если "/series?qwe"?
Да. Чёрт

Последний раз редактировалось Artsiom; 04.10.2016 в 15:27.
Artsiom вне форума Ответить с цитированием
Старый 04.10.2016, 15:28   #16
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Параметры нигде не передаю
А (.*) это что? /seriesqwe или /series/qwe тоже попадет что ли?
Ну и параметры могут внезапно и понадобиться, для фильтров, поиска и т.п., проще сразу нормально писать. И parse_url($_SERVER['REQUEST_URI'])['path'] понятнее, чем какие-то substr и регекспы
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2016, 15:35   #17
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Да, вы правы.
Глюки в конце рабочего дня у меня... в голове начинаются.

Только он всё равно вернёт мне слеш в пути, и нужно будет делать обрезание) или пользоваться substr.
Artsiom вне форума Ответить с цитированием
Старый 04.10.2016, 16:40   #18
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Всё. Написал. Правда жутковато, но за то работает.
PHP код:
<div>
  <ul class="nav nav-tabs" role="tablist" style="margin: 0px 0px 0px 10px;">
    <?php
        $items 
= [
            [
'name' => 'Главная страница',      'href' => 'series'],
            [
'name' => 'Серии',                 'href' => 'schange'],
            [
'name' => 'Утверждающие органы',   'href' => 'appauthority'],
            [
'name' => 'Изменения в выпуске',   'href' => 'productchange'],
            [
'name' => 'Разработчик',           'href' => 'developer'],
            [
'name' => 'Сотрудник',             'href' => 'employees'],
            [
'name' => 'Выпуски',               'href' => 'edition'],
            [
'name' => 'Статусы',               'href' => 'status'],
            [
'name' => 'Пользователи',          'href' => 'users'],
            [
'name' => 'Выдача на руки',        'href' => 'receipt'],
                 ];
        
            
$SERVER parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
            
$pos strpos(substr($SERVER1), "/" );
            
$pos = ($pos == false strlen(substr($SERVER1)) : strpos(substr($SERVER1), "/" ));
            
$pos substr($SERVER1$pos);

        foreach(
$items as $item)
            {
                
$main_menu[] =
                    
'<li ' .(
                        (
$item['href'] == $pos) ? 'class="active"' ''). '>'.
                        
'<a href="' .$item['href']. '">' .$item['name']. '</a>'.
                    
'</li>';
            }

            foreach (
$main_menu as $_menu)
                echo 
$_menu;
        
?>
  </ul>
</div>
Artsiom вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
echo $num; ненужные для вывода символы не выводить на странице, использовать replace nikolokaputik80 PHP 6 29.03.2016 13:24
Парсер для поиска инфы на странице. dumaser79 PHP 0 13.06.2015 22:29
2 отчета на одной странице вывода В.В.С. Microsoft Office Access 1 05.03.2012 17:18
макрос вывода данных в итоговую таблицу maragva Microsoft Office Excel 3 10.11.2010 18:16
Сохранение инфы. IVANSour БД в Delphi 2 23.01.2009 21:09