Как связать select2 и MySQL базы данных с переполнением стека

Я пытаюсь связать свой ввод select2 для получения результатов из базы данных mysql, используя соединение mysqli. Я попробовал несколько решений здесь, но пока не заставил его работать, вместо этого он продолжает говорить, что никаких результатов не найдено.

Последнее, что я пробовал, был код JavaScript от https://select2.github.io/examples.html. Я не уверен, что мне не подходит мой javascript или мой php файл.

Это мои коды, надеюсь, кто-то может указать мне, где необходимо изменить.

HTML

<div class="form-group">
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
<label class="control-label col-lg-3" for="Customer" id="Customer"><span style="color:red;">*</span>Customer:</label>
<div class="col-lg-9">
<input id="cCustomer" name="cCustomer" class="cCustomer form-control" type="hidden" value="" style="width: 100%" />
</div><!-- END col-lg-9  -->
</div><!-- END col-xs-12 col-sm-12 col-md-6 col-lg-6  -->
</div><!-- END .form-group  -->

Я включил

<link rel="stylesheet" href="//localhost/1System/select2/css/select2.min.css">
<link rel="stylesheet" href="//localhost/1System/select2/css/select2-bootstrap.min.css">
<script type="text/javascript" src="//localhost/1System/select2/js/select2.full.min.js"></script>

в моем <head></head>

JS

$(document).ready(function() {
$("#cCustomer").select2({
ajax: {
url: "../../autoComplete/autoAddQuotation1.php",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
page: params.page
};
},
processResults: function (data, page) {
// parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to
// alter the remote JSON data
return {
results: data.items
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
minimumInputLength: 1,
//templateResult: formatRepo, // omitted for brevity, see the source of this page
//templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
});
});

Наконец, мой PHP

<?php
include($_SERVER['DOCUMENT_ROOT']."/1System/php/connect.php");//calling connection file

$conn=dbConnect();
if (!$conn)
die("Couldn't connect to MySQL"); /*when server is down, the statement will be showed*/

$query = "SELECT c.customerID, c.name AS cname FROM customer c WHERE c.name LIKE '%".strtoupper($_GET['q'])."%' or '%".($_GET['q'])."%'";
$result = mysqli_query($conn, $query);
$numCustomer = mysqli_num_rows($result);

if($numCustomer != 0) {
while(row = mysqli_fetch_array($result)) {
$answer[] = array("id"=>$row['customerID'], "text"=>$row['cname']);
}
}else {
$answer[] = array("id"=>"0", "text"=>"No Results Found...");
}
echo json_encode($answer);
?>

Я использую mysqli для подключения к моей базе данных. Мое соединение работает для других страниц PHP.

$conn = mysqli_connect($host, $username, $password);

Если честно, я не знаю, как должен выглядеть PHP-файл? любой может указать мне хороший пример или правильное направление.

ПРОБЛЕМА:

Когда я нажимаю на вход в моем Chrome, он указывает, что ничего не найдено.введите описание изображения здесь

Заранее спасибо. Если мой вопрос дублирован или плох, пожалуйста, присылайте отзывы.

2

Решение

Ваш код JS select2 отлично сработал для меня.

Ниже приведена функция Doctrine, которую я использовал для создания ответа JSON.

Вы должны быть в состоянии приспособить это к своему коду mysql / php.

$q = strtolower($q);
$stmt = $this->getEntityManager()
->getConnection()
->prepare("SELECT s.id, s.suburb, s.state, s.postcode ". "FROM suburbs s ". "WHERE LOWER(s.suburb) LIKE '%" . $q . "%' ". "OR LOWER(s.state) LIKE '%" . $q . "%' ". "OR LOWER(s.postcode) LIKE '%" . $q . "%' ". "ORDER BY s.suburb, s.state");
$stmt->execute();
$result = $stmt->fetchAll();

$suburbs = array();
if (is_array($result)) {
foreach ($result as $row) {
$id = $row['id'];
$text = $row['suburb'] . ", " . $row['state'] . " " . $row['postcode'];
$suburbs[] = array('id' => $id, 'text' => $text);
}
}
return json_encode(array('items' => $suburbs));
0

Другие решения

Последняя версия 4.0 select2 работает с тегами выбора и больше не используется с тегами ввода (либо в текстовом, либо в скрытом).
Кажется, вы используете эту версию, поэтому вы должны соответствующим образом улучшить свой код.

0

По вопросам рекламы [email protected]