首页 > 解决方案 > 如果在while循环PHP中先前的值为false,则禁用单选按钮

问题描述

在此处输入图像描述如果我的英语不完美,我很抱歉,但我会尽力解释情况,基本上我的目标是如果状态的前一个循环值未决,则禁用/隐藏单选按钮,下面是我的代码

$allPaid = true
while($row2 = mysqli_fetch_assoc($sql2Q))
{
    $bill = $row2['billPay_id'];
    $amount = $row2['billPay_amount'];
    $interest = $row2['billPay_interest'];
    $payAmount = $row2['billPay_amountPaid'];
    $payInterest = $row2['billPay_interestPaid'];
    $makeUp = $row2['billPay_makeUp'];
    $billStatus = $row2['billPay_status'];

    $date = $row2['billPay_collectOn'];
    $date = date("d-m-Y",strtotime($date));
    $PayDate = $row2['billPay_payOn'];
    if($PayDate == "0000-00-00 00:00:00")
    {
        $PayDate = "";
    }
    else
    {
        $PayDate = date("Y-m-d",strtotime($PayDate));
    }

    if($billStatus == 0)
    {
        $status = "Pending";
    }
    else
    {
        $status = "Paid";
    }

    echo "
            <tr>
                <form>
                    <td>$no</td>
                    <td>$date</td>
                    <td>$PayDate</td>
                    <td>$amount</td>
                    <td>$payAmount</td>
                    <td>$payInterest</td>
                    <td>$makeUp</td>
                    <td>$status</td>
        ";

    if(($status == "Pending")&&($allPaid == true))
    {

        echo "<td><input type='checkbox' name='colDate' value='$date' onclick='payData()'></input></td>";
        $allPaid = false;

    }
    else
    {
        echo "<td></td>";
        $allPaid = true;
    }

    echo "      </form>
            </tr> ";

    $date = date("y-m-d",strtotime($date));
    $no++;
}

我现在正在做一个支付系统,客户需要先支付账单才能支付下一张账单,所以在支付当前账单之前,下一张账单单选按钮不会出现或隐藏,在这个系统中单选按钮是作为选择器,有什么方法可以实现吗?任何帮助都会非常有帮助,谢谢

更新我已经根据 Anggara 的建议更新了代码,但输出有点偏离根据anggara建议更新代码后的结果

标签: php

解决方案


如果您的页面只显示一个人的一张账单,您可以添加一个变量来指示该人已支付所有以前的账单。

$allPaid = true; // declare here

while($row2 = mysqli_fetch_assoc($sql2Q))
{
    $bill = $row2['billPay_id'];
    $amount = $row2['billPay_amount'];
    $interest = $row2['billPay_interest'];
    $payAmount = $row2['billPay_amountPaid'];
    $payInterest = $row2['billPay_interestPaid'];
    $makeUp = $row2['billPay_makeUp'];
    $billStatus = $row2['billPay_status'];

    $date = $row2['billPay_collectOn'];
    $date = date("d-m-Y",strtotime($date));
    $PayDate = $row2['billPay_payOn'];
    if($PayDate == "0000-00-00 00:00:00")
    {
        $PayDate = "";
    }
    else
    {
        $PayDate = date("Y-m-d",strtotime($PayDate));
    }

    if($billStatus == 0)
    {
        $status = "Pending";
        $allPaid = false; // there is a bill unpaid
    }
    else
    {
        $status = "Paid";
    }

    echo "
            <tr>
                <form>
                    <td>$no</td>
                    <td>$date</td>
                    <td>$PayDate</td>
                    <td>$amount</td>
                    <td>$payAmount</td>
                    <td>$payInterest</td>
                    <td>$makeUp</td>
                    <td>$status</td>
        ";

    if($status == "Pending" && $allPaid) // show only if previous bills are paid
    {

        echo "<td><input type='checkbox' name='colDate' value='$date' onclick='payData()'></input></td>";

    }
    else
    {
        echo "<td></td>";
    }

    echo "      </form>
            </tr> ";

    $date = date("y-m-d",strtotime($date));
    $no++;
}

推荐阅读