【发布时间】:2021-08-10 07:12:15
【问题描述】:
我正在尝试使用书籍数据库在页面上显示相关数据,方法是将可点击 div 的 id 与数据库中每本书的序列号进行匹配。我的桌子是这样的:
+-------------------+----------------+------------------+------------------+
| booknumber (INT) | title (VCHAR) | author (VCHAR) | publisher (VCHAR)|
+-------------------+----------------+------------------+------------------+
| 123 | title of book | name | publisher name |
| 124 | title of book | name | publisher name |
| 125 | title of book | name | publisher name |
| 127 | title of book | name | publisher name |
| 128 | title of book | name | publisher name |
| 130 | title of book | name | publisher name |
--------------------------------------------------------------------------
感谢this thread 中的回答,我能够获得要显示的数据。
HTML
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="book_db.js"></script>
</head>
<body>
<div class="index-wrapper">
<div class="book" id="123">Book title</div>
<div class="book" id="124">Book title</div>
<div class="book" id="125">Book title</div>
<div class="book" id="127">Book title</div>
<div class="book" id="128">Book title</div>
<div class="book" id="130">Book title</div>
</div>
<div class="book-info">
<h2 id='title'></h2>
<span id='booknumber'></span>
<span id='author'></span>
<span id='pubhisher'></span>
</div>
</body>
</html>
php
<?php
$hostname = "localhost";
$username = "***";
$password = "***";
$databaseName = "book_db";
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
$query = "SELECT booknumber, title, author, publisher FROM booknumber";
$result = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($result))
{
$dataRow[] = $row;
}
echo json_encode($dataRow);
?>
和jquery
$(document).ready(function() {
$.post("book_db.php", {
}, function(server_data) {
data = JSON.parse(server_data);
$(document).on('click', '.book', function(){
var number = $(this).attr('id');
$("#title").html(data[number]['title']);
$("#booknumber").html(data[number]['booknumber']);
$("#author").html(data[number]['author']);
$("#publisher").html(data[number]['publisher']);
});
});
});
这对于前 125 本书左右非常有效,但随后有一个部分,实际书籍上的数字会跳过一个数字,因为这些书籍没有被使用。那时我意识到这段代码是从行号而不是我的 INT 数据(书的实际编号)中提取的。
所以我想要完成的是用数据库中与书号(INT)对应的行的数据(而不是行号)填充 info div 内的文本。如果这对解决方案有任何影响,我将 booknumber 列设置为主键。
【问题讨论】:
-
嗨,你能显示
server_data的输出吗?只需执行console.log(data),您就会在浏览器控制台中看到结果。 -
使用你提到的console.log(data)给了我一个无穷无尽的[object, Object]字符串,但是console.log(server_data)显示了整个数据库的输出。
标签: php html jquery mysql database