使用 for 循环获取会话数组和现有 table 值的值
Using for loop to get the values for both session arrays and existing table values
我写了一个表单,其中有 10 个相同的输入,存储在一个数组中以循环遍历并相应地操作数据。输入的表格示例:
<form id="sanFiber" action="insert.php" method="post">
<table class="frame">
<tr>
<td><input name="host[]" class="field" type="text" size="15"
<?php if(isset($_SESSION['hostName'])){ echo "value='
".$_SESSION['hostName']."'";}?> /></td>
</tr>
<tr>
<td><input name="host[]" class="field" type="text" size="15"
<?php if(isset($_SESSION['hostName'])){ echo"value='".$_SESSION['hostName']."'";}?> /></td>
</tr>
...
</form>
我已经能够创建一个 for 循环以将新值插入数据库中现有的 table,但是,我在尝试以相同方式执行 Select 查询时遇到了问题因为这些值不是预先存在的。我试过的循环只返回了第一个值。冲突是我必须循环会话数组和在数据库中找到的行。 $row 值的 for 循环部分工作得很好。会话循环是我的问题所在。我的Select查询和for循环如下:
<?php
include ("connect.php");
session_start();
$query = "SELECT * FROM cable_request_san_fiber_detail WHERE cable_request_id = '".$id."'";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
$label[]=$row['cable'];
}
for ($i=0, $n=0; $i<count($label), $n<count($_SESSION['hostName']); $i++, $n++){
$_SESSION['hostName'][$n]=$label[$i];
}
header('Location:Table.php');
$conn->close();
?>
在我的 for 循环中,我结合了两种不同的循环:一种用于计算和遍历所有会话变量,另一种用于遍历数据库 table 中的所有行。有什么方法可以同时正确执行两个 for 循环,还是我应该分别执行它们?
你在一个数组中....试图将数组作为字符串回显。在循环中做 echo( $res= array_shift($_SESSION['hostName'])?$res:'';
$label
有意义吗?
而不是:
while ($row = mysqli_fetch_assoc($result)) {
$label[]=$row['cable'];
}
for ($i=0, $n=0; $i<count($label), $n<count($_SESSION['hostName']); $i++, $n++){
$_SESSION['hostName'][$n]=$label[$i];
}
为什么不是一个循环而不是两个循环:
// Clear old hostnames so you don't end up with duplicates
$_SESSION['hostName'] = array();
while ($row = mysqli_fetch_assoc($result)) {
$_SESSION['hostName'][] = $row['cable'];
}
在 HTML 中输出时,您可能希望遍历数组:
<?php
foreach($_SESSION['hostName'] as $hostname) {
?>
<tr>
<td>
<input name="host[]" class="field" type="text" size="15" value="<?= $hostname ?>" />
</td>
</tr>
<?php
}
?>
我写了一个表单,其中有 10 个相同的输入,存储在一个数组中以循环遍历并相应地操作数据。输入的表格示例:
<form id="sanFiber" action="insert.php" method="post">
<table class="frame">
<tr>
<td><input name="host[]" class="field" type="text" size="15"
<?php if(isset($_SESSION['hostName'])){ echo "value='
".$_SESSION['hostName']."'";}?> /></td>
</tr>
<tr>
<td><input name="host[]" class="field" type="text" size="15"
<?php if(isset($_SESSION['hostName'])){ echo"value='".$_SESSION['hostName']."'";}?> /></td>
</tr>
...
</form>
我已经能够创建一个 for 循环以将新值插入数据库中现有的 table,但是,我在尝试以相同方式执行 Select 查询时遇到了问题因为这些值不是预先存在的。我试过的循环只返回了第一个值。冲突是我必须循环会话数组和在数据库中找到的行。 $row 值的 for 循环部分工作得很好。会话循环是我的问题所在。我的Select查询和for循环如下:
<?php
include ("connect.php");
session_start();
$query = "SELECT * FROM cable_request_san_fiber_detail WHERE cable_request_id = '".$id."'";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
$label[]=$row['cable'];
}
for ($i=0, $n=0; $i<count($label), $n<count($_SESSION['hostName']); $i++, $n++){
$_SESSION['hostName'][$n]=$label[$i];
}
header('Location:Table.php');
$conn->close();
?>
在我的 for 循环中,我结合了两种不同的循环:一种用于计算和遍历所有会话变量,另一种用于遍历数据库 table 中的所有行。有什么方法可以同时正确执行两个 for 循环,还是我应该分别执行它们?
你在一个数组中....试图将数组作为字符串回显。在循环中做 echo( $res= array_shift($_SESSION['hostName'])?$res:'';
$label
有意义吗?
而不是:
while ($row = mysqli_fetch_assoc($result)) {
$label[]=$row['cable'];
}
for ($i=0, $n=0; $i<count($label), $n<count($_SESSION['hostName']); $i++, $n++){
$_SESSION['hostName'][$n]=$label[$i];
}
为什么不是一个循环而不是两个循环:
// Clear old hostnames so you don't end up with duplicates
$_SESSION['hostName'] = array();
while ($row = mysqli_fetch_assoc($result)) {
$_SESSION['hostName'][] = $row['cable'];
}
在 HTML 中输出时,您可能希望遍历数组:
<?php
foreach($_SESSION['hostName'] as $hostname) {
?>
<tr>
<td>
<input name="host[]" class="field" type="text" size="15" value="<?= $hostname ?>" />
</td>
</tr>
<?php
}
?>