【问题标题】:Infinite loop display iteration database entries无限循环显示迭代数据库条目
【发布时间】:2021-04-19 12:05:55
【问题描述】:

我有 php 代码,可以从数据库中获取并显示条目。我需要在它们随机播放时显示它们,直到发生某些事情/按下按钮等。/

类似这样的东西-http://jsfiddle.net/ZDsMa/1/

这是我的代码

<?php
$winners = [];
$conn = mysqli_connect("localhost", "admin", "admin", "lottary");
$sql = "SELECT * FROM users ORDER BY RAND() ";

$result = $conn->query($sql);

while ( $row = $result->fetch_assoc()) {

    $id = $row['id'];
    $firstname = $row['first_name'];
    $lastName = $row['last_name'];
    $points = $row['point'];
    $all =$id.' '.$firstname. ' '.$lastName. ' '.$points;


    ?>
    <input class="form-control" size="40" name="id" type="text" value="<?php echo $all; ?>">

<?php }

$conn->close();
?>

【问题讨论】:

  • 是这样吗?用户发送请求,并在等待来自服务器的响应时运行某种数字计数器以保持用户兴趣。
  • 如果你链接到一个你想做的例子,你的问题是什么?是什么阻止您使用该示例并构建您的应用程序?你有没有做过一些没有用的尝试?
  • 只是一个头注,很久以前的动画加载 gif 动画其中一个圆圈已被替换为计数器,因为谁知道在我们第二次眨眼之前可能需要多长时间可能需要 30 .考虑使用 css 研究 UI 方面,所有这些都在响应时被杀死。
  • 我假设您希望计数器反映当前生成的用户编号。该查询应该需要几毫秒,而构建 HTML 则需要几毫秒。为什么要在用户面前设置一个柜台。
  • @murphy_86:那么“无限循环”可能不是正确的术语。您希望 JavaScript 代码设置在一个非常小的时间间隔内(请参阅setInterval)来更新 UI。并且您希望 JavaScript 响应按钮单击并清除该间隔。

标签: javascript php database animation


【解决方案1】:

这里是 shuffle 数据库条目的 jquery 脚本,带有停止/开始按钮

<div class="demo">
     <div id="roll"></div><input type="hidden" id="mid" value="">
     <p><input type="button" class="btn" id="start" value="Start"> <input type="button" class="btn" id="stop" value="Stop"></p>
     <div id="result"></div>
  </div>


start_btn.click(function(){
        $.getJSON('data.php',function(json){
            if(json){
                //var obj = eval(json);//By eval () function can be converted into JSON string object
                var len = json.length;
                _gogo = setInterval(function(){
                    var num = Math.floor(Math.random()*len);
                    //var id = obj[num]['id'];
                    var id = json[num].id;
                    //var v = obj[num]['mobile'];
                    var v = json[num].mobile;
                    $("#roll").html(v);
                    $("#mid").val(id);
                },100);
                stop_btn.show();
                start_btn.hide();
            }else{
                $("#roll").html('System can not find the data source, first import the data.');
            }
        });
        //_gogo = setInterval(show_number,100);
    });});
stop_btn.click(function(){ 
        clearInterval(_gogo); 
        var mid = $("#mid").val(); 
        $.post("data.php?action=ok",{id:mid},function(msg){ 
            if(msg==1){ 
                var mobile = $("#roll").html(); 
                $("#result").append("<p>"+mobile+"</p>"); 
            } 
            stop_btn.hide(); 
            start_btn.show(); 
        }); 
    }); 

【讨论】:

    【解决方案2】:

    试试这个代码: 也许那工作 只需用 foreach 替换 while

    <?php
    $conn = new mysqli("localhost", "admin", "admin", "lottary");
    $sql = "SELECT * FROM `users` ORDER BY RAND()";
    $result = $conn->query($sql);
    $fetch = $result->fetch_array();
    foreach($fetch as $row) {
        $id = $row['id'];
        $firstname = $row['first_name'];
        $lastName = $row['last_name'];
        $points = $row['point'];
        $all = $id.' '.$firstname. ' '.$lastName. ' '.$points;
        ?>
        <input class="form-control" size="40" name="id" type="text" value="<?php echo $all; ?>">
    
    <?php 
    }
    $conn->close();
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 2023-03-20
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      相关资源
      最近更新 更多