Do not insert all my records (type Time) in PHP AND MYSQL

0

I make a form which is a schedule for workers, which contains shifts, time of entry, time of departure and day for the assignment. The problem I have is that I insert the shift and the day in my BD but the time of entry and exit in my BD only appear zeros 00:00:00.000000 . What I intend to select any checkbox and enter the hours of entry and exit

<html lang="es">
    <head>




<style>
div label
{
    float: left;
    width: 50%;

}


</style>


<!-- Bootstrap core CSS -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/bootstrap-theme.min.css" rel="stylesheet">

        <!-- FooTable Bootstrap CSS -->
        <link href="js/compiled/footable.bootstrap.min.css" rel="stylesheet">

        <!-- Custom styles for this template -->
        <link href="css/docs.css" rel="stylesheet">

        <script src="js/demo-rows.js"></script>
        <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 id="page">
            <div class="header">
                <a href="#menu"></a>
                Sistema Integral de Nómina
            </div>
            <h1 align="center">Gesti&oacute;n de Horarios</h1>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>Consulta de Horarios</strong>
            <a href="turno_edit.php" ><img src="images/file_get.png"  width="50" height="50" title="consultar" style="cursor:pointer"></a></p>





        <div class="container">
            <div class="row">
                <h3 style="text-align:center">NUEVO REGISTRO DE HORARIO</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="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>
                      </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">
                    </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><br /><br />






                        <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="2"> Martes
                     </label>
                      </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">
                    </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><br /><br />






                <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="3"> Miercoles
                     </label>
                      </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">
                    </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><br /><br />








                <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="4"> Jueves
                     </label>
                      </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">
                    </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><br /><br />






                <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="5"> Viernes
                     </label>
                      </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">
                    </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><br /><br />








                <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="6"> Sabado
                     </label>
                      </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">
                    </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><br /><br />









                <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="7"> Domingo
                     </label>
                      </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">
                    </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><br /><br />





                <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>

        <?php
        include("includes/menus.php"); ?>
        </div>
        <!-- Placed at the end of the document so the pages load faster -->
        <!--<script src="includes/jquery-1.9.1.min.js"></script>-->
        <script src="js/bootstrap/js/bootstrap.min.js"></script>
        <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
        <script src="js/ie10-viewport-bug-workaround.js"></script>
        <!-- Add in any FooTable dependencies we may need -->
        <script src="js/moment.min.js"></script>
        <!-- Add in FooTable itself -->
        <script src="js/compiled/footable.js"></script>
        <!-- Initialize FooTable -->
        <script>
            jQuery(function($){
                $('.table').footable();
            });
        </script>


    </body>
</html>

Insert

<?php

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

$mysqli = new mysqli("localhost", "root", "", "admon");
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();
    }   
}

?>

<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>


</html>
    
asked by Oscar_DR 23.02.2018 в 05:51
source

1 answer

1

I would have to convert them to the format that accepts the TIME type in MySQL , this is achieved with date('H:i:s',strtotime('valor) , so what is your HTML code would need to modify so that the times of entry and exit are arrays as is idctg_dia , modifying the name of input hr_salida [], hr_entrada []

An important detail is that when they are input when sending to PHP it will send all the elements that it finds in this case 7 but for the checkbox it will send only those that are cheched , for this reason we must have two variables index . $key of foreach and $i .

Possible code (there could be improvements)

$turno = isset($_POST['turno']) ? array_filter( $_POST['turno'] ): ""; 
$entrada = isset($_POST['hr_entrada']) ? array_filter( $_POST['hr_entrada'] ): null; 
$salida =isset($_POST['hr_salida']) ? array_filter($_POST['hr_salida']) : null;
$arraydia = isset($_POST['idctg_dia']) ?array_filter( $_POST['idctg_dia']) : null;

$mysqli = new mysqli("localhost", "root", "", "admon");
if ($stmt = $mysqli->prepare("INSERT INTO ctg_horario (idctg_turno, hr_entrada, hr_salida, idctg_dia) VALUES (?,?,?,?)")) {
    $i =0 ;
    foreach ($entrada as $key => $value) {
        $in =  date('H:i:s',strtotime($entrada[$key]));
        $out =  date('H:i:s',strtotime($salida[$key]));
        //bindeamos los parámetros para la query
        // Obteniendo el elemento del array idctg_dia
        $stmt->bind_param("ssss", $turno, $in, $out,$arraydia[$i++]);
        $stmt->execute();
    }
}
    
answered by 23.02.2018 / 06:55
source