entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Validar checkbox

Tengo un formulario que contiene varias checkbox con distintos valores. Necesito que al darle a enviar en el formulario, los checkboxes que han sido checkeados se guarden en la base de datos que utilizo con phpMyAdmin.

Este es mi html:

              <div class="row">
                <div class="col-md-12">
                  <div class="col-md-2">
                    <br><label class="container">Uno
                        <input type="checkbox" name="checks" value="1"> <br>
                        <span class="checkmark"></span>

                    </label>
                    <label class="container">Dos
                        <input type="checkbox" name="checks" value="2"> <br>
                        <span class="checkmark"></span>
                    </label>
                    <label class="container">Tres
                        <input type="checkbox" name="checks" value="3"> <br>
                        <span class="checkmark"></span>
                    </label>
                  </div>
          <div class="col-md-2">
                    <br><label class="container">Cuatro
                        <input type="checkbox" name="checks" value="4"> <br>
                        <span class="checkmark"></span>

                    </label>
                    <label class="container">Cinco
                        <input type="checkbox" name="checks" value="5"> <br>
                        <span class="checkmark"></span>
                    </label>
                    <label class="container">Seis
                        <input type="checkbox" name="checks" value="6"> <br>
                        <span class="checkmark"></span>
                    </label>
                  </div>

Php que guarda los datos

<?php
    //conectamos Con el servidor
    $host="localhost";
    $user="root";
    $pass="";
    $db="prueba";

    $con = mysqli_connect($host,$user,$pass,$db) or die ("Problemas al conectar");
    mysqli_select_db($con,$db) or die ("Problemas al conectar con la base de datos");

    //recuperar las variables
    $nombre=$_POST['nombre'];
    $checks=$_POST['checks'];

    //Hacer secuencia sql
    $sql="INSERT INTO datos (nombre, checks) VALUES ('{$nombre}','{$checks}')";

    //ejecutamos la sentencia de sql
    $ejecutar=mysqli_query($con,$sql);

    //verificamos la ejecucion
    if(!$ejecutar){

        echo"Hubo Algun Error";

    }else{
        echo"Datos Guardados Correctamente<br><a href='index.html'>Volver</a>";
    }

    if (isset($_POST['formulario'])) {
        if (isset($_POST['checks']) && $_POST['checks'] == '1')
    if (isset($_POST['checks']) && $_POST['checks'] == '2')
    if (isset($_POST['checks']) && $_POST['checks'] == '3')
    if (isset($_POST['checks']) && $_POST['checks'] == '4')
    if (isset($_POST['checks']) && $_POST['checks'] == '5')
    if (isset($_POST['checks']) && $_POST['checks'] == '6')
    }
?>

Php que muestra los datos

<?php 

    //hacemos la conexion para la base de datos:
    $con= mysqli_connect('localhost','root','');

    //verificamos la conexion
    if(!$con){

        echo"No Se Encontro El Servidor";

    }else{

        $db= mysqli_select_db('prueba'); //nombre bbdd
    //verificamos la base de datos
        if(!$db){

            echo"No Se Encontro La Base De Datos";

        }
    }
    //Se Hace la sentencia sql:
    $sql="SELECT * FROM datos"; //nombre tabla

    //ejecutamos la sentencia de slq:
    $ejecutar=mysqli_query($sql);

    //traemos todos los valores en un array:
    $datos=mysqli_fetch_array($ejecutar);

    //imprimimos los datos de manera dinamica
    echo "<table border='1'>";
    echo"<tr>";
    echo "<th align='center'><b>Nombre</th>";
    echo "<th align='center'><b>Checks</th>";
    echo"</tr>";
    for($i=0; $i<$datos; $i++){
        echo"<tr><td>$datos[0]</td>";
        echo"<td>$datos[1]</td>";
        echo"<td>$datos[2]</td>";
        echo"</tr>";
        $datos=mysqli_fetch_array($ejecutar);
    }
    echo"</table>";
?>

1 Respuesta

4votos

KevinconK Puntos1520

Hola buenos días,
Primero antes de validar varios checkbox, tienes que saber como validar uno:
aqui tengo mi check en un formulario.

<input type="checkbox" name="check">

y para validarlo:

$check = ($_POST['check'] == true)?"activo":"inactivo";

cuando das checked a un checkbox , este se guarda con un valor "true", en caso de no darle a checked, el valor es vacio.

ahora para validar varios es necesario usar un ciclo for, donde primero cuentes la cantidad de checkbox que tengas, por ejemplo:

Pero primero tienes que poner los checkbox en el formulario de esta manera.
El corchete sirve para crear un array y almacenar todos los valores que contengan el mismo nombre.

<input type="checkbox" name="check[]">
<input type="checkbox" name="check[]">
$check = $_POST['check'];
//Cuento la cantidad de checks que tengo.
$cantidad2 = count($check);
Inicio el ciclo for en 0 (muy importante)

for ($i=0; $i < $cantidad2; $i++) { 
    //valido si el check esta checked.
    if($check[$i] == true){
        //Aquí harías la inserción a la bd
            echo "ok";
    }
}

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta