0

我有一个 5x2 HTML 表:http: //jsfiddle.net/duxTU/

  • 表格附在表格中。
  • 提交表单后,它会重定向到同一页面
  • 输入字段值存储在关联数组中
  • 这些值显示在最初输入它们的各个字段中。

代码:

<?php 
if(isset($_POST['submit'])) {
    $contacts_array  array(
        $_POST["name1"] => $_POST['name2'],
        $_POST["name3"] => $_POST['name4'],
        $_POST["name5"] => $_POST['name6'],
        $_POST["name7"] => $_POST['name8'],
        $_POST["name9"] => $_POST['name10']);

$array_filtered=array_filter($contacts_array);  
$arrayKeys = array_keys($array_filtered);
$arrayValues = array_values($array_filtered);
}
?>

该数组已被过滤以忽略可能潜入的空值。

现在,如何使 HTML 表单显示值?我知道粘性表单,但由于我必须保持表单大小不变(5x2),我正在尝试使用类似于以下的代码

<input type="text" value="<?php echo $arrayKeys[0]; ?> ">  
<input type="text" value="<?php echo $arrayValues[0]; ?> ">

... 直到 $arrayKeys[4] 和 $arrayValues[4],分别。

这给了我未定义的偏移量,例如$arrayKeys[5]未设置,因为在提交之前没有在相应的表单列中输入任何值。

这个问题有什么解决办法??

4

2 回答 2

0

也许这对你有用:

<?php
    function getPost($param){
        return isset($_POST[$param])?$_POST[$param]:"";
    }
?>
<form action="#" method="post">
    <table>
        <tr>
            <td>Name</td><td>Age</td>
        </tr>    
        <tr>
            <td><input type="text"  name="name1" value="<?= getPost("name1") ?>"></td>
            <td><input type="text"  name="name2" value="<?= getPost("name2") ?>"></td>
        </tr>
        <tr>
            <td><input type="text"  name="name3" value="<?= getPost("name3") ?>"></td>
            <td><input type="text"  name="name4" value="<?= getPost("name4") ?>"></td>
        </tr>
        <tr>
            <td><input type="text"  name="name5" value="<?= getPost("name5") ?>"></td>
            <td><input type="text"  name="name6" value="<?= getPost("name6") ?>"></td>
        </tr>
        <tr>
            <td><input type="text"  name="name7" value="<?= getPost("name7") ?>"></td>
            <td><input type="text"  name="name8" value="<?= getPost("name8") ?>"></td>
        </tr><tr>
            <td><input type="text"  name="name9" value="<?= getPost("name9") ?>"></td>
            <td><input type="text"  name="name10" value="<?= getPost("name10") ?>"></td>
        </tr>
        <tr>
            <td><input type="submit" value="submit" name="submit"></td>
        </tr>
    </table>
</form>

创建 getPost 助手是因为我不想每次都输入条件。

您可以过滤掉您正在执行的任何其他表单处理的空值。

于 2013-07-10T06:37:39.927 回答
0

如果您只想显示值, aforeach会很好用:

foreach ($array_filtered as $k=>$v) {
   echo "<input type='text' value='".$k."'>";
   echo "<input type='text' value='".$v."'>";
}

foreach循环遍历一个数组。$k是当前密钥。$v是当前值。

当然,这应该在您的表单 HTML 中。

于 2013-07-10T06:28:31.883 回答