粘性形式未定义的偏移量

时间:2013-07-10 06:13:03

标签: php

我有一个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]未设置,因为在提交前没有在相应的表单列中输入任何值。

这个问题的任何解决方案??

2 个答案:

答案 0 :(得分:0)

如果您只是想显示值,foreach会很有效:

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

foreach遍历一个数组。 $k是当前的关键。 $v是当前值。

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

答案 1 :(得分: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助手,因为我不想每次都要输入条件。

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