0

よくわからないエラーが出ました…

私のウェブページには、ユーザーがいくつかの新しい入力フィールドを追加できるフォームがあります。ユーザーがフォームを送信している場合、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 に答える