0

さまざまなフィールド (名前、電子メール、パスワードなど) を含むフォームがあります。また、5 つのチェックボックスのセットもあります。データベースを更新する必要があるため、サーバー側の検証を行うことを好み、php を使用しています。

検証エラーが発生した場合、ページの上部にエラーが表示され、フォームと以前にテキスト フィールドに入力されたデータが表示されます。チェックボックスとラジオ ボタンの状態を保持できません。すべてが選択されていない状態に戻ります。チェックボックスとラジオボタンの状態を保持するにはどうすればよいですか?

フォームは次のようになります..:

    Password:<input type="text" name="password" size="16" maxlength="9" value="<?php echo $_POST['password']?>"/>
    Retype Password:<input type="text" name="repassword" value="<?php echo $_POST['repassword']?>"/>
    Select:<br />
    <input type="checkbox" name="option1" value="on1" id="opt1"/> <label for="opt1">Option1</label><br />
    <input type="checkbox" name="option2" value="on2" id="opt2"/> <label for="opt2">Option2</label><br />
    <input type="checkbox" name="option3" value="on3" id="opt3"/> <label for="opt3">Option3</label><br />
    <input type="checkbox" name="option4" value="on4" id="opt4"/> <label for="opt4">Option4</label><br />
    <input type="checkbox" name="option5" value="on5" id="opt5"/> <label for="opt5">Option5</label><br />
    Mobile No:<input type="text" name="mobileno" maxlength="10" value="<?php echo $_POST['mobileno']?>"/>
4

2 に答える 2

1

あなたが話しているのはスティッキーフォームです。スティッキー フォームはさまざまな方法で実装できますが、私の選択はセッションを使用することです。検証でエラーが発生した場合は、POST データのすべてをセッションにダンプするだけです。フォーム ページで、セッションで値が設定されているかどうかを確認し、次の場合はフォーム コントロールのデフォルト値を設定します。

検証ページ:

<?php
    session_start();
    if(/** some error condition **/) {
        foreach($_POST as $k => $v)
            $_SESSION['sticky_'.$k] = $v;

        header('Location: http://site.com/yourform.php');
        exit();
    }
?>

フォームページ:

<?php session_start(); ?>

<input type = "checkbox" name = "option1" value = "on1" id = "opt1" <?php 
    if(isset($_SESSION['sticky_option1'])) 
        echo('checked = "checked"); 
?>/>

Example TextBox: <input type = "text" name = "textBoxName" <?php 
    if(isset($_SESSION['sticky_textBoxName']))
        echo('value = "' . $_SESSION['sticky_textBoxName'] . '"');
?>

...

<?php
    // Erase the POST values from session after the HTML is constructed.
    foreach($_SESSION as $k => $v)
        if( strpos($k, 'sticky_' !== false )
            unset($_SESSION[$k]);
?>
于 2012-06-12T19:59:02.360 に答える
0

checked送信されたデータに値があるチェックボックスに属性を追加します。

于 2012-06-12T19:52:29.257 に答える