За последние 24 часа нас посетили 9087 программистов и 449 роботов. Сейчас ищут 129 программистов ...

Запрос в БД MS Access по выбранным параметрам

Тема в разделе "PHP для новичков", создана пользователем kretsman, 24 окт 2018.

  1. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    В общем сооружаю я долго долго костыли и казалось мне что должно все работать толково. В итоге встал я и совершенно не понимаю что дальше делать. очень прошу помочь.
    Как это должно работать: я должен в листбоксе выбрать значение, а потом передать это значение в переменную, после этого сделать запрос из базы по соответствию этому значению, вроде по моей логике все верно, но не работает. В чем косяк?

    PHP:
    1. <!doctype html>
    2. <html>
    3. <head>
    4.  
    5.  
    6. <?php include('inc_db.php');
    7. echo "<input type='text' class='iholi' id='test1' name='period' value='Введите период'>";
    8.  
    9. ?>
    10.  
    11. </head>
    12. <body>
    13. <p>Статус станции<br>
    14. <div class="orent">
    15.     <form action="<?=$_SERVER['PHP_SELF']?>" method="post" id="myForm">
    16. <select  name='lang' onchange="document.getElementById('myForm').submit()">
    17.     <option>Все</option>
    18.     <option>Годен</option>
    19.     <option>Ожид.ремонта</option>
    20.     <option>На заводе</option>
    21.     <option>Брак</option>
    22.     <option>Списан</option>
    23. </select>
    24. </form>
    25. </div>
    26.    
    27. <div class="article">  
    28. <?php
    29. if (isset($_POST['lang'])){
    30. $oper = $_POST['lang'];
    31. switch ($oper){
    32.     case '0': $lang='Все';
    33.     break;
    34.     case '1': $lang='Годен';
    35.     break;
    36.     case '2': $lang='Ожид.ремонта';
    37.     break;
    38.     case '3': $lang='На заводе';
    39.     break;
    40.     case '4': $lang='Брак';
    41.     break;
    42.     case '5': $lang='Списан';
    43.     break;}
    44.     echo $lang;
    45. }
    46. ?>
    47. </p>
    48.  
    49.  
    50. <?php
    51. // Создать текст запроса
    52. $query = "SELECT [ТипСУ], [Зав№СУ], [Дата Д-ж СУ], [Статус] FROM [7Учет неисправностей су] Where
    53. (([7Учет неисправностей су].[Дата Д-ж СУ]) between #01/01/2018# and #11/01/2018#)
    54. and (([7Учет неисправностей су].[Статус])= $lang )";
    55. // Подготовить запрос
    56. $result = odbc_prepare($connect,$query);
    57. // Выполнить запрос и вывести результаты
    58. odbc_execute($result);
    59. odbc_result_all($result, "BGCOLOR='#c0c0c0' border=1");
    60. // Обработка результатов закончена, освободить память odbc_free_result($result);
    61. // Закрыть соединение
    62. odbc_close($connect);
    63.         echo $select;
    64.     }
    65. ?>
    66. <form method="POST">
    67.     <input type="submit" name="nazvanie_knopki" value="Нажмите" />
    68. </form>
    69. </body>
    70. </html>
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
    Что приходит в переменную $_POST['lang'] ? если допустим я выбрал "брак"
     
  3. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    изначально не полностью понял вопроса. Получается изначально при проверке произошел ли выбор в lang приходит индекс выбранного значения, а уже потом передается в oper для case.
    Потому уже исходя из case присваевается lang тестовое значение соответствующее индексу выбора, но уже ручнопалочным способом)))
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
    Окей, и как по твоему 31 строка должна начать работать ?
     
  5. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    изначально не полностью понял вопроса. Получается изначально при проверке произошел ли выбор в lang приходит индекс выбранного значения, а уже потом передается в oper для case.
    Потому уже исходя из case присваевается lang тестовое значение соответствующее индексу выбора, но уже ручнопалочным способом)))
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
    уверен ?
     
  7. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    не уверен, не в чем не уверен. Поэтому и прошу помощи.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
    с чем помочь ? груши пришли, а ты сравниваешь их с овощами
     
  9. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Так-с, отвечу развернуто, чтобы полностью было ясно.
    В этом месте, о котором Вы говорите все работает (не думаю что это реализовано толково, но это работает), ошибки выдает такие:
    upload_2018-10-24_15-31-29.png
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
    у тебя switch не работает, почему ?
    --- Добавлено ---
    мне интересно когда до вас это дойдет
     
  11. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Как бы это не было странно switch работает
    Не работает запрост по переменной lang, хоть в ней и хранятся нужные данные
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
  13. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    вы запутались в переменных. в методе пост там не переменная $lang передается а именно индекс выбранного листбокаса под названием lang. А уже потом при свиче переменной $lang присваевается текстовое значение. Разобрался в чем была проблема, оказывается в запросе SELECT переменную надо брать в ковычки: ''. Теперь работает:
    upload_2018-10-24_15-59-8.png
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.692
    Симпатии:
    1.059
    Адрес:
    Лень
    пропиши в 30 строке
    PHP:
    1. print_r ( $oper = $_POST['lang'] );
    --- Добавлено ---
    выбери брак и результат сюда выпиши
     
  15. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    Для проверки я под листбоксом echo вывожу значение переменной $lang, под лисбоксом собственно и показывает выбор "брак".
    Правда еще надо рабратьс\я как сделать так чтобы выбор в листбоксе не обнулялся а оставался тем какой выбор и был сделан.
    upload_2018-10-24_16-4-15.png
     
  16. kretsman

    kretsman Новичок

    С нами с:
    7 сен 2018
    Сообщения:
    80
    Симпатии:
    0
    У меня разрыв шаблона, пост реально текст возвращает, не могу сам понять как этот костыль работает)))
     
  17. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.951
    Симпатии:
    731
    экспишечка, она такая классная мимими)))
     
  18. Sail

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

    С нами с:
    1 ноя 2016
    Сообщения:
    1.306
    Симпатии:
    292
    В базе поле "статус" в каком формате (число, или текст)?
    Но если в <option> добавить атрубут value, то будет возвращаться именно он.