У меня есть живой поиск номеров карт здоровья. Он связан с базой данных MySQL и по большей части работает … Вроде. Я сталкиваюсь с проблемой, когда определенные строки чисел, кажется, вызывают проблемы, такие как 12345689999 (мой ключ семь сломан). Кажется, он появляется, когда одни и те же символы используются несколько раз друг за другом. Тип данных в моей базе данных для HCN — текстовый. Мой код выглядит следующим образом:
HTML
<div class="container-fluid">
<div class="jumbotron">
<h1 class="display-3">Search Patient Using Health Card Number</h1>
<hr class="m-y-2">
<p class="lead">
<input type="text" class="form-control" id="hcnSearch" aria-describedby="hcn" placeholder="Search health card number">
</p>
</div>
<div id="result">
</div>
</div>
Jquery / AJAX
$(document).ready(function(){
$("#hcnSearch").keyup(function() {
var txt =$(this).val();
if (txt != '') {
$('#result').html('');
$.ajax({
url:"fetch2.php",
method: "post",
data:{search2:txt},
dataType:"text",
success:function(data)
{
$('#result').html(data);
}
});} else {
$('#result').html('');
}
});
});
В моем файле fetch2.php
<?php
session_start();
include("connection.php");
$output = '';
$sql = "SELECT * FROM PATIENT_ID_DEMO WHERE H_CARD_NUMBER LIKE '%".mysqli_real_escape_string($link, $_POST["search2"])."%'";
$result = mysqli_query($link, $sql);
if (mysqli_num_rows($result) > 0) {while ($row = mysqli_fetch_array($result)) {
if ($row[5] == 1) {
$row5 = "Yes";
} else {
$row5 = "No";
}
if ($row[8] == "M") {
$row8 = "Male";
} else {
$row8 = "Female";
}
$output .= '<h4 align="center">Search Result</h4>';
$output .= '<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Middle Name</th>
<th>DOB</th>
<th>NS health card</th>
<th>Health card number</th>
<th>Gender</th>
<th>Age</th>
<th>UID</th>
</tr>';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row[1].'</td>
<td>'.$row[2].'</td>
<td>'.$row[3].'</td>
<td>'.$row[4].'</td>
<td>'.$row5.'</td>
<td>'.$row[7].'</td>
<td>'.$row8.'</td>
<td>'.$row[9].'</td>
<td>'.$row[10].'</td>
</tr>
';
}
echo $output;
}
} else {
echo "No data found...";
}?>
Этот код позволяет мне набирать (искать) 12345689, и запрос покажет некоторые соответствующие номера карт здоровья, однако, если я ищу 12345689999 и набираю вторую 9 … все поиски прекращаются.
изменить метод в ПОЛУЧИТЬ
$.ajax({
url:"fetch2.php",
method: "GET",
data:{search2:txt},
dataType:"text",
success:function(data)
{
$('#result').html(data);
}
});
Других решений пока нет …