Customer textfield with autocomplete from databasePHP и JQuery - Создать два различные текстовое поле с автозаполнением, имеющими различные списками данных, извлекаемых из базы данных
мне удалось создать один текстовое поле клиента с автозаполнением для отображения клиентов, которые начинаются в тексте набираясь.
index.php для одного текстового поля
<meta charset="utf-8">
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(function() {
$("#customer").autocomplete({
source: "../phpfiles/search.php",
});
});
</script>
<div class="ui-widget">
<!-- action='./../customer_report_request' -->
<form id="customer_report_request" name="customer_report_request" method="post">
<table>
<tr>
<th colspan='2'>Search Customer</th>
</tr>
<tr>
<td>
<label>Customer: </label>
<input name="customer" id="customer" value='' required>
</td>
<td>
<label>Submit: </label>
<input value="Send" name="send_customer_request" type="submit" id="send_customer_request">
</td>
</tr>
</table>
</form>
</div>
<?php
//Display the list of customer details
if(isset($_POST['send_customer_request']))
{
include 'db.php'; //connection
$query = "SELECT * FROM customer WHERE Company_Name = '".$_POST['customer']."'";
$customer_result = $db->query($query);
$count_customer = $customer_result->num_rows;
if($count_customer>0)
{
echo"<div>";
echo "<table>";
echo"<tr>";
echo"<th>Company_Name</th>";
echo"<th>VAT_Registration</th>";
echo"<th>Contact_First_Name</th>";
echo"<th>Contact_Last_Name</th>";
echo"<th>Email</th>";
echo"</tr>";
while ($row = $customer_result->fetch_assoc())
{
echo"<tr>";
echo"<td>".$row['Company_Name']."</td>";
echo"<td>".$row['VAT_Registration']."</td>";
echo"<td>".$row['Contact_First_Name']."</td>";
echo"<td>".$row['Contact_Last_Name']."</td>";
echo"<td>".$row['Email']."</td>";
echo"</tr>";
}
echo "</table>";
echo"</div>";
}
$db->close();
}
?>
search.php для одного текстового поля
<?php
$dbHost = 'localhost';
$dbUsername = 'bobo';
$dbPassword = 'rodnik';
$dbName = 'training';
//connect with the database
$db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
//get search term
$searchTerm = $_GET['term'];
//get matched data from customer table
$query = $db->query("SELECT * FROM customer WHERE Company_Name LIKE '".$searchTerm."%' ORDER BY Company_Name ASC"); //Starts with
while ($row = $query->fetch_assoc()) {
$data[] = $row['Company_Name'];
}
//return json data
echo json_encode($data);
?>
Проблема заключается в том, я хочу использовать один файл поиск PHP для удовлетворения других запросы. Например:
- Если слово набирается в Контактной текстовое поле, запрос будет «SELECT * FROM Контакт ....»
- Если слово набирается в текстовом поле клиента, запрос будет «ВЫБРАТЬ * ОТ клиента ....»
И index.php, и search.php были изменены для этого.
Модифицированная часть в index.php
Переменная JQuery, был определен имя_компонент. При изменении из файла index.php клиент texfield отправит переменную в файл search.php с использованием метода POST, чтобы его можно было идентифицировать и использовать для запросов.
Текстовое поле контакта может быть либо в том же виде в файле index.php, либо в другом файле php.
<script>
$(function() {
$("#customer").autocomplete({
var component_name= "customer";
source: "../phpfiles/search.php",
minLength: 1,
change: function(event, ui)
{
$.post("../phpfiles/search.php", data{post_data: component_name});
}
});
});
</script>
Модифицированный search.php
<?php
$dbHost = 'localhost';
$dbUsername = 'bobo';
$dbPassword = 'rodnik';
$dbName = 'training';
//connect with the database
$db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
//get search term
$searchTerm = $_GET['term'];
//get matched data from skills table
$query="";
if($_POST['post_data']=="customer")
{
$query = $db->query("SELECT * FROM customer WHERE Company_Name LIKE '".$searchTerm."%' ORDER BY Company_Name ASC"); //Starts with
while ($row = $query->fetch_assoc())
{
$data[] = $row['Company_Name'];
}
//return json data
echo json_encode($data);
}
?>
Может кто-нибудь помочь мне достичь этого?
Я использовал эти ссылки для Jquery-Ui и Jquery API частей:
- api.jquery.com
- jqueryui.com
Добро пожаловать в Переполнение стека. Используете ли вы это при редактировании результата поиска на вашем index.php? Это немного запутывает то, как вы его представили. Я бы использовал селектор классов для выбора обоих текстовых полей. Затем в вашем «источнике» вы можете определить, какое поле используется и выполнить поиск на основе этого. – Twisty