【发布时间】:2021-05-03 03:44:43
【问题描述】:
我的代码有问题。我正在使用模型来更新数据,但是在我的表单中有一个选择选项,当我需要填充所有数据时,我发现其中只填充了一行。如果我必须使用<?php while ($row = mysqli_fetch_array($query)) {?> 填充该选项中的值。在该选项字段中填充的所有行,但在需要填充所有数据行的列表中,它只填充一个。
<?php
include('../Tools/connection.php');
$query = mysqli_query($db,"SELECT abl_atms.atmCode,abl_atms.atmID,abl_atms.branchID, abl_branch.name,abl_branch.bid
FROM abl_atms
INNER JOIN abl_branch ON abl_branch.bid = abl_atms.branchID");
while ($row = mysqli_fetch_array($query)) {
$id = $row['atmID'];
$id = $row['branchID']
?>
<tr>
<td><?php echo strtoupper($row['atmID']);?></td>
<td><?php echo ucwords($row['atmCode']).'- '.strtolower($row['name']);?></td>
<td><?php echo strtoupper($row['name']);?></td>
<td class="pull-right">
<button class="btn-success btn-xs" data-toggle="modal" href="#atm<?php echo $row['atmID'];?>"
data-toggle="tooltip" title="Edit">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i></button>
<button class="btn-danger btn-xs" title="Delete" data-toggle="modal"
href="#delete<?php echo $row['atmID'];?>" data-toggle="tooltip">
<i class="fa fa-trash-o" aria-hidden="true"></i>
</button>
</td>
</tr>
<div class="modal fade" id="atm<?php echo $row['atmID'];?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="card" style="border-left: 4px solid coral">
<div class="card-header">
<div class="alert alert-warning" role="alert">
Update Atm information
</div>
</div>
<div class="card-body">
<form class="was-validated" action="abl_atms.php" method="POST">
<fieldset class="form-group">
<label for="exampleInputEmail1" class="bmd-label-static"><i class="fa fa-barcode" aria-hidden="true"></i> ATM CODE</label>
<input type="text" class="form-control" name="atmCode" value="<?php echo ucwords($row['atmCode']);?>" placeholder="Type ATM Identification CODE" required>
</fieldset>
<input class="form-control" name="atmID" type="hidden" value="<?php echo $row['atmID'];?>">
<fieldset class="form-group">
<label for="exampleInputEmail1" class="bmd-label-static"><i class="fa fa-snowflake-o" aria-hidden="true"></i> ATM BRANCH</label>
<select class="custom-select" required name="branchID">
<option value="">Select Branch Name</option>
<?php
while ($row = mysqli_fetch_array($query)) {
?>
<option value="<?php echo $row['branchID']; ?>"<?php if ($id == $row['branchID'])
{ echo 'selected="selected"'; } ?>><?php echo $row['name']; ?></option>
<?php
}
?>
</select>
</fieldset>
<button type="submit" class="btn btn-raised btn-warning btn-block" name="editAtm">
<i class="fa fa-floppy-o" aria-hidden="true"></i> Confirm & Update
</button>
</form>
</div>
</div>
</div>
</div>
</div>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
【问题讨论】:
-
您似乎试图循环两次相同的 mysql 结果集,其中第二次在第一个循环内。那是行不通的。如果你需要循环一个结果集两次,你必须先将结果放入一个数组,然后循环遍历数组。如果直接循环一个结果集,只能循环一次。
-
你能帮我写一下代码吗?我是新手
-
嗯,我说的哪一部分你没有完全理解?告诉我,如果有什么我可以更好地解释。除此之外,您至少应该尝试..这就是您学习的方式。如果您再次遇到困难,请在此处发布更新后的代码。
-
如何将结果 se 存储到数组中并使用它来循环选择选项
-
嗯,这是两个独立的任务。这是第一个:
$rows = array(); while ($row = mysqli_fetch_array($query)) { $rows[] = $row; }。一旦结束,您将拥有一个名为$rows的数组。您可以使用foreach循环多次。请不要问我如何为此编写确切的代码,这是您可以通过在线查找轻松学习的内容...学习如何研究以及如何将其他人的示例实践和实施到您自己的代码中是一项非常重要的技能一个程序员。所以现在请去练习吧。如果您在实际尝试后遇到困难,请回来。