Я пытаюсь связать свой ввод 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, он указывает, что ничего не найдено.
Заранее спасибо. Если мой вопрос дублирован или плох, пожалуйста, присылайте отзывы.
Ваш код 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));
Последняя версия 4.0 select2 работает с тегами выбора и больше не используется с тегами ввода (либо в текстовом, либо в скрытом).
Кажется, вы используете эту версию, поэтому вы должны соответствующим образом улучшить свой код.