Collect checkbox values and insert them into a table using php

1

I would like to know how the checkbox parameters are collected in PHP.

I have this form in which there are several fields and they all have order and visualization checkbox, if it is checked I want it to be "true" if not "false" and then put them in a MySQL table:

<form method="post" action="formulario-marcas.php">
  <p>
    <label>Nombre: </label><input type="text" name="nombre" id="nombre" required></input>
  </p>
  <p>
    <label>Dirección: <input type="text" name="direccion" id="direccion"></input></label>
    <input name="orden-direccion" type="checkbox" id="orden-direccion" value="0">Orden
    <input name="visualizar-direccion" type="checkbox" id="visualizar-direccion">Visualizar
  </p>
  <p>
    <label>CP: <input type="number" name="cp" id="cp"></input></label>
    <input type="checkbox" name="orden-cp" id="orden-cp">Orden
    <input type="checkbox" name="visualizar-cp" id="visualizar-cp">Visualizar
  </p>
  <p>
    <label>Localidad: <input type="text" name="localidad" id="localidad"></input></label>
    <input type="checkbox" name="orden-localidad" id="orden-localidad">Orden
    <input type="checkbox" name="visualizar-localidad" id="visualizar-localidad">Visualizar
  </p>
  <p>
    <label>Provincia: <input type="text" name="provincia" id="provincia"></input></label>
    <input type="checkbox" name="orden-provincia" id="orden-provincia">Orden
    <input type="checkbox" name="visualizar-provincia" id="visualizar-provincia">Visualizar
  </p>
  <p>
    <label>Teléfono1: <input type="number" name="telefono1" id="telefono1"></input></label>
    <input type="checkbox" name="orden-tlf1" id="orden-tlf1">Orden
    <input type="checkbox" name="visualizar-tlf1" id="visualizar-tlf1">Visualizar
  </p>
  <p>
    <label>Teléfono2: <input type="number"  name="telefono2" id="telefono2"></input></label>
    <input type="checkbox" name="orden-tlf2" id="orden-tlf2">Orden
    <input type="checkbox" name="visualizar-tlf2" id="visualizar-tlf2">Visualizar
  </p>
  <p>
    <label>Imagen: <input type="text" name="imagen" id="imagen"></input></label>
    <input type="checkbox" name="orden-imagen" id="orden-imagen">Orden
    <input type="checkbox" name="visualizar-imagen" id="visualizar-imagen">Visualizar
  </p>
  <p>
    <label>Email: <input type="text" name="email" id="email"></input></label>
    <input type="checkbox" name="orden-email" id="orden-email">Orden
    <input type="checkbox" name="visualizar-email" id="visualizar-email">Visualizar
  </p>
  <input type="submit" value="Enviar" />
</form>

And in PHP I have this, it's very ugly, but I could not think of another way to do it:

<?php
    //// Recoger checkbox orden ////

    $_POST['orden-direccion'] = $ordendireccion;
    $_POST['orden-cp'] = $ordencp;
    $_POST['orden-localidad'] = $ordenlocalidad;
    $_POST['orden-provincia'] = $ordenprovincia;
    $_POST['orden-tlf1'] = $ordentlf1;
    $_POST['orden-tlf2'] = $ordentlf2;
    $_POST['orden-imagen'] = $ordenimagen;
    $_POST['orden-email'] = $ordenemail;

    if($ordendireccion){
        $ordendireccion = 'Verdadero';
    }else{
        $ordendireccion = 'Falso';
        }

    if($ordencp){
        $ordencp = 'Verdadero';
    }else{
        $ordencp = 'Falso';
        }

    if($ordenlocalidad){
        $ordenlocalidad = 'Verdadero';
    }else{
        $ordenlocalidad = 'Falso';
        }   

    if($ordenprovincia){
        $ordenprovincia = 'Verdadero';
    }else{
        $ordenprovincia = 'Falso';
        }   

    if($ordentlf1){
        $ordentlf1 = 'Verdadero';
    }else{
        $ordentlf1 = 'Falso';
        }   

    if($ordentlf2){
        $ordentlf2 = 'Verdadero';
    }else{
        $ordentlf2 = 'Falso';
        }   

    if($ordenimagen){
        $ordenimagen = 'Verdadero';
    }else{
        $ordenimagen = 'Falso';
        }

    if($ordenemail){
        $ordenemail = 'Verdadero';
    }else{
        $ordenemail = 'Falso';
        }           

    //// Recoger checkbox visualizar ////

    $_POST['visualizar-direccion'] = $visualizardireccion;
    $_POST['visualizar-cp'] = $visualizarcp;
    $_POST['visualizar-localidad'] = $visualizarlocalidad;
    $_POST['visualizar-provincia'] = $visualizarprovincia;
    $_POST['visualizar-tlf1'] = $visualizartlf1;
    $_POST['visualizar-tlf2'] = $visualizartlf2;
    $_POST['visualizar-imagen'] = $visualizarimagen;
    $_POST['visualizar-email'] = $visualizaremail;

    if($visualizardireccion){
        $visualizardireccion = 'Verdadero';
    }else{
        $visualizardireccion = 'Falso';
        }

    if($visualizarcp){
        $visualizarcp = 'Verdadero';
    }else{
        $visualizarcp = 'Falso';
        }

    if($visualizarlocalidad){
        $visualizarlocalidad = 'Verdadero';
    }else{
        $visualizarlocalidad = 'Falso';
        }   

    if($visualizarprovincia){
        $visualizarprovincia = 'Verdadero';
    }else{
        $visualizarprovincia = 'Falso';
        }   

    if($visualizartlf1){
        $visualizartlf1 = 'Verdadero';
    }else{
        $visualizartlf1 = 'Falso';
        }   

    if($visualizartlf2){
        $visualizartlf2 = 'Verdadero';
    }else{
        $visualizartlf2 = 'Falso';
        }   

    if($visualizarimagen){
        $visualizarimagen = 'Verdadero';
    }else{
        $visualizarimagen = 'Falso';
        }

    if($visualizaremail){
        $visualizaremail = 'Verdadero';
    }else{
        $visualizaremail = 'Falso';
        }


    ////Datos db
    $usuario = "usuario";
    $password = "pass";
    $servidor = "servidor";
    $basededatos = "basedatos";

    ////Crear conexion
    $conexion = mysqli_connect($servidor, $usuario, $password)
    or die("No se ha podido conectar a la base de datos");

    ////Seleccionar db
    $db = mysqli_select_db($conexion, $basededatos)
    or die("uppppss! No se ha podido conectar a la base de datos");

    ////Establecer y realizar consulta
    /*$sql = "INSERT INTO Campos_CFG(Campo, Orden, Visualizar) VALUES ('Dirección','$ordendireccion','$visualizardireccion'),
                                            ('CP','$ordencp','$visualizarcp'),
                                            ('Localidad','$ordenlocalidad','$visualizarlocalidad'),
                                            ('Provincia','$ordenprovincia','$visualizarprovincia'),
                                            ('Teléfono1','$ordentlf1','$visualizartlf1'),
                                            ('Teléfono2','$ordentlf2','$visualizartlf2'),
                                            ('Imagen','$ordenimagen','$visualizarimagen'),
                                            ('Email','$ordenemail','$visualizaremail');";*/
    $resultado = mysqli_query($conexion, $sql);
    mysql_query($sql);
    echo  "INSERT INTO Campos_CFG(Campo, Orden, Visualizar) VALUES ('Dirección','$ordendireccion','$visualizardireccion'),
                                            ('CP','$ordencp','$visualizarcp'),
                                            ('Localidad','$ordenlocalidad','$visualizarlocalidad'),
                                            ('Provincia','$ordenprovincia','$visualizarprovincia'),
                                            ('Teléfono1','$ordentlf1','$visualizartlf1'),
                                            ('Teléfono2','$ordentlf2','$visualizartlf2'),
                                            ('Imagen','$ordenimagen','$visualizarimagen'),
                                            ('Email','$ordenemail','$visualizaremail');";
    ////Cerrar conexion 
    mysqli_close($conexion);
?>

I have done a echo of the insert to see what values the checkboxes gave me and, whether they are checked or not, it makes me "false", it does not work for me. I suppose it will be because collecting the values of the checkboxes is not done that way. How should I do it?

    
asked by RichardSC 27.04.2018 в 11:07
source

1 answer

2

It seems that you are collecting the data of the variable $_POST 'backwards'.

$_POST['orden-direccion'] = $ordendireccion;
$_POST['orden-cp'] = $ordencp;
$_POST['orden-localidad'] = $ordenlocalidad;
$_POST['orden-provincia'] = $ordenprovincia;
$_POST['orden-tlf1'] = $ordentlf1;
$_POST['orden-tlf2'] = $ordentlf2;
$_POST['orden-imagen'] = $ordenimagen;
$_POST['orden-email'] = $ordenemail;

What happens is that you are deleting the data collected from the form.

Try this way:

 $ordendireccion= $_POST['orden-direccion'];
 $ordencp= $_POST['orden-cp'];
 $ordenlocalidad= $_POST['orden-localidad'];
 $ordenprovincia= $_POST['orden-provincia'];
 $ordentlf1= $_POST['orden-tlf1'];
 $ordentlf2= $_POST['orden-tlf2'];
 $ordenimagen=$_POST['orden-imagen'];
 $ordenemail=$_POST['orden-email'];

I also recommend that you read this post where we talk a little about some security measures to take when interacting with the database.

    
answered by 27.04.2018 в 13:11