¿Cómo conservar el estado de una casilla de verificación después de la validación del lado del servidor en php?

Tengo un formulario con varios campos (Nombre, email, contraseña, etc.). También tiene un conjunto de 5 casillas de verificación. Como tengo que actualizar una base de datos, prefiero hacer la validación del lado del servidor y estoy usando php.

Si ocurre un error de validación, el error se muestra en la parte superior de la página junto con el formulario y los datos ingresados ​​previamente en los campos de texto. No puedo conservar el estado de las casillas de verificación y los botones de opción. Todos vuelven a no estar seleccionados. ¿Qué debo hacer para conservar el estado de las casillas de verificación y los botones de opción?

El formulario se parece a...:

    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']?>"/>

preguntado el 12 de junio de 12 a las 20:06

2 Respuestas

De lo que estás hablando es de Sticky Forms. Puede implementar formularios adhesivos de muchas maneras, mi elección es usar la sesión. Si hay un error en su validación, simplemente descargue todo en sus datos POST en la sesión. En la página de su formulario, verifique si el valor está establecido en la sesión y establezca el valor predeterminado del formulario, contrólelo si es:

Página de validación:

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

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

Página de formulario:

<?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]);
?>

Respondido el 13 de junio de 12 a las 13:06

Agrega una checked atribuya a cualquier casilla de verificación cuyo valor se encuentre en los datos enviados.

Respondido el 12 de junio de 12 a las 20:06

si hago eso, el botón de reinicio no podrá cambiar el estado de estas casillas de verificación. - RK Poddar

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.