你應該包裝中的每本書<div>
標籤,併爲每個人的onclick
功能。
無論是預先載入的信息還是取決於您的信息都取決於您。如果頁面上列出了大量圖書,則預加載信息可能會導致性能問題,因此通過AJAX按需加載圖書信息可能會更好。
這裏是你的代碼可能是什麼樣子,使用AJAX:
// styling should be done in a CSS file, but for the simplicity of the example, including it inline
echo "<div id=\"divBookInfo\" style=\"display:none; position:fixed; bottom:0; right:0;\">
</div>\n";
$q = mysql_query("SELECT title, price_myr FROM books");
while ($result = mysql_fetch_array($q))
{
echo "<div onclick=\"showBookInfo({$result["bookID"]})\">
<b>Title:</b> {$result["title"]} <br />
<b>Price:</b> {$result["price_myr"]} <br />
</div>\n";
}
而且你的JavaScript函數:
function showBookInfo(bookID)
{
var xmlhttp;
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("divBookInfo").innerHTML = xmlhttp.responseText;
document.getElementById("divBookInfo").style.display = "block";
}
}
xmlhttp.open("GET", "getBookInfo.php?bookID="+ bookID, true);
xmlhttp.send();
}
getBookInfo.php:
<?php
$db_host="localhost";
$db_username="root";
$db_pass="";
$db_name="";
@mysql_connect($db_host, $db_username, $db_pass) or die("Could not connect to database.");
@mysql_select_db($db_name) or die("No database");
$q = mysql_query("SELECT author, publisher, description, ... FROM books WHERE bookID = '". mysql_real_escape_string($_GET["bookID"]) ."'");
list($author, $publisher, $description, ...) = mysql_fetch_row($q);
echo "<b>Author:</b> {$author} <br />
<b>Publisher:</b> {$publisher} <br />
<b>Description:</b> {$description} <br />";
?>
ALSO
另一個方面是,您應該避免在生成HTML的PHP腳本中使用or die()
語法。出於某些原因,請參閱this link。
您可以在顯示頁面之前獲取所有已經提取的信息,只需點擊時取消隱藏信息,也可以在點擊該信息時使用AJAX提取信息。 – 2012-03-19 16:30:59
@邁克爾我不知道如何接受...我試圖投票,但因爲它要求的15個聲望而不能。 – haura 2012-03-20 01:02:19
在投票下方有一個空白的複選標記,單擊它並接受答案(通過將複選標記變爲綠色複選標記) – Michael 2012-03-20 15:46:42