Здравствуйте, есть select HTML: <select name="names" id="names" class="form-control" > <option value="Системный блок">Системный блок</option> <option value="Монитор">Монитор</option> <option value="Принтер">Принтер</option> </select> как переделать чтобы запрос выполнял по условии??? PHP: <?php $dbHost = 'localhost'; $dbUsername = 'root'; $dbPassword = ''; $dbName = 'inver'; $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName); $searchTerm = $_GET['term']; //Если выбран СИСТЕМНЫЙ БЛОК $query = $db->query("SELECT name_comp FROM comp WHERE inv_comp LIKE '".$searchTerm."%'"); while ($row = $query->fetch_assoc()) { $data[] = $row['name_comp'] ; } //Если выбран МОНИТОР $query = $db->query("SELECT name_mon FROM mon WHERE inv_mon LIKE '".$searchTerm."%'"); while ($row = $query->fetch_assoc()) { $data[] = $row['name_mon']; } //Если выбран ПРИНТЕР $query = $db->query("SELECT name_print FROM printer WHERE inv_print LIKE '".$searchTerm."%'"); while ($row = $query->fetch_assoc()) { $data[] = $row['name_print']; } echo json_encode($data); ?>
PHP: switch($_GET['names'] { case 'Системный блок': //Если выбран СИСТЕМНЫЙ БЛОК break; case 'Монитор': //Если выбран МОНИТОР break; case 'Принтер': //Если выбран ПРИНТЕР break; } Но лучше value`s обозначить цифрами HTML: <select name="names" id="names" class="form-control" > <option value="1">Системный блок</option> <option value="2">Монитор</option> <option value="3">Принтер</option> </select> Да и сам запрос небезопасный
Скорее речь об оптимизации самого запроса в БД. Можно обойтись вообще без условий. Ну на крайняк if(isset(...)){...}
@Maputo, спасибо. HTML: <div class="col-xs-4"> <select name="names" id="names" class="form-control" > <option value="Системный блок">Системный блок</option> <option value="Монитор">Монитор</option> <option value="Принтер">Принтер</option> </select> </div> <div class="col-xs-4"> <label>Модель</label> <select name="model" id="model" class="model" > <option></option> </select> </div> <div class="col-xs-3"> <label>Инвентарный номер</label> <select name="inv" id="inv" class="inv"> <option selected="selected"></option> </select> </div> <script type="text/javascript" language="javascript" > $(document).ready(function(){ $( "#inv" ).autocomplete({ source: 'inv.php', autoFocus: true }); $( "#inv" ).on( "autocompleteselect", function( event, ui ) { //alert(ui.item.value); value = ui.item.value.split(","); name = value[0]; inv = value[1]; $("#model").val(name) $("#inv").val(inv); event.preventDefault(); } ); }); </script> что-то $_GET['names'] значение не хочет брать ((, пишет Null inv.php код: PHP: <?php $dbHost = 'localhost'; $dbUsername = 'root'; $dbPassword = ''; $dbName = 'inver'; $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName); $searchTerm = $_GET['term']; switch($_GET['names']) { case 'Системный блок': //Если выбран СИСТЕМНЫЙ БЛОК $query = $db->query("SELECT * FROM comp WHERE inv_comp LIKE '".$searchTerm."%'"); while ($row = $query->fetch_assoc()) { $data[] = $row['name_comp'] . ',' . $row['inv_comp']; } break; case 'Монитор': $query = $db->query("SELECT * FROM monitor WHERE inv_mon LIKE '".$searchTerm."%'"); while ($row = $query->fetch_assoc()) { $data[] = $row['name_mon'] . ',' . $row['inv_mon']; } break; case 'Принтер': //Если выбран ПРИНТЕР $query = $db->query("SELECT * FROM printer WHERE inv_pr LIKE '".$searchTerm."%'"); while ($row = $query->fetch_assoc()) { $data[] = $row['name_pr'] . ',' . $row['inv_pr']; } break; } echo json_encode($data); ?>
Просто в приведенном коде нет отправки значения из списка методом GET. У вас пустой запрос к скрипту Код (Javascript): source: 'inv.php', Конечно можно туда дописать данные, но их для начала надо извлечь из списка. В автокомплите в sourse обычно ставят безымянную функцию с деталями запроса и всеми передаваемыми данными Вот пример: http://jquery.page2page.ru/index.php5/Автозаполнение