表单$ _POST错误,动态字段

时间:2013-03-20 13:31:38

标签: php jquery html

我有一个我无法弄清楚的错误......

我的网页上有一个表单,用户可以添加一些新的输入字段。如果用户正在提交表单,那么当php文件处理时,可选字段为空,为什么?

HTML:

        <form method="post" action="newRequest.php">
            <input type="text" name="title" />
            <input type="hidden" name="fname" value="0" />
            <input type="checkbox" name="fname" value="1"/>
            <input type="hidden" name="ename" value="0" />
            <input type="checkbox" name="ename" value="1" />
            <input type="hidden" name="seat" value="0" />
            <input type="checkbox" name="seat" value="1" />
            <input type="hidden" name="fields" value="0" />
            <input type="text" id="fields" name="fields" />
            <input type="submit" />
        </form>

PHP:

if (strlen($_POST[title]) > 2) {
    $toDb[title] = $_POST[title];
} else {
    error('title');
}

$toDb[fname] = $_POST[fname];
$toDb[ename] = $_POST[ename];
$toDb[seat] = $_POST[seat];

if ($_POST[fields] > 0) {
    $i = 0;
    while ($i < $_POST[fields]) {
        $toDb[optional][$i] = $_POST[optional-$i];
        $i++;
    }
    $toDb[optional] = serialize($toDb[optional]);
} else {
    $toDb[optional] = 0;
}
newEvent($toDb,$dbh);

JQuery正在添加动态字段:

$(document).ready(function() {
    $('#fields').focusout(function(){

        var fields = $('#fields').val();
        var i = 0;

        while(i < fields) {
            $('#fields').after("Valfritt fält "+(i+1)+":<input type='text' name='optional"+i+"' />");
            i++;
        }

    })
})

3 个答案:

答案 0 :(得分:1)

您应引用数组索引。它应该是

 $toDb['optional'][$i] = $_POST['optional'.$i];

答案 1 :(得分:1)

$ _POST

中缺少逗号
$toDb['fname'] = $_POST['fname'];
$toDb['ename'] = $_POST['ename'];
$toDb['seat'] = $_POST['seat'];

这是您修改后的代码

if (strlen($_POST['title']) > 2) {
    $toDb['title'] = $_POST['title'];
} else {
    error('title');
}

$toDb['fname'] = $_POST['fname'];
$toDb['ename'] = $_POST['ename'];
$toDb['seat'] = $_POST['seat'];

if (count($_POST) > 0) {
    $i = 0;
    while ($i < count($_POST)) {
        $toDb['optional'][$i] = $_POST['optional-'.$i];
        $i++;
    }
    $toDb['optional'] = serialize($toDb['optional']);
} else {
    $toDb['optional'] = 0;
}
newEvent($toDb,$dbh);

还可以使用count()来检查$ _POST是否具有值&gt; 0

答案 2 :(得分:0)

我遇到了同样的问题,我用Javascript解决了这个问题:

add a new text field every time a button is pressed