使用for循环获取会话数组和现有表值的值

时间:2015-04-28 00:19:04

标签: php arrays loops session-variables

我有一个包含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循环来在数据库的现有表中插入新值,但是,我在尝试以相同的方式执行Select查询时遇到了麻烦,因为这些值不是预先存在的。我尝试的循环只返回第一个值。冲突是我必须循环Session数组和数据库中找到的行。 $ row值的for循环部分工作得很好。 Session循环是我的问题所在。我的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循环中,我结合了两个不同的循环:一个用于计数和循环遍历所有Session变量,另一个用于循环遍历数据库中表中的所有行。有没有办法正确地同时做两个循环或我应该单独执行它们?

2 个答案:

答案 0 :(得分:0)

你在一个数组中....试图将数组作为一个字符串回显。在循环中执行echo( $res= array_shift($_SESSION['hostName'])?$res:'';

答案 1 :(得分:0)

是否有$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
}
?>