За последние 24 часа нас посетили 38026 программистов и 1811 роботов. Сейчас ищут 898 программистов ...

запрос по условии select

Тема в разделе "PHP для новичков", создана пользователем Daulet, 10 июл 2017.

  1. Daulet

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

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    Здравствуйте, есть select

    HTML:
    1. <select name="names" id="names" class="form-control" >                      
    2.          <option value="Системный блок">Системный блок</option>
    3.          <option value="Монитор">Монитор</option>
    4.          <option value="Принтер">Принтер</option>
    5.  </select>
    как переделать чтобы запрос выполнял по условии???

    PHP:
    1. <?php  
    2.     $dbHost = 'localhost';
    3.     $dbUsername = 'root';
    4.     $dbPassword = '';
    5.     $dbName = 'inver';
    6.     $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
    7.     $searchTerm = $_GET['term'];
    8. //Если выбран СИСТЕМНЫЙ БЛОК
    9.     $query = $db->query("SELECT name_comp FROM comp WHERE inv_comp LIKE '".$searchTerm."%'");
    10.     while ($row = $query->fetch_assoc()) {
    11.         $data[] = $row['name_comp'] ;
    12.     }
    13. //Если выбран МОНИТОР
    14.     $query = $db->query("SELECT name_mon FROM mon WHERE inv_mon LIKE '".$searchTerm."%'");
    15.     while ($row = $query->fetch_assoc()) {
    16.         $data[] = $row['name_mon'];
    17.     }
    18. //Если выбран ПРИНТЕР
    19.     $query = $db->query("SELECT name_print FROM printer WHERE inv_print LIKE '".$searchTerm."%'");
    20.     while ($row = $query->fetch_assoc()) {
    21.         $data[] = $row['name_print'];
    22.     }
    23.  
    24.     echo json_encode($data);
    25. ?>
     
  2. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    PHP:
    1. switch($_GET['names']
    2. {
    3.     case 'Системный блок':
    4.    //Если выбран СИСТЕМНЫЙ БЛОК
    5.     break;
    6.     case 'Монитор':
    7.    //Если выбран МОНИТОР
    8.     break;
    9.     case 'Принтер':
    10.    //Если выбран ПРИНТЕР
    11.     break;
    12. }
    Но лучше value`s обозначить цифрами
    HTML:
    1. <select name="names" id="names" class="form-control" >                    
    2.          <option value="1">Системный блок</option>
    3.          <option value="2">Монитор</option>
    4.          <option value="3">Принтер</option>
    Да и сам запрос небезопасный
     
    MouseZver нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    можно было и оптимизировать ( меньше кода )
    но и switch тоже дело.
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    покажи мне как ты хотел код оптимизировать через if else?
     
  5. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Скорее речь об оптимизации самого запроса в БД. Можно обойтись вообще без условий. Ну на крайняк if(isset(...)){...}
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    я хотел оптимизацию на стандарт условиях сделать ?
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
  8. Daulet

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

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    @Maputo, спасибо.

    HTML:
    1.  
    2. <div class="col-xs-4">
    3. <select name="names" id="names" class="form-control" >                
    4.          <option value="Системный блок">Системный блок</option>
    5.          <option value="Монитор">Монитор</option>
    6.          <option value="Принтер">Принтер</option>
    7. </div>
    8. <div class="col-xs-4">
    9.       <label>Модель</label>
    10.        <select name="model" id="model" class="model" >
    11.             <option></option>
    12.        </select>
    13. </div>
    14.  
    15. <div class="col-xs-3">
    16.     <label>Инвентарный номер</label>
    17.     <select name="inv" id="inv" class="inv">
    18.         <option selected="selected"></option>
    19.     </select>
    20. </div>
    21.  
    22. <script type="text/javascript" language="javascript" >
    23. $(document).ready(function(){
    24.         $( "#inv" ).autocomplete({
    25.             source: 'inv.php',      
    26.             autoFocus: true      
    27.         });
    28.             $( "#inv" ).on( "autocompleteselect", function( event, ui ) {
    29.             //alert(ui.item.value);
    30.             value = ui.item.value.split(",");
    31.             name = value[0];
    32.             inv = value[1];      
    33.             $("#model").val(name)
    34.             $("#inv").val(inv);      
    35.             event.preventDefault();
    36.             } );
    37.     });
    что-то $_GET['names'] значение не хочет брать ((, пишет Null
    inv.php код:

    PHP:
    1. <?php
    2.     $dbHost = 'localhost';
    3.     $dbUsername = 'root';
    4.     $dbPassword = '';
    5.     $dbName = 'inver';
    6.     $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
    7.     $searchTerm = $_GET['term'];
    8.  
    9.     switch($_GET['names'])
    10. {
    11.     case 'Системный блок':
    12.    //Если выбран СИСТЕМНЫЙ БЛОК
    13.    $query = $db->query("SELECT * FROM comp WHERE inv_comp LIKE '".$searchTerm."%'");
    14.                 while ($row = $query->fetch_assoc()) {
    15.                     $data[] = $row['name_comp'] . ',' . $row['inv_comp'];
    16.                 }
    17.     break;
    18.     case 'Монитор':
    19.    $query = $db->query("SELECT * FROM monitor WHERE inv_mon LIKE '".$searchTerm."%'");
    20.                 while ($row = $query->fetch_assoc()) {
    21.                     $data[] = $row['name_mon'] . ',' . $row['inv_mon'];
    22.                 }
    23.     break;
    24.     case 'Принтер':
    25.    //Если выбран ПРИНТЕР
    26.    $query = $db->query("SELECT * FROM printer WHERE inv_pr LIKE '".$searchTerm."%'");
    27.                 while ($row = $query->fetch_assoc()) {
    28.                     $data[] = $row['name_pr'] . ',' . $row['inv_pr'];
    29.                 }
    30.     break;
    31. }  
    32.     echo json_encode($data);
    33. ?>
     
  9. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Просто в приведенном коде нет отправки значения из списка методом GET. У вас пустой запрос к скрипту
    Код (Javascript):
    1. source: 'inv.php',
    Конечно можно туда дописать данные, но их для начала надо извлечь из списка.
    В автокомплите в sourse обычно ставят безымянную функцию с деталями запроса и всеми передаваемыми данными
    Вот пример:
    http://jquery.page2page.ru/index.php5/Автозаполнение