【问题标题】:how to stop do-while looping and fixing the button function?如何停止do-while循环并修复按钮功能?
【发布时间】:2019-10-23 03:33:32
【问题描述】:

我想让它停止循环,但我不知道出了什么问题。我希望它像.. 单击按钮然后显示文本,并在一页中不断重复。

我的代码是这样的:

<?php
    include "koneksi.php";
    $query = mysqli_query($connection,"SELECT * FROM buatsoal_db ORDER BY ID DESC");
    $id = mysqli_query($connection, "select 'ID' from buatsoal_db");
    ?>

<?php
    do{ ?>
        <form method= 'post'>
        <input name='next' type='submit' id='next' value='next'>
        </form>
            <?php if(isset($_POST['next'])){ ?>
                    <table width="637" border="0" cellspacing="1" cellpadding="2">
                    <tr>
                        <th width="297" scope="col">
                            <?php $row = mysqli_fetch_array ($query);
                             echo $row['SOALTXT']; ?>
                    </tr>
                    </table>
            <?php } 
            ?>
<?php   }

    while ($id = 'S01');
    echo "sudah selesai";
?>

我不知道出了什么问题,它一直像这样循环: first_executes_looping non stops 并且下一个按钮一起显示,当我单击它时,txt 也同时显示。我希望它一个一个地显示出来,并一直重复,直到 txt 中的 id="s01" 结束。

【问题讨论】:

  • 它不断循环的原因是因为$id = 'S01' 是一个返回分配值的赋值,即'SO1',这在布尔上下文中是正确的。您需要进行比较,即$id == 'S01'。但是,这仍然不起作用,因为您实际上并没有从 select 'ID' from buatsoal_db 查询中获取值

标签: php loops mysqli do-while


【解决方案1】:

您的 while 条件有问题。单个 = 用于赋值, == 用于比较。所以在这里你必须使用 == 来比较。试试下面的代码。

<?php
    include "koneksi.php";
    $query = mysqli_query($connection,"SELECT * FROM buatsoal_db ORDER BY ID DESC");
    $id = mysqli_query($connection, "select 'ID' from buatsoal_db");
    ?>
    <?php
        do{ ?>
            <form method= 'post'>
            <input name='next' type='submit' id='next' value='next'>
            </form>
                <?php if(isset($_POST['next'])){ ?>
                        <table width="637" border="0" cellspacing="1" cellpadding="2">
                        <tr>
                            <th width="297" scope="col">
                                <?php $row = mysqli_fetch_array ($query);
                                 echo $row['SOALTXT']; ?>
                        </tr>
                        </table>
                <?php } 
                ?>
    <?php   }    
        while ($id == 'S01');
        echo "sudah selesai";
    ?>

【讨论】:

  • 我试过了,输出是下一行,其中 id ==s02 和“sudah selesai”。你知道为什么吗?因为我要找的是soaltxt,其中id ==s01。
  • 您只触发了查询,您还必须在此处获取数据 $query = mysqli_query($connection, "select 'ID' from buatsoal_db"); $query->fetch_assoc();
【解决方案2】:

只需在 do while 循环中使用比较语句即可:

do{
//your code block here
}while($id == 'S01');

【讨论】:

    【解决方案3】:

    while 语句中存在问题。

    你要做的是:

    do {
    ...
    }
    while($id == 'S01'); 
    

    == 是解决方案

    【讨论】:

    • 我改变了它,但是,你知道为什么输出是 id = s02,而不是 s01 吗?它还执行“echo 'sudah selesai'”?
    • 根据您的评论,id 值为 s02 并且您与 s01 进行比较,那么显然循环将中断并且下一行代码将被执行。
    猜你喜欢
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多