Нужна помощь с панелью поиска с выпадающим списком с помощью MySQL запроса PDO

У меня есть панель поиска на моем лицевой панели. Он будет искать lastName или firstName каждый раз, когда пользователь вводит символ или имя в текстовое поле.

Для большей ясности вот скриншот:

введите описание изображения здесь

и вот код:

ОБНОВИТЬ

Это код, который я нашел в сети за эти 3 дня бездействия

этот код сделан Малик Найк (Я изменил часть его кода)

addBookRecord.php

<?php
session_start();
$recordType = $_GET['status'];
?>
<!-- this code made by Malik Naik -->
<script>
function searchResult(string){
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject("XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById("result").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "search.php?search="+string, true);
xmlhttp.send(null);
}
</script>

<style>
#result{
width: 350px; margin: 0 auto; max-height: 150px; overflow: hidden;
}
</style>
<!DOCTYPE html>
<html lang="en">
<head>
<!--<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css">-->
<link rel="stylesheet" type="text/css" href="../css/bootstrap-glyphicons.css">
</head>

<span style="color:#B22222"><strong>Add Record</strong></span>
<form action = "" method="post">
<div style="margin-top: 10px; margin-left: 10px;">
<strong>Name:</strong>
<!--<form name="form1" method="post">-->
<div class="input-group stylish-input-group">
<input type="text" class="form-control" name="searchStud" placeholder="Search" onkeydown="searchResult(this.value)" autocomplete="off">
<span class="input-group-addon">
<span class="glyphicon glyphicon-search"></span>
</span>
</div>
<div id="result"></div>
<!--</form>-->
<?php
if ($recordType=='book'){
?>
<strong>Item:</strong><br>
<input type="text" name="addBookItem" value="e-math (K to 12)"> <input type="text" name="searchID" value="<?php echo $_SESSION['addBorrowID'];?>"><br>
<strong>Description:</strong> <br>
<input type="text" name="addBookDescription" value="Worktext in Mathematics"><br>
<strong>Author:</strong> <br>
<input type="text" name="addBookAuthor" value="Orlando A. Orence & Marilyn O. Mendoza"><br>
<strong>Publisher:</strong> <br>
<input type="text" name="addBookPublisher" value="REX Book Store"><br>
<strong>ISBN:</strong> <br>
<input type="text" name="addBookISBN" value="9789712361982"><br>
<?php
}
else{
?>
<strong>Item:</strong> <br>
<input type="text" name="addBookItem" value="e-math (K to 12)"><br>
<strong>Model:</strong> <br>
<input type="text" name="addBookAuthor" value="Orlando A. Orence & Marilyn O. Mendoza"><br>
<strong>Serial:</strong> <br>
<input type="text" name="addBookPublisher" value="REX Book Store"><br>
<?php
}
?>
<br>
</div>
<button class="btn btn-success btn-block btn-large" name="addRecordButton" >Save Changes</button>
</form>

1

Решение

ОТВЕТ НА ПЕРВИЧНЫЙ ВОПРОС

Вот проблема, с которой вы сталкиваетесь. Вы пытаетесь соединить интерфейсный код с серверным кодом таким образом, чтобы он не работал. Серверный код обрабатывает PHP, а затем передает полученный код в браузер. На данный момент доступен только внешний или клиентский код. Это фрагмент кода, о котором я говорю:

<?php
session_start();
include("../db/dbCon.php");

if(isset($_GET['search']) && $_GET['search'] != ''){
$search=$_GET['search'];
$qry = $conn->prepare("SELECT e.enrld_id, CONCAT(i.lastName,', ', i.firstName,' ',i.middleName)
AS fullName
FROM user_info i
JOIN enrolled e ON e.userID=i.userID
WHERE i.lastName LIKE '%$search%' OR i.firstName LIKE '%$search%'
");
$qry->execute();
$result = $qry->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $row){
if ($row['enrld_id']!=0){
//$_SESSION['addBorrowID']=(int)$row['enrld_id'];
$fullName = $row['fullName'];
echo '<div id="result" onclick="getSearchID("'.$row['enrld_id'].'")">'.$fullName.'</div>';
}
}
}

?>

<?php
function getSearchID($enrldID){
$_SESSION['addBorrowID'] = $enrldID;
}
?>

Вы добавляете onclick="getSearchId... но вы определяете функцию в <?php ... >? теги. Это больше не доступно, когда страница доставляется в браузер. Если у вас есть время и вы видите, что делаете много фронт-энда, я очень рекомендую взять его быстрый курс; это избавит вас от многих головных болей и потребует больших инвестиций.
Эта проблема станет очевидной, если вы проверите HTML на странице, и так далее, и так далее. В верхней части вашего кода я вижу, что вы включили очень простой вызов AJAX. в этом случае вы захотите использовать нечто подобное … Вот примерное представление о том, что вы хотите сделать.

<script>
var xmlhttp;
function ajaxCall (string, callback) {
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject("XMLHTTP");
}
xmlhttp.onreadystatechange = callback
xmlhttp.open("GET", , true);
xmlhttp.send(null);
}

function searchResult(string){
ajaxCall("search.php?search="+string, function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById("result").innerHTML = xmlhttp.responseText;
}
});
}

function getSearchId(id) {
ajaxCall( 'path_to_php_file_that_returns_search_id?searchId=' + id, function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
//code here to put the id in the right spot
}
});
}
</script>

Это будет file_that_returns_search_id.php

<?php
session_start();
echo $_SESSION['addBorrowID'] = $_GET['searchId'];

Теперь, когда я смотрю на это, я понятия не имею, чего вы пытаетесь достичь. Это выглядит больше как установка из searchId, но я просто ухожу, что здесь.

ОТВЕТ НА ВАРИАНТЫ ВОПРОСА

Я читаю это правильно? 99% этого материала не имеют отношения к вашему вопросу? Я чувствую, что это один из хитрых вопросов, где вам говорят несколько человек, которые садятся в автобус и выходят из него, а затем спрашивают, сколько лет водителю автобуса.

Если я прав, ваш вопрос нуждался только в этой части:

$qry = $conn->prepare("SELECT userID, lastName, firstName, middleName
FROM user_info WHERE lastName LIKE '%".$find."%' OR firstName LIKE '%".$find."%'
");
$qry->execute();

Ответить на ваш вопрос. Я собираюсь предположить, что ваш $conn переменная использует PDO для запроса базы данных. Если это так, то информация, которую вы ищете Вот. Но ваш новый код может выглядеть примерно так.

$qry = $conn->prepare(
"SELECT userId, lastName, FirstName, MiddleName
FROM user_info where lastName LIKE '%?%' OR firstName LIKE '%?%'");

$qry->execute([$find, $find]);
1

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

Других решений пока нет …

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