簡體   English   中英

將PHP轉換為數組並循環遍歷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM