【发布时间】:2020-03-30 08:51:43
【问题描述】:
我有一个页面,其中从单个表中显示多个表单,相同的表单但不同的值带有一些输入,每个表单的最后一个按钮。
当特定值返回特定数量时,有什么方法可以禁用特定表单的按钮?
就像我通过 foreach 循环从表格中获取数据以显示在页面上一样:
$userID = $_SESSION['username']['UserID'];
$query = "Select * from tbl_packages";
$result = mysqli_query($conn,$query);
$num = mysqli_num_rows($result);
mysqli_close($conn);
foreach($result as $data):
$PkgID = $data['id'];
$PkgAmount = $data['amount'];
$PkgFees = $data['fees'];
$PkgPeriod = $data['period'];
$ReturningAmount = $data['returnAmount'];
?>
<form
action=""
class="form-inline"
method="POST"
id="buyPackage-init"
>
<input
class="form-control form-control-user"
name="PkgID"
id="PackagegID"
value=<?php echo $PkgID?>
readonly
>
<!-- and more inputs like above... -->
</form>
<?PHP
endforeach;
?>
然后我从第二个表中选择存储的表单值,以循环检查表中是否已经存在表单数据,如下所示:
$queryCheckPackage = "select status from tbl_lendinglogs where UserID = '$userID'";
$resultCheckPackage = mysqli_query($conn,$queryCheckPackage);
$numCheckPackage = mysqli_num_rows($resultCheckPackage);
$FetchCheckPackage = mysqli_fetch_array($resultCheckPackage);
$value = null;
foreach($resultCheckPackage as $row)
{
if($row['status'] == 1) {
//echo $row['status'];
$value = "disabled";
} else {
$value = "enabled";
//echo "enabled <BR>";
}
}
mysqli_close($conn);
然后是标签前表单中的按钮:
<input
class="btn btn-primary btn-user btn-block"
onclick="return confirm('Confirm befor buy?');"
type="submit"
id="btn"
data-target="#buyPackage"
value="Invest"
name="bttn-order"
<?php echo $value ?>
/>
现在发生的事情是所有按钮都被禁用,而表中存储了两个表单 1 表单数据状态为 0,第二个状态为 1。我想检查所有状态,然后禁用特定表单的状态按钮在存储形式表中为 1。
有没有可能这样做?通过在互联网上长时间挖掘有关此信息的信息,我感到很糟糕。我自己尝试了很多,但它禁用了所有按钮,而在循环中有两个状态值是“0”和“1”。
这是使用 foreach 循环的查询
$userID = $_SESSION['username']['UserID'];
$query = "Select * from tbl_packages";
$result = mysqli_query($conn,$query);
$num = mysqli_num_rows($result);
//$buttons = [];
$pkgStatus = null;
$PkgID = 0;
foreach($result as $data):
$PkgID = $data['id'];
$PkgAmount = $data['amount'];
$PkgFees = $data['fees'];
$PkgPeriod = $data['period'];
$ReturningAmount = $data['returnAmount'];
$queryCheckPackage = "select * from tbl_lendinglogs where UserID = '$userID' and pkg_id = '$PkgID'";
$resultCheckPackage = mysqli_query($conn,$queryCheckPackage);
$numCheckPackage = mysqli_num_rows($resultCheckPackage);
$FetchCheckPackage = mysqli_fetch_array($resultCheckPackage);
foreach($resultCheckPackage as $row):
$pkgStatus = $row['status'];
?>
这是按钮:
<input class="btn btn-primary btn-user btn-block" onclick="return confirm('Confirm befor buy?');" type="submit" id="btn" data-target="#buyPackage" value="Invest" name="bttn-order" <?php if ($pkgStatus == 1) echo 'disabled="disabled"' ?>/>
然后我在每个末尾添加了 end :
<?php endforeach; endforeach;?>
非常感谢@Wimanicesir,您帮了很多忙。
【问题讨论】:
-
这永远行不通?您检查每一行的状态,但覆盖您保存它的变量。因此最后一个状态将应用于所有行。
-
请让您的问题更清楚。目前尚不清楚您需要实现什么。
-
@MerianosNikos,很清楚他想要什么?
-
@Wimanicesir 先生,您能否给我一个示例,说明我需要更改的地方以及它将如何工作?是的,我正在检查每一行,并且我已经通过 echo $row of foreach 循环在循环中检查了数据,并且所有值都在出现,但它在最后一行值上工作。虽然我需要对所有价值观都这样做。因此,如果您不介意试一试并展示一个示例,那么这可能对更多人有所帮助。
-
@Ali 我在答案中提供了更详细的解释。如那里所述,如果您将 $resultCheckPackage 中的数据提供给我,我可以提供更多帮助
标签: php loops for-loop foreach