当我点击书籍链接时,它按升序订购书籍,如果我再次点击链接,它会按顺序订购书籍,我的问题是,当我点击书籍链接时,他订购了两本书对我来说很明显,,,即使书在下一页,我也希望他订购这些书。
这个功能让书籍显示在表格中
u
这个JavaScript函数以Ascending降序排列
public function getBooks($start = 0, $limit = 2)
{
$sql_start = $start * $limit;
$sql_limit = $limit;
$query = "SELECT Library.nameOfBook, userBook.book_id, userBook.user_id FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $sql_start, $sql_limit";
$statment = $this->db->prepare($query);
$statment->execute([
':username' => $this->username
]);
$result = $statment->fetchAll();
echo "<table id='myTable' border='1'>
<tr>
<th><a onclick='sortTable(1)' href='#'>Books</a></th>
<th>Action</th>
</tr>";
foreach($result as $row){
echo "<tr>";
echo "<td>" . $row['nameOfBook'] . "</td>";
echo "<td>" ."<input type='submit' id='delete".$row['book_id']."-".$row['user_id']."' onclick='deleteBook(this)' name='delete' value='Delete'>" . "</td>";
echo "</tr>";
}
echo "</table>";
echo "";
}
&#13;
答案 0 :(得分:1)
好像你在php端而不是javascript端执行分页。这意味着你应该类似地在php端进行列排序 - 单击标题会导致对“getBooks”的新调用使用不同的“ORDER BY”子句。
所以sortTable()函数应该是对服务器的ajax调用,其中“getBooks”再次执行,ORDER BY由单击的标题指示(如果顺序是升序或降序)。如果用户单击“Books”标题,则查询如下所示:
$query = "SELECT Library.nameOfBook, userBook.book_id, userBook.user_id FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $sql_start, $sql_limit ORDER BY nameOfBook " //add DESC if necessary
修改强>
快速解释:
当对表进行分页时,您可以在客户端(在本例中为javascript)或服务器端(在本例中为php)中执行此操作。
做客户端的事情意味着您可以从服务器获取所有数据(因此库中的所有书籍),作为JSON对象(可能是XML或其他),然后从该数据生成表在Javascript中,限制每页的书籍数量,但允许您访问其他书籍,因为您拥有所有要处理的数据。这意味着在SQL查询中不使用“LIMIT”,因为您正在发送所有内容。这样做的好处是可以限制对服务器的调用(如果这是一个问题),但如果你有大量数据,可能意味着在客户端进行大量的数字处理。
或者,你在php端完成了分页。在这种情况下,查询将包括LIMIT以保持数据较小,但您可能还希望向客户端发送完整数量的条目,以便可以计算页数(这可以使用SQL_CALC_FOUND_ROWS完成)。从javascript您发送AJAX请求到服务器的数据。以下是一些资源:
AJAX: https://www.w3schools.com/xml/ajax_intro.asp
https://www.tutorialspoint.com/ajax/index.htm
SQL_CALC_FOUND_ROWS: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_found-rows
JSON格式: https://www.w3schools.com/js/js_json_intro.asp
ajax请求转到php页面,该页面执行sql查询并返回数据。数据可以是对象(最有可能是JSON),也可以是表格的HTML。前者最适合大型项目,但第二种可能更快。一旦服务器发送回数据,您将显示它(通过从JSON对象生成Javascript中的表,或者只是插入HTML,如果这就是你要去的那样)。
对不起,如果这可能比你原先计划的更重要。