Предложение по вводу: получить идентификатор вместо значения и передать идентификатор с URL-адресом

У меня есть код PHP и Javascript, который я использую для своей функции поиска по типу, и он работает нормально. Но если вы посмотрите на код ниже, я передаю значение поиска, как я могу получить идентификатор и перейти к URL-адресу формы?

HTML

<form method = "get" class = "form-inline customers" autocomplete = "off" action = "/customers/<?php echo id; ?> ">       
<input class = "customers" id = "customers" type = "text" name = "customers">
<button type = "submit" title = "Search Customers"></button>
</form>

Javascript

    <script>
    $( document ).ready(function() {
    $('input.customers').typeahead({
    source: function (query, process) {
var countrycode = '<?php echo $agencyid; ?>';
    return $.get('fetch_customers.php', { query: query, cc: countrycode }, function (data) {
    data = $.parseJSON(data);
    return process(data);
    });
    },
    });
    });
    </script>

PHP

$countrycode1 = $_GET['cc'];
 $sql = "SELECT
       first_name,
       last_name,
       id,
       status,
       agency_id
       FROM customers
       WHERE (agency_id = '$countrycode1') AND first_name LIKE '%".$_GET['query']."%' LIMIT 20";
   $resultset = mysqli_query($conn, $sql) or die("database error:". 
   mysqli_error($conn));
   $json = array();
   while( $rowscity = mysqli_fetch_assoc($resultset) ) {
   $json[] = $rowscity["first_name"];
   $json[] = $rowscity["id"];
    }
   $output = json_encode($json);
   echo $output;
   mysqli_close($conn);
    ?>

Вы хотите передать идентификатор, который возвращается из php-файла, в ваш запрос $.get? Если да, то хотите ли вы, чтобы этот возвращенный идентификатор был установлен в вашем действии формы, например customer/returnedID ?

Abdulrehman Sheikh 09.04.2019 10:29

Да, точно. Мне нужно вернуть client/returnedID. На данный момент возвращается клиент/имя+имя

Sudha 09.04.2019 10:30

Вы имеете в виду, что ваш PHP-файл возвращает имя + имя вместо идентификатора?

Abdulrehman Sheikh 09.04.2019 10:31

Да, это так. Файл PHP возвращает имя + имя. Но он должен вернуть идентификатор.

Sudha 09.04.2019 10:34

Позвольте мне протестировать ваш код на моем локальном хосте. Ваш код кажется хорошим, проверьте лемме

Abdulrehman Sheikh 09.04.2019 10:36

Большое спасибо за ваше время.

Sudha 09.04.2019 10:37

@Абдул Удачи? :)

Sudha 09.04.2019 10:53

Подождите, у меня был обеденный перерыв.. Только начинаю.

Abdulrehman Sheikh 09.04.2019 11:01

Эй, нет проблем. :-)

Sudha 09.04.2019 11:04

Прежде всего, ваша ошибка в вашем запросе. Ваш запрос вернет вам 20 записей, но вам нужно вернуть только один идентификатор для установки в действии формы.

Abdulrehman Sheikh 09.04.2019 11:32

Также сделайте это while( $rowscity = mysqli_fetch_assoc($resultset)) { $json[]['first_name'] = $rowscity["first_name"]; $json[]['id'] = $rowscity["id"]; }

Abdulrehman Sheikh 09.04.2019 11:33

И нужно ли вносить какие-либо изменения в действие формы?

Sudha 09.04.2019 11:40

Нет, вам не нужно делать какие-либо изменения в вашей форме. Позвольте мне изменить ваш php-скрипт и отправить вам ответ

Abdulrehman Sheikh 09.04.2019 11:42

Я думаю, вам не нужно first_name для этой цели, верно?

Abdulrehman Sheikh 09.04.2019 11:44

Вам нужен только идентификатор из php-скрипта, чтобы изменить действие формы, верно?

Abdulrehman Sheikh 09.04.2019 11:44

Я только что попытался изменить сценарий, как вы сказали. Но предполагаю, что это не работает. Дай-ка еще раз проверю.

Sudha 09.04.2019 11:44

Сценарий заключается в том, что есть текстовое поле поиска, где пользователи заполняют имя, и оно должно быть автозаполнено через ajax. И когда я отправляю форму, она должна возвращать идентификатор first_name.

Sudha 09.04.2019 11:46

да, мне нужно передать только идентификатор с действием формы

Sudha 09.04.2019 11:47
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
18
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш PHP-скрипт:

<?php

$countrycode1 = $_GET['cc'];
$sql = "SELECT
       first_name,
       last_name,
       id,
       status,
       agency_id
       FROM customers
       WHERE (agency_id = '" . $countrycode1 . "') AND first_name LIKE '%" . $_GET['query'] . "%' LIMIT 1";
$resultset = mysqli_query($conn, $sql) or die("database error:" . mysqli_error($conn));
$json = array();
while ($rowscity = mysqli_fetch_assoc($resultset)) {
    echo $rowscity["id"]; exit; 
}
?>

Ваш сценарий может быть таким:

<script>
    $(document).ready(function () {
        $('input.customers').typeahead({
            source: function (query, process) {
                var countrycode = '<?php echo $agencyid; ?>';
                $.get('fetch_customers.php', {query: query, cc: countrycode}, function (data) {
                    $('form').attr('action', '/customers/' + data); 
                });
            },
        });
    });
</script>

Теперь автозаполнение не работает. Но когда я ввожу имя и отправляю форму, она правильно перенаправляется.

Sudha 09.04.2019 12:05

Для автозаполнения можно сделать еще один скрипт отдельно

Abdulrehman Sheikh 09.04.2019 12:07

В противном случае вы также можете управлять в этом скрипте, используя переменную, к которой вы можете применить условие if () для фильтрации записи, в основном проблема была с вашим запросом. Теперь вы можете применить свою собственную логику

Abdulrehman Sheikh 09.04.2019 12:09

ооо ок. Немного запутался, дай мне проверить.

Sudha 09.04.2019 12:09

В моем случае это не сработало, так как не работает основное автозаполнение. В любом случае получил изрядное количество идеи о том, как подойти. Спасибо

Sudha 09.04.2019 12:14

Вы можете просто написать еще один скрипт для автозаполнения... Это было бы очень просто для вас.

Abdulrehman Sheikh 09.04.2019 12:15

Я не очень хорошо разбираюсь в Ajax/Javascript. Я не уверен, если я сделаю еще один скрипт для автозаполнения, то как я буду интегрировать ваш скрипт и мой скрипт. Позвольте мне проверить, иначе нужно найти какой-то другой скрипт для того же самого.

Sudha 09.04.2019 12:21

Мне нужна небольшая услуга. В JS я получаю $('#selectuser_id').val(ui.item.value); // сохранить выбранный идентификатор для ввода, а в ответ значение будет сохранено в текстовом поле. <input type='text' id='selectuser_id' />. Есть ли способ выбрать значение текстового поля в php?

Sudha 09.04.2019 13:13

Да, вы можете выбрать значение в PHP, используя другой запрос ajax. Просто отправьте запрос ajax и установите это значение в сеансе, после чего вы сможете получить его на той же странице, а также в файле php.

Abdulrehman Sheikh 09.04.2019 13:28

Если вы хотите изучить управление кодом, используя различные условия, или хотите стать экспертом в ajax. Я начал занятия для начинающих, чтобы помочь им стать героем от нуля до PHP и jQuery.

Abdulrehman Sheikh 09.04.2019 13:29

Другие вопросы по теме