За последние 24 часа нас посетили 52608 программистов и 1802 робота. Сейчас ищут 830 программистов ...

Создании при старте стартовой страницы переменных

Тема в разделе "PHP для новичков", создана пользователем Delphin911, 23 дек 2015.

  1. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Подскажите можно ли такое реализовать, Если да, то как?
    Сайт работает некоторой БД на MS SQL. Много форм строится путем отрисовки стандартных одинаковых запросов.
    Так вот можно ли при старте первой страницы эти запросы выполнить и передать в какие-нибудь переменные (массивы скажем), а потом работать с этими массивами, а не делать каждый раз запросы к БД.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    можно. называется кеш.
     
  3. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    А как это делается? Как запускается при старте первой страницы выгрузка в эти переменные и как они потом передаются между формами/файлами.
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Delphin911, без обид, но ты же программист. давай подумай какой должен быть алгоритм у решения данной задачи. вот просто как ты себе её представляешь.
     
  5. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Да в том то и дело, что не программист. Я сисадмин. PowerShell, VBScript. Работа с AD и файловыми ресурсами.
    То что я когда-то давно написал сайтик себе в помощь для хранения данных об этих ресурсах, не говорит о том, что я программист. Но именно этот сайтик дает мне сейчас время разбираться с новыми вещами.
    Скажем при работе с asp страничками я прикреплял файлик, в котором были переменные, которые работали на всех страничках, к которым прикреплен этот файл. Как же это работает в PHP я пока не знаю.
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ты стал программистом когда написал сайтик ибо это программа. ты стал программистом когда стал системным администратором - те конфигурации которые ты создаешь для конечных продуктов влияют на работу этих продуктов так же как скрипт выполняется пхп-машиной или любым другим интерпретатором. ты пользуешься пш и вбс а это тоже программирование в достаточно явном смысле этого термина.
     
  7. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Но принцип то работы разный. Вот я говорю например, что в asp страничках я прикрепляю файлик в котором все переменные, функции, процедуры и т.п. И они едины для всех страниц сайта, куда я пропишу этот файлик. В PHP как такое сделать я не знаю. Поэтому и спрашиваю.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    результат работы запроса у вс наверное массив. этот массив можно например сериализовать serialize() и сохранить в файл file_put_contents().
    при повторных вызовах формы, проверять существование этого файл file_exists() и если он есть то считывать из него file_get_contents() и превращать в массив данные unserialize().
    еще можно проверять время создания файла и сравнивать его с текущим.и реализовтаь время жизни кеша. например час. чтоб потом он абновлялся.
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    или сразу экспортировать как массив пхп чтоб потом когда просто подключаешь файл - пхп мог кэшировать опкод.
     
  10. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    ОК. Спасибо. Буду разбираться.
     
  11. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    можно и так.
    но в данном случае, нужно хранить данные. опкода там будет - кот наплакал.
    хранить строкой более универсально, ибо можно хранить хоть в файле, хоть в бд, хоть в мемкеше, хоть в любом кей-валуе хранилище.
    дело автора.
     
  12. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Народ! А почему может не работать конструкция
    Код (PHP):
    1. <?php
    2. include $_SERVER['DOCUMENT_ROOT']."/Action.php";
    3. ?>
    С начала я делал проще, т.к. файл лежит в одной директории с файлами сайта.
    Код (PHP):
    1. <?php
    2. include "Action.php";
    3. ?>
    И так и так не работает. Обработчик php файлов включен на iis 8.5 сервере. Но вместо запуска файла просто на страничке печатается его содержимое.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Delphin911 веб сервер не настроен распознавать этот файл как PHP
     
  14. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    В настройках iis прописано в HandlerMappings *.php и *.html обрабатывать php-cgi.exe. К тому же другая страничка, которая открывается на этом сайте обрабатывает конструкцию типа <?php ?>. Стартовая страничка у меня html, но я ее и в PHP переделывал, все равно не обрабатывается.
    P.S.Соответственно т.к. у меня iis на винде никаких файликов .htaccess нет.

    P.P.S. Для проверки в конце странички стартовой вставил
    Код (PHP):
    1. <?php
    2. print "<a>ttt</a>";
    3. ?>
    Отдично отрабатывает.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
     
  15. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    По какой инструкции настраиваешь IIS? Может просто NGINX поставить? Или вообще сборку open-server.ru
     
  16. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Ну зачем чего-то придумывать, когда уже есть iis. Инструкция http://php.ru/manual/install.windows.iis7.html вот эта например. Не по ней конкретно настраивал, но все что читал, все одинаковые. Да и работает php и на этой странице и на других.
     
  17. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    чаще по nginx и apache используют, по этому больше людей могут подсказать
     
  18. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Да это я понял. :) Но переходить на Apache. Да и кто же мне даст юниксовый сервер под это? Не разворачивать же его на какой-нибудь продуктивной системе. Вроде Apache на винде можно развернуть. Но ИМХО это еще большее извращение.

    Добавлено спустя 35 минут 13 секунд:
    Что-то мне кажется, что конструкция с include не совсем то что надо. Собственно что имею я.
    Код (PHP):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <link rel="stylesheet" type="text/css" href="Design/IT_OPER.CSS">
    6. <link rel="stylesheet" type="text/css" href="Design/Menu.CSS">
    7. <title></title>
    8. <script type="text/javascript">
    9.  
    10. function MClick(MNumer)
    11. {
    12.     switch (MNumer)
    13.     {
    14.         case 21: document.getElementById("frData").src = 'NR_NA.html'; break;
    15.         case 34: document.getElementById("frData").src = 'NA_CorpCentr.php';  break;
    16.     }
    17. }
    18.  
    19. $(function() {
    20.   if ($.browser.msie && $.browser.version.substr(0,1)<7)
    21.   {
    22.         $('li').has('ul').mouseover(function(){
    23.                $(this).children('ul').show();
    24.                 }).mouseout(function(){
    25.                 $(this).children('ul').hide();
    26.                 })
    27.   }
    28. });
    29. </script>
    30. </head>
    31. <body>
    32. <ul id="menu">
    33. <li>
    34.         <a>Учетные записи</a>
    35.         <ul>
    36.             <li><a onclick="MClick()">УЗ1</a></li>
    37.             <li><a onclick="MClick()">УЗ1</a></li>
    38.         </ul>
    39.     </li>
    40.     <li>
    41.         <a>Файловые ресурсы</a>
    42.         <ul>
    43.             <li><a onclick="MClick(21)">ФР1</a></li>
    44.             <li><a onclick="MClick()">ФР2</a></li>
    45.         </ul>
    46.     </li>
    47.     <li>
    48.         <a>Запросы</a>
    49.         <ul>
    50.             <li><a onclick="MClick()">З1</a></li>
    51.             <li><a onclick="MClick()">З2</a></li>
    52.         </ul>
    53.     </li>
    54. </ul>
    55. <div id="dFrame" style="height:100%">
    56. <iframe name="frData" id="frData" width="100%" height="100%" scrolling="auto" frameborder="0" style="border-width:5px;border-color:#00F;"></iframe> 
    57. </div>
    58. <script type="text/javascript">
    59.  var H = document.documentElement.clientHeight;
    60.  var dFrame = document.getElementById("dFrame");
    61.  dFrame.style.height = H - 75 + 'px';
    62. </script>
    63. </body>
    64. </html>
    Вот такая стартовая страничка с менюшкой и iframe, в который в зависимости от нажатия пункта меню будет класца определенная страничка.
    И вот я навая PHP страничку, которая должна выполниться при старте той странички стартовой и прописать в файлик массивы с полученными из запросов к MS SQL базе данными.
    Код (PHP):
    1. <?php
    2. error_reporting( E_ALL );
    3. $server = "10.X.X.X,1433\MSSQLSERVER";
    4. $connectionInfo = array( "Database"=>"Users");
    5. // Connect to MSSQL
    6. $conn = sqlsrv_connect($server, $connectionInfo);
    7. if (!$conn) 
    8. {
    9.     echo "Соединение не удалось, ошибка:";
    10.     die( print_r( sqlsrv_errors(), true));
    11. }
    12. else
    13. {
    14.     echo ("OK");
    15.     $query = "SELECT CDate FROM QQQ order by Sort DESC";
    16.     $res = sqlsrv_query($conn, $query);
    17.     $arr_dates_res = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC);
    18.     sqlsrv_free_stmt($res);
    19.     $query = "SELECT DISTINCT Server FROM QQQ where QQQQQQQQ order by Server";
    20.     $res = sqlsrv_query($conn, $query);
    21.     $arr_servers = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC);
    22.     sqlsrv_free_stmt($res);
    23.     $query = "SELECT DISTINCT Vol FROM QQQ WHERE QQQQQQQQQ";
    24.     $res = sqlsrv_query($conn, $query);
    25.     $arr_vols_0 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC);
    26.     sqlsrv_free_stmt($res);
    27.     $query = "SELECT DISTINCT Vol FROM QQQ WHERE QQQQQQQQQ";
    28.     $res = sqlsrv_query($conn, $query);
    29.     $arr_vols_1 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC);
    30.     sqlsrv_free_stmt($res);
    31.     $query = "SELECT DISTINCT Vol FROM QQQ WHERE QQQQQQQQQ";
    32.     $res = sqlsrv_query($conn, $query);
    33.     $arr_vols_2 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC);
    34.     sqlsrv_free_stmt($res);
    35.     $dates_res = serialize($arr_dates_res);
    36.     file_put_contents('C:\temp\variabls.txt', $dates_res);
    37.     $servers = serialize($arr_servers);
    38.     file_put_contents('C:\temp\variabls.txt', $servers);
    39.     $vols_0 = serialize($arr_vols_0);
    40.     file_put_contents('C:\temp\variabls.txt', $vols_0);
    41.     $vols_1 = serialize($arr_vols_1);
    42.     file_put_contents('C:\temp\variabls.txt', $vols_1);
    43.     $vols_2 = serialize($arr_vols_2);
    44.     file_put_contents('C:\temp\variabls.txt', $vols_2);
    45. }
    46. ?>
    IP-шник и SQL запросы я потер, да и не в них суть они работают.
    Ну и в общем идея в том, чтобы птом эти массивы из файлика достать и использовать без обращения к SQL.
    Так вот когда я вставляю в первый файлик стартовый код
    Код (PHP):
    1. <?php
    2. $Path = "Action.php";
    3. include($Path);
    4. ?>
    То вместо выполнения действий с PHP файла просто выводится его текст перед менюшкой.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
     
  19. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Народ, а возможно надо эти процедуры выполнить вставив код в первую страницу, а в дальнейшем так же вытаскивать массивы из файла?
    Да и еще народ, может в php скрипте у меня ошибки? Гляньте натренированным взглядом. Например процедуру
    Код (PHP):
    1. $arr_vols_1 = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); 
    я практически придумал. Есть типа mysql_fetch_array, а для sqlsrv я не нашел в инете примеров.
     
  20. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  21. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Спасибо. Тоже уже нашел неплохую страничку с функциями PHP.
    http://htmlweb.ru/php/function/
    Я правильно теперь понял, что нельзя взять массив и присвоить ему результат SQL запроса (как я наивно сначала подумал). Надо построчно вносить в массив результ запроса. Так?
     
  22. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    функция sqlsrv_fetch_array вернет массив, зачем его присваивать массиву?
     
  23. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    я тебе дал ссылку на официальную документацию
     
  24. Delphin911

    Delphin911 Активный пользователь

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Да, спасибо.