如何使PHP shuffle结果在整个shuffle过程中一次显示一个


How to get PHP shuffle results to show up one at a time throughout shuffle

假设我在我的数据库中有10个项目,我试图洗牌,我怎么能改变我当前的代码,以便每次它从数据库中取出一个名字,它一次显示一个,而不是一次显示所有的?

$con = mysqli_connect("XXX", "XXX", "XXX", "XXX");
$query = mysqli_query($con, "SELECT * FROM users WHERE `group` = 3");
echo 'Normal results: <br>';
$array = array();
while ($row = mysqli_fetch_assoc($query)) {
    $array[] = $row;
    echo $row['firstname'] . ' ' . $row['lastname'] . '<br>';
}
?>
<form method="post">
    <input type="submit" value="Shuffle" name="shuffle">
</form>
<?php
if (isset($_POST['shuffle'])) {
    shuffle($array);
    echo 'Shuffled results: <br>';
    foreach ($array as $result) {
    $shuffle_firstname = $result['firstname'];
    $shuffle_lastname = $result['lastname'];
?>
<div id="shuffle_results">
        <?php echo $shuffle_firstname . ' ' . $shuffle_lastname . '<br>';?>
</div>
 <?php   }
}

//我添加的内容这也是我添加的位置

$get_shuffle = array($array);
$shuffle_one = array_pop($get_shuffle);
print_r($get_shuffle);
?>

我希望他们都呆在原地,一旦他们显示…我只是希望他们一次一个地出来。比如说,袋子里有10张纸,你每次画一张,然后把这些纸放在桌子上,让人们看到画的是什么,这就是我想要的。

作为我建议使用JavaScript而不是PHP制作动画的后续评论,这里有一种基本的方法。(此代码假设页面上有jQuery)。

注意:我还没有测试过这段代码,可能有一两个错误,但我希望你能了解总体思路。

HTML

<div id="shuffle_results"></div>
<form onsubmit="getData()">
    <input type="submit" value="Shuffle" name="shuffle">
</form>
PHP

$con = mysqli_connect("localhost", "root", "", "db");
$query = mysqli_query($con, "SELECT * FROM users WHERE `group` = 3");
$array = array();
while ($row = mysqli_fetch_assoc($query)) {
    array_push($array, $row);
}
header('Content-Type: application/json');
echo json_encode($array);

JavaScript

function getData() {
  $.ajax({
    url: 'url to PHP script',
    dataType: 'json',
    success: function(data) {
      for(var i = 0, l = data.length; i < l; ++i) {
        window.setTimeout(addResult, 2000, data[i].firstname, data[i].lastname);
      }
    },
    error: function(jqXHR, textStatus, error) {
      alert('Connection to script failed.'n'n' + textStatus + ''n'n' + error);
    }
  });
}
function addResult(firstname, lastname) {
  $('#shuffle_results').append("<p>" + firstname + " " + lastname + "</p>");
}

这里的基本思想是不应该使用PHP进行DOM操作。PHP可以将数据加载到网页中(数据可以是DOM元素,JSON数据,或者其他类型的数据),但是一旦有了,就应该使用JavaScript与之交互。回想一下,PHP运行在服务器上,而JavaScript(传统上)运行在客户端的web浏览器上。