[英]Casting PHP into an array and looping through
我正在為我們的空手道學校申請一個應用程序,並希望從數據庫中獲取技術名稱,以隨機順序將它們存儲在一個數組中,並且能夠單擊一個按鈕一次一個地移動整個數組。
我已經用幾種不同的方式考慮過這個問題,包括從數據庫中隨機進行這很簡單,但它多次采用相同的技術,我只想做一次。
下面的示例代碼將它們全部隨機地列出,當我刷新瀏覽器時,它會像我想要的那樣創建一個新列表。 現在我想知道如何一次只顯示一個並將其保留在瀏覽器中,直到所有這些都已經完成。
$sqlQuery= "Select * from Techniques Order BY Rand()";
$statement = $db->prepare($sqlQuery);
$statement->execute();
while($row = $statement->fetch(PDO::FETCH_ASSOC)):
$techniqueName = $row['Technique_name'];
?>
<ul>
<li><?php echo $techniqueName; ?></li>
</ul>
<?php endwhile; ?>
我真的不知道這是否有意義。 如果可能的話,我也想遠離javascript,盡管這不是真正的要求。 基本上這是一個有趣的小游戲想法,允許學生練習,而不是多次執行相同的技術,並缺少其他技術。
任何想法將不勝感激。
如果你想“遠離javascript”,你可以將值保存在一個存儲在會話中的數組中。 在重新加載時,會話中的數組被讀取,並從中彈出一個隨機值。 在每個請求中,會話中的數組變小,直到數組為空。 然后,您可以從數據庫重新加載一組新技術。 源代碼可能如下所示:
<?php
session_start();
if (!isset($_SESSION['data'])) {
/*
* Access the database here. For testing purposes
* create a dummy array instead
*/
$array = range(1, 10);
shuffle($array);
$_SESSION['data'] = $array;
}
$value = array_pop($_SESSION['data']);
if (!count($_SESSION['data'])) {
// array is empty, delete it so a new one gets created on the next request
unset($_SESSION['data']);
}
echo "The current value is: ".$value."<br />\n";
// only for debugging:
if (isset($_SESSION['data'])) {
var_dump($_SESSION['data']);
} else {
echo "No array in 'data' set\n";
}
如果你想使用javascript,你可以加載javascript數組中的所有值。 然后使用javascript迭代數組並顯示所需的值,直到結束。 之后,您可以發送新請求以從數據庫中獲取一組新技術。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.