Foros del Web » Programando para Internet » PHP »

Validar campos con php y mostrarlos en el formulario

Estas en el tema de Validar campos con php y mostrarlos en el formulario en el foro de PHP en Foros del Web. Muy buenas a todos, lo que estoy intentando aplicar en mi formulario es una validación de los input, necesito que al menos haya un campo ...
  #1 (permalink)  
Antiguo 19/02/2016, 13:24
 
Fecha de Ingreso: febrero-2016
Ubicación: Mallorca
Mensajes: 5
Antigüedad: 8 años, 8 meses
Puntos: 0
Pregunta Validar campos con php y mostrarlos en el formulario

Muy buenas a todos, lo que estoy intentando aplicar en mi formulario es una validación de los input, necesito que al menos haya un campo seleccionado de cada punto para proceder con el envío.

Este es mi formulario:

Código HTML:
Ver original
  1. <form name="encuesta" method="post" action="encuesta1.php">
  2.       <h3 class="encuesta1">1. Soy:</h3>
  3.       <label><input type="checkbox" value="estudiante" name="opcion1[]" />Estudiante</label>
  4.       <label><input type="checkbox" value="academico" name="opcion1[]" />Académico/ca</label>
  5.       <label><input type="checkbox" value="investigador" name="opcion1[]" />Investigador/a</label>
  6.       <label><input type="checkbox" value="profesional" name="opcion1[]"/>Profesional</label>
  7.       <label><input type="checkbox" value="autonomo" name="opcion1[]"/>Autónomo/a</label>
  8.       <label><input type="checkbox" value="empleado" name="opcion1[]"/>Empleado/a</label>
  9.       <label><input type="checkbox" value="funcionario" name="opcion1[]"/>Funcionario/a</label><br><br>
  10.       <h3 class="encuesta1">2. Participo/tengo experiencia en trabajos comunitarios</h3>
  11.       <label><input type="radio" value="si" name="opcion2[]"/>Si</label>
  12.       <label><input type="radio" value="no" name="opcion2[]"/>No</label><br><br>
  13.       <h3 class="encuesta1">Si lo hace desde una ONG (favor indicar el nombre y demás datos):</h3>
  14.       <textarea name="expong" style="width:90%"></textarea><br><br>
  15.       <h3 class="encuesta1">3. Me gustaría participar en proyectos comunitarios locales e internacionales.</h3>
  16.       <label><input type="radio" value="asiduamente" name="opcion3[]"/>Asiduamente</label>
  17.       <label><input type="radio" value="esporadicamente" name="opcion3[]"/>Esporádicamente</label>
  18.       <label><input type="radio" value="tal ves" name="opcion3[]"/>Tal vez</label><br><br>
  19.       <h3 class="encuesta1">4. La responsabilidad social individual/colectiva debería estar en los programas educativos.</h3>
  20.       <label><input type="radio" value="Mas" name="opcion4[]"/>Más</label>
  21.       <label><input type="radio" value="Mucho mas" name="opcion4[]"/>Mucho más</label>
  22.       <label><input type="radio" value="No se" name="opcion4[]"/>No se</label>
  23.       <label><input type="radio" value="No" name="opcion4[]"/>No</label><br><br>
  24.       <h3 class="encuesta1">5. Los distintos colectivos sociales deberían ser consultados por el Estado.</h3>
  25.       <label><input type="radio" value="Igual que ahora" name="opcion5[]"/>Igual que ahora</label>
  26.       <label><input type="radio" value="Mas" name="opcion5[]"/>Más</label>
  27.       <label><input type="radio" value="Mucho mas" name="opcion5[]"/>Mucho más</label>
  28.       <label><input type="radio" value="No se" name="opcion5[]"/>No se</label><br><br>
  29.       <h3 class="encuesta1">6. Conozco la labor de ARC•PEACE.</h3>
  30.       <label><input type="checkbox" value="No" name="opcion6[]"/>No</label>
  31.       <label><input type="checkbox" value="Algo" name="opcion6[]"/>Algo</label>
  32.       <label><input type="checkbox" value="Bastante" name="opcion6[]"/>Bastante</label>
  33.       <label><input type="checkbox" value="Deseo conocer mas" name="opcion6[]"/>Deseo conocer más</label>
  34.       <label><input type="checkbox" value="Simpatizo" name="opcion6[]"/>Simpatizo</label>
  35.       <label><input type="checkbox" value="Soy miembro" name="opcion6[]"/>Soy miembro</label><br><br>
  36.       <h3 class="encuesta1">7. Conozco la labor de Arquitectos Sin Fronteras.</h3>
  37.       <label><input type="checkbox" value="No" name="opcion7[]"/>No</label>
  38.       <label><input type="checkbox" value="Algo" name="opcion7[]"/>Algo</label>
  39.       <label><input type="checkbox" value="Bastante" name="opcion7[]"/>Bastante</label>
  40.       <label><input type="checkbox" value="Deseo conocer mas" name="opcion7[]"/>Deseo conocer más</label>
  41.       <label><input type="checkbox" value="Simpatizo" name="opcion7[]"/>Simpatizo</label>
  42.       <label><input type="checkbox" value="Soy miembro" name="opcion7[]"/>Soy miembro</label><br><br>
  43.       <h3 class="encuesta1">8. Conozco la labor de ARC•PEACE Iberoamérica</h3>
  44.       <label><input type="checkbox" value="No" name="opcion8[]"/>No</label>
  45.       <label><input type="checkbox" value="Algo" name="opcion8[]"/>Algo</label>
  46.       <label><input type="checkbox" value="Bastante" name="opcion8[]"/>Bastante</label>
  47.       <label><input type="checkbox" value="Deseo conocer mas" name="opcion8[]"/>Deseo conocer más</label>
  48.       <label><input type="checkbox" value="Simpatizo" name="opcion8[]"/>Simpatizo</label>
  49.       <label><input type="checkbox" value="Soy miembro" name="opcion8[]"/>Soy miembro</label><br><br>
  50.       <h3 class="encuesta1">9. Tengo información sobre Cambio Climático.</h3>  
  51.       <label><input type="checkbox" value="Bastante" name="opcion9[]"/>No</label>
  52.       <label><input type="checkbox" value="Deseo conocer mas" name="opcion9[]"/>Alguna</label>
  53.       <label><input type="checkbox" value="Simpatizo" name="opcion9[]"/>Bastante</label>
  54.       <label><input type="checkbox" value="Soy miembro" name="opcion9[]"/>Deseo conocer más</label><br><br>
  55.       <h3 class="encuesta1">10. Tengo información sobre HABITAT III.</h3>  
  56.       <label><input type="checkbox" value="Bastante" name="opcion10[]"/>No</label>
  57.       <label><input type="checkbox" value="Deseo conocer mas" name="opcion10[]"/>Alguna</label>
  58.       <label><input type="checkbox" value="Simpatizo" name="opcion10[]"/>Bastante</label>
  59.       <label><input type="checkbox" value="Soy miembro" name="opcion10[]"/>Deseo conocer más</label><br><br>
  60.       <label><input type="submit" value="Enviar" name="submit"/></label>
  61. </form>

encuesta1.php:

Código PHP:
$host_name  "...";
$user_name  "...";
$password   "...";
$database   "...";

$connect=new mysqli($host_name$user_name$password$database);
    if (
$connect->connect_errno){
        echo 
"Error al conectar con servidor MySQL: " mysqli_connect_error();
    } 
    
$soy '';
if ( isset(
$_POST['opcion1']) ){
    
$soy implode (' ' $_POST['opcion1']);
}

$participo '';
if ( isset(
$_POST['opcion2']) ){
    
$participo implode (' ' $_POST['opcion2']);
}

$expong $_POST['expong'];

$megustaria '';
if ( isset(
$_POST['opcion3']) ){
    
$megustaria implode (' ' $_POST['opcion3']);
}

$responsabilidadsocial '';
if ( isset(
$_POST['opcion4']) ){
    
$responsabilidadsocial implode (' ' $_POST['opcion4']);
}

$consultadosestados '';
if ( isset(
$_POST['opcion5']) ){
    
$consultadosestados implode (' ' $_POST['opcion5']);
}

$sobrearcpeace '';
if ( isset(
$_POST['opcion6']) ){
    
$sobrearcpeace implode (' ' $_POST['opcion6']);
}

$sobreasf '';
if ( isset(
$_POST['opcion7']) ){
    
$sobreasf implode (' ' $_POST['opcion7']);
}

$sobrearcpi '';
if ( isset(
$_POST['opcion8']) ){
    
$sobrearcpi implode (' ' $_POST['opcion8']);
}

$infocambioclimatico '';
if ( isset(
$_POST['opcion9']) ){
    
$infocambioclimatico implode (' ' $_POST['opcion9']);
}

$habitatIII '';
if ( isset(
$_POST['opcion10']) ){
    
$habitatIII implode (' ' $_POST['opcion10']);
}    

if (isset(
$_POST["submit"])){
    
    if (empty(
$_POST['opcion1'])) {
    echo 
"Debe seleccionar almenos 1 opcion del punto 1:"
        
}
else{
    
mysqli_query ($connect,"INSERT INTO encuesta1 (SOY, PARTICIPO, EXPONG, MEGUSTARIA, RESPONSABILIDADSOCIAL, CONSULTADOSESTADOS, SOBREARCPEACE, SOBREASF, SOBREARCPI, OTRAONG, INFOCAMBIOCLIMATICO, HABITATIII) VALUES('$soy', '$participo', '$expong', '$megustaria', '$responsabilidadsocial', '$consultadosestados', '$sobrearcpeace', '$sobreasf', '$sobrearcpi', '$otraong', '$infocambioclimatico', '$habitatIII')");
}
}

mysqli_close ($connect); 
Estoy usando
Código PHP:
if (empty($_POST['opcion1'])) {echo "Debe seleccionar almenos 1 opcion del punto 1:"
para validar el primer punto del formulario (que no esté vacío). Hasta aquí va todo bien, lo que ocurre es que deseo que el mensaje de error se visualice en algún lugar del formulario (abajo,arriba,etc) y no en encuesta1.php. Si existe la forma de hacerlo con php mejor, pero si no me queda otra opción también me vale javascript. Cómo lo hago?
  #2 (permalink)  
Antiguo 19/02/2016, 14:33
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 9 meses
Puntos: 21
Respuesta: Validar campos con php y mostrarlos en el formulario

El atributo "required" puede validar si algún checkbox está vacío pero sólo de forma individual, para hacerlo en grupo podrías adaptar la siguiente comprobación con jquery a tu formulario:
Código HTML:
Ver original
  1. <form id="formulario">
  2.     <div class="requerido grupo1">
  3.         <input type="checkbox" name="opcion1[]">
  4.         <input type="checkbox" name="opcion1[]">
  5.         <input type="checkbox" name="opcion1[]"><br>
  6.     </div>
  7.     <div class="requerido grupo2">
  8.         <input type="radio" name="opcion2[]">
  9.         <input type="radio" name="opcion2[]">
  10.         <input type="radio" name="opcion2[]">
  11.     </div>
  12.     <input type="submit" value="Enviar">
  13. </form>
  14.  
  15. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  16.  
  17.  
  18. $('#formulario').on('submit', function(e){
  19.     if($('div.requerido.grupo1 :checkbox:checked').length === 0) {
  20.         e.preventDefault();
  21.         alert('Opción 1 requerida');
  22.     }
  23.     if($('div.requerido.grupo2 :radio:checked').length === 0) {  
  24.         e.preventDefault();
  25.         alert('Opción 2 requerida');
  26.     }    
  27. });
  28.  
Saludos.

Última edición por carlillos; 19/02/2016 a las 14:43
  #3 (permalink)  
Antiguo 21/02/2016, 13:48
 
Fecha de Ingreso: febrero-2016
Ubicación: Mallorca
Mensajes: 5
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Validar campos con php y mostrarlos en el formulario

Muy buenas Carlillos, gracias por responder tan rápido!
He probado tu sugerencia, pero no logro que funcione. En cambio estoy utilizando Jquery en el archivo php que procesa el formulario. He intentado de varias formas asegurarme que Wordpress no tenga problemas con Jquery, dado que mi formulario está una entrada de Wordpress.
Te cuento lo que probé como alternativas para poder validar, en encuesta1.php:

Código PHP:
if (isset($_POST["submit"])){
    
    
if (empty(
$_POST['opcion1'])) {
    echo 
"<script type=\"text/javascript\">
           alert('Debes rellenar almenos 1 opci\u00F3n de cada punto.');
           history.go(-1);
    </script>"
;
}
else{
    
mysqli_query ($connect,"INSERT INTO encuesta1 (SOY, PARTICIPO, EXPONG, MEGUSTARIA, RESPONSABILIDADSOCIAL, CONSULTADOSESTADOS, SOBREARCPEACE, SOBREASF, SOBREARCPI, OTRAONG, INFOCAMBIOCLIMATICO, HABITATIII) VALUES('$soy', '$participo', '$expong', '$megustaria', '$responsabilidadsocial', '$consultadosestados', '$sobrearcpeace', '$sobreasf', '$sobrearcpi', '$otraong', '$infocambioclimatico', '$habitatIII')");
}
}

mysqli_close ($connect); 
Cuando lo aplico en todos los inputs funciona bien, si un usuario entra y no rellena al menos una opción de cada punto se muestra la alerta y al aceptar regresa al formulario tal y como los tenía. Pero lo curioso es que aún así me inserta en la base de datos el formulario. Se ejecuta el else. No entiendo.
En cambio como yo lo tenía antes:
Código PHP:
if (empty($_POST['opcion1'])) {
    echo 
"Debe seleccionar almenos 1 opcion del punto 1:";

No se insertan en la base de datos, pero se muestran en el archivo enuesta1.php que es lo que no quiero. Deseo validar en el mismo formulario con php o con alertas. Porque queda fea la validación en una pág en blanco sin formato. Cómo lo hago? Saludos!
  #4 (permalink)  
Antiguo 22/02/2016, 07:10
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años
Puntos: 123
Respuesta: Validar campos con php y mostrarlos en el formulario

A ver la doble validación JavaScript y PHP no son excluyentes, es más es recomendable. Así que por qué no utilizar ambas.
Prueba validando con count ya que opcion1 es un array
Código PHP:
Ver original
  1. if (!isset($_POST['opcion1']) OR count ($_POST['opcion1'])<1 ) {
  2.     echo "Debe seleccionar almenos 1 opcion del punto 1:";
  3. }

Última edición por xerifandtomas; 22/02/2016 a las 07:34

Etiquetas: formulario, validacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:36.