Do not insert all the values selected by checkbox

1

<?php
	
	require 'connect_db.php';
	
	$turno = $_POST['idctg_turno'];
	$entrada = $_POST['hr_entrada'];
	$salida = $_POST['hr_salida'];
	$dia = isset($_POST['idctg_dia']) ? $_POST['idctg_dia'] : null;
	
	$arraydia = null;
	
	$num_array = count($dia);
	$contador = 0;
	
	if($num_array>0){
		foreach ($dia as $key => $value) {
			if ($contador != $num_array-1)
			{
				$arraydia .= $value.' ';
				$contador++;
				} else {
				$arraydia .= $value;
			}
		}
	}
	
	$sql = "INSERT INTO ctg_horario (idctg_turno, hr_entrada, hr_salida, idctg_dia) VALUES ('$turno', '$entrada', '$salida', '$arraydia')";
	$resultado = $mysqli->query($sql);
    echo $mysqli->error;
	
?>

<html lang="es">
	<head>
		
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="css/bootstrap.min.css" rel="stylesheet">
		<link href="css/bootstrap-theme.css" rel="stylesheet">
		<script src="js/jquery-3.1.1.min.js"></script>
		<script src="js/bootstrap.min.js"></script>	
	</head>
	
	<body>
		<div class="container">
			<div class="row">
				<div class="row" style="text-align:center">
					<?php if($resultado) { ?>
						<h3>REGISTRO GUARDADO</h3>
						<?php } else { ?>
						<h3>ERROR AL GUARDAR</h3>
					<?php } ?>
					
					<a href="index.php" class="btn btn-primary">Regresar</a>
					
				</div>
			</div>
		</div>
	</body>
</html>

Good evening I make a form in which I use checkbox, just insert a value in my idcgt_dia field in my DB and I need to save all the values that are selected in the checkboxes in my field of my database

<html lang="es">
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="css/bootstrap.min.css" rel="stylesheet">
		<link href="css/bootstrap-theme.css" rel="stylesheet">
		<script src="js/jquery-3.1.1.min.js"></script>
		<script src="js/bootstrap.min.js"></script>	
	</head>
	
	<body>
		<div class="container">
			<div class="row">
				<h3 style="text-align:center">NUEVO REGISTRO</h3>
			</div>
			
			<form class="form-horizontal" method="POST" action="guardar.php" autocomplete="off">
			
			
			
			
			
				
				
				
<div class="form-group">
<label for="idctg_turno" class="col-sm-2 control-label">Turno</label>
<?php
require("connect_db.php");

$query = "SELECT DISTINCT idctg_turno, descripcion FROM ctg_turno";
$res = $mysqli->query($query);
$option = '';
while ($row = $res->fetch_assoc()){

    $option.="<option value=\"$row[idctg_turno]\">$row[descripcion] </option>";   
   
}
?>


<div class="col-sm-10">
						
					
<select type="text" class="form-control" id="idctg_turno" name="idctg_turno" placeholder="Turno" required     >
<option value="-">Selecciona el Turno</option>
<?php echo $option; ?>
</select><br /><br /></div></div>

				

				<div class="form-group">
					<label for="hr_entrada" class="col-sm-2 control-label">Hora Entrada</label>
					<div class="col-sm-10">
						<input type="time" class="form-control" id="hr_entrada" name="hr_entrada" placeholder="hr_entrada" required>
					</div>
				</div>
				
				<div class="form-group">
					<label for="hr_salida" class="col-sm-2 control-label">Hora Salida</label>
					<div class="col-sm-10">
						<input type="time" class="form-control" id="hr_salida" name="hr_salida" placeholder="hr_salida">
					</div>
				</div>
					
				
				
				<div class="form-group">
					<label for="idctg_dia" class="col-sm-2 control-label">Día</label>
					
					<div class="col-sm-10">
						<label class="checkbox-inline">
							<input type="checkbox" id="idctg_dia[]" name="idctg_dia[]" value="1"> Lunes
						</label>
						
						<label class="checkbox-inline">
							<input type="checkbox" id="idctg_dia[]" name="idctg_dia[]" value="2"> Martes
						</label>
						
						<label class="checkbox-inline">
							<input type="checkbox" id="idctg_dia[]" name="idctg_dia[]" value="3"> Miercoles
						</label>
						
						<label class="checkbox-inline">
							<input type="checkbox" id="idctg_dia[]" name="idctg_dia[]" value="4"> Jueves
						</label>
					</div>
				</div>
				
				<div class="form-group">
					<div class="col-sm-offset-2 col-sm-10">
						<a href="index.php" class="btn btn-default">Regresar</a>
						<button type="submit" class="btn btn-primary">Guardar</button>
					</div>
				</div>
			</form>
		</div>
	</body>
</html>
    
asked by Oscar_DR 22.02.2018 в 08:57
source

1 answer

0

First of all the most important thing is the security in your code, which is very vulnerable, for example to SQL injection attacks which should be eradicated by applying or using statements prepared correctly.

As in your HTML you are sending an "array" of values selected in checkboxs you should receive them as such and iterate them to enter the values correctly.

Ejm for insertion

$turno = $_POST['idctg_turno'];
$entrada = $_POST['hr_entrada'];
$salida =$_POST['hr_salida'];
$arraydia = $_POST['idctg_dia'];

$mysqli = new mysqli("localhost", "mi_usuario", "mi_clave", "midatabase");
if ($stmt = $mysqli->prepare("INSERT INTO ctg_horario (idctg_turno, hr_entrada, hr_salida, idctg_dia) VALUES (?,?,?,?)")) {
    // Iteramos el array y como ya preparamos la sentencia 
    //solo bindeamos los parámetros
    for ($i=0; $i < count($arraydia) ; $i++) { 
        //bindeamos los parámetros para la query
        // Obteniendo el elemento del array idctg_dia
        $stmt->bind_param("ssss", $turno,$entrada,$salida,$arraydia[$i]);
        $stmt->execute();
    }   
}
    
answered by 22.02.2018 / 09:16
source