За последние 24 часа нас посетили 20286 программистов и 1008 роботов. Сейчас ищут 397 программистов ...

Настроить автозаполнение

Тема в разделе "PHP и базы данных", создана пользователем Новичок123, 30 апр 2022.

Метки:
  1. Новичок123

    Новичок123 Новичок

    С нами с:
    30 апр 2022
    Сообщения:
    5
    Симпатии:
    0
    Всем доброго времени суток! Очень нужна помощь! Написал поиск по адресу себе на сайт, всего 2 формы: улица, дом. Адреска залита одной таблицей MySQL. Добавил 2 скрипта автозаполнения. Что мне нужно сделать, что бы после ввода улицы, второе автозаполнение показывало дома на этой улице, а не все что есть в столбце. Подскажите только направление: связать скрипты, разделить таблицу или что-то другое.
     
  2. Новичок123

    Новичок123 Новичок

    С нами с:
    30 апр 2022
    Сообщения:
    5
    Симпатии:
    0
    Код (Text):
    1.  
    2. $searchTerm2 = $_GET['term'];
    3.  
    4. $query2 = $db->query("SELECT DISTINCT Dom FROM adress WHERE Dom LIKE '".$searchTerm2."%' LIMIT 10");
    5.  
    6. $skillData2 = array();
    7. if($query2->num_rows > 0){
    8.  while($row2 = $query2->fetch_assoc()){
    9.       $data2['value'] = $row2['Dom'];
    10.         array_push($skillData2, $data2);
    11. }
    12. }
    13.  
    14. echo json_encode($skillData2);
    Вот скрипт для автозаполнения, выведен в отдельный файл. Такой же для улицы. Пытался сюда добавить функцию через Include из основного запроса как условие, но не хватает знаний. Пожалуйста, подскажите направление.
     
  3. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Опиши структуру таблиц. Чтобы получить информацию, её надо иметь. Функцию из запроса применить можно, но что она выбирает? Тебе же нужно по условию. Короче, одного скрипта мало. Надо и другой сюда выложить,чтобы картинка полной была.
     
  4. Новичок123

    Новичок123 Новичок

    С нами с:
    30 апр 2022
    Сообщения:
    5
    Симпатии:
    0
    Это скрипт основного запроса в базу.

    Код (Text):
    1.  if(isset($_POST['submit'])){
    2.     $search = $_POST['search'];
    3.     $search2 = $_POST['search2'];
    4.     $query = mysqli_query($connect, "SELECT * FROM `adress` WHERE `Stret` LIKE '%$search%' AND `Dom` LIKE '$search2'");
    5.        
    6.   while($row = mysqli_fetch_assoc($query)) echo
    7.      ("<a href='https://................'>"."<img src='". $row['prov']. "' alt='' />"),
    Это скрипт автозаполнения.

    Код (Text):
    1. <script>
    2.      $(function() {
    3.       $("#search2").autocomplete({  source: "search2.php"});
    4.        });
    5.     </script>
    Таблица одна, вида: Stret; Dom; prov;
     
  5. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Взять скрипт основного запроса за основу и переделать строку запроса так, чтобы
    "SELECT * FROM `adress` WHERE `Stret` LIKE '%$search%'.
    Тогда результат работы конструкции $row = mysqli_fetch_assoc($query) будет содержать все дома запрошенной улицы.
     
  6. Новичок123

    Новичок123 Новичок

    С нами с:
    30 апр 2022
    Сообщения:
    5
    Симпатии:
    0
    Не, мне не нужно что бы в основном запросе скрипт выдавал все дома. Вопрос то в автозаполнении. Нужно что бы автозаполнение выдавало дома только той улицы, что ввели в первой форме поиска. В первом сообщении я все описал.
     
  7. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Так и будет если запрос будет ограничен условием по одной улице через WHERE.
     
  8. Новичок123

    Новичок123 Новичок

    С нами с:
    30 апр 2022
    Сообщения:
    5
    Симпатии:
    0
    Несколько дней проб и попыток, но у меня так и не получилось реализовать, что вы предложили. Смысл я понял, сделал
    Код (Text):
    1. $query2 = $db->query("SELECT DISTINCT Dom FROM adress WHERE Stret LIKE '".$searchTerm2."%' LIMIT 15");
    . Он действительно выдает дома по введеной во вторую форму улице. Но мне нужно что бы я вводил улицу в первую форму, а при вводе первой цифры дома во второй форме автозаполнение выдавало варианты домов на этой улице. Я так понял, мне нужно $searchTerm из первого файла включить во второй файл.
     
  9. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Добавь в условие дом : .......AND `Dom` LIKE '$search2%' "