0

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

Om 我的网页有一个表单,用户可以向其中添加一些新的输入字段。如果用户正在提交表单,那么当 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++;
        }

    })
})
4

3 回答 3

1

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

 $toDb['optional'][$i] = $_POST['optional'.$i];
于 2013-03-20T13:38:14.207 回答
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 的值是否 > 0。

于 2013-03-20T13:38:18.503 回答
0

我遇到了同样的问题,我使用 Javascript 解决了它,如下所示:

每次按下按钮时添加一个新的文本字段

于 2013-03-20T13:33:48.330 回答