我的要求是檢查文本變數是否等于 mysql 輸出陣列。
我采取的mysql輸出陣列如下,
$connect = mysqli_connect("localhost", "root", "", "newbooks");
$query = "SELECT book_name FROM takenbooks order by ID DESC";
$result = mysqli_query($connect, $query);
while( $row = mysqli_fetch_assoc( $result)){
$avail_books[] = $row['book_name']; // Inside while loop
}
現在我需要檢查用戶是否輸入了包含在上述陣列中的任何書籍。所以我實作了如下。
$(document).ready(function(){
$('#insert_form').on("submit", function(event){
event.preventDefault();
$('#book_name').val()=$book_required;
if(in_array($book_required,$avail_books))
{
alert("Not Available");
}
else{
$.ajax({
url:"books.php",
method:"POST",
data:$('#insert_form').serialize(),
beforeSend:function(){
$('#insert').val("Inserting");
},
success:function(data){
$('#insert_form')[0].reset();
$('#add_data_Modal').modal('hide');
$('#employee_table').html(data);
}
});
}
}
}
但這不起作用。有人可以顯示我在哪里弄亂了這個嗎?
uj5u.com熱心網友回復:
可以有其他方法來完成你想要的。
例如,使用以下查詢:
SELECT count(*) FROM takenbooks where book_name = ?
但是對于如何檢查文本變數是否等于陣列并根據您的原始代碼,通常的方法是通過 ajax 傳遞用戶輸入資料(我相信是 $('#book_name').val())到一個 PHP 檔案來檢查這個資料是否在陣列中,然后回傳結果(或者做進一步的處理)
對于 HTML
<script
src="https://code.jquery.com/jquery-3.6.0.js"
integrity="sha256-H K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<form id=insert_form>
<input type=text id="book_name">
<input type=submit>
</form>
<script>
$(document).ready(function(){
$('#insert_form').on("submit", function(event){
event.preventDefault();
$.ajax({
type: "POST",
url: 'checkdata.php',
data: {data1: $('#book_name').val()},
success: function(data){
alert(data);
},
error: function(xhr, status, error){
console.error(xhr);
}
});
})
})
</script>
對于 PHP (checkdata.php)
<?php
if (isset($_POST["data1"])){
$connect = mysqli_connect("localhost", "root", "", "newbooks");
$query = "SELECT book_name FROM takenbooks order by ID DESC";
$result = mysqli_query($connect, $query);
while( $row = mysqli_fetch_assoc( $result)){
$avail_books[] = $row['book_name']; // Inside while loop
}
if(in_array($_POST["data1"],$avail_books)) {
echo "Not Available";
} else {
// Place insert query here
echo "New Record inserted";
}
}
?>
uj5u.com熱心網友回復:
它可能有一些語法錯誤,但這就是您要實作的基本概念。某人輸入文本,腳本搜索資料庫并回傳結果。
<html>
<body>
<form action="" method="POST">
<input type="text" name"book" required placeholder="Type the name of the Book" />
<input type="submit" value="Search Book" />
</form>
<div><h2>Results:</h2>
<?php
if(isset($_POST['book'] && !empty($_POST['book'])){
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$connect = new mysqli("localhost", "root", "", "newbooks");
$stmt = $mysqli->prepare("SELECT ID, book_name FROM takenbooks WHERE book_name LIKE ? ORDER BY ID DESC;");
$stmt->bind_param("s", "%" $_POST['book'] "%");
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo '<p>Book \"' . $row['book_name'] . '\" was found.<br/></p>';
}
}
?>
</div>
</body>
</html>
uj5u.com熱心網友回復:
您可以先獲取圖書串列一次,然后撰寫一個 Javascript 陣列,從中搜索輸入的圖書名稱。(如果書籍串列經常變化,或者串列非常長,這可能不實用。)
<?php
$connect = mysqli_connect("localhost", "root", "", "newbooks");
$query = "SELECT book_name FROM takenbooks order by ID DESC";
$result = mysqli_query($connect, $query);
$avail_books = [];
while( $row = mysqli_fetch_assoc( $result)){
$avail_books[] = $row['book_name']; // Inside while loop
}
?>
<!DOCTYPE html>
<html>
<body>
<form id="insert_form">
Book name: <input type="text" name="book_name">
<input type="submit" value="Check for availability">
</form>
<div id="available"></div>
<script>
const avail_books = <?php json_encode($avail_books); ?>;
document.querySelector('#insert_form').addEventListener(function (evt) {
evt.preventDefault();
let book_name = evt.target.book_name.value;
let not_available = (-1 === avail_books.indexOf(book_name))? 'not': '';
document.querySelector('#available').innerHTML = book_name " is " not_available " available.";
});
</script>
</body>
</html>
服務器上的 PHP 獲取書籍并將串列存盤在 PHP 陣列中。當寫出 HTML 和 Javascript 時,使用 PHP 寫出一個 Javascriptavail_books陣列,其中包含從資料庫中檢索到的書名。
現在服務器可以向客戶端發送 HTML/Javascript 代碼以進行渲染。在瀏覽器中加載后,如果您“查看源代碼”,Javascript 代碼將如下所示:
const avail_books = ["To Kill a Mockingbird", "Animal Farm", "Atlas Shrugged"];
這樣,用戶可以檢查書籍串列,而無需在每次查詢時向服務器發送查詢。它速度更快,使用的資源更少。

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483381.html
