Problems updating data by a bulk upload with an excel.CSV file

0

I make a module in which is a data update but it is massive by means of an excel.CSV, I have the following fields in my "worker" table, some are foreign keys of other table:

id_ControlPrimaria  
nombre  
ap_paterno  
ap_materno      
NSS 
CURP    
RFC     
fecha_nac   
id_puesto FK    
id_area FK  
idctg_turno FK  
idctg_empresa FK    
id_nomina FK

What I'm trying to do is only update only the data in the idctg_turno field according to the id_Control and the other data remain intact. I'll attach my bulk update code and also the query with the one that updates, the problem that I have does not know if it is correct the way I am doing it since it does not update any data . Thanks.

It's the massive modification code:

<?php
//nos permite recepcionar una variable que si exista y que no sea null
if (isset($_POST["enviar"])) {
    require_once("conexion_excel.php");
    require_once("functions_actualizar_turno.php");

    $archivo = $_FILES["archivo"]["name"];
    $archivo_copiado = $_FILES["archivo"]["tmp_name"];
    $archivo_guardado = "copia_" . $archivo;

    //echo $archivo . "esta en la ruta temporal: " . $archivo_copiado;

    if (copy($archivo_copiado, $archivo_guardado)) {
        //echo "se copeo correctamente el archivo temporal a nuestra carpeta de trabajo <br/>";
    } else {
        //echo "hubo un error <br/>";
    }

    if (file_exists($archivo_guardado)) {
         $fp = fopen($archivo_guardado, "r"); //abrir un archivo
         $rows = 0;
         while ($datos = fgetcsv($fp, 1000, ";")) {
                $rows ++;
               // echo $datos[0] . " " . $datos[1] . " " . $datos[2] . " " . $datos[3] . "<br/>";
            if ($rows > 1) {
                $resultado = actualizar_datos($datos[0], $datos[1], $datos[2], $datos[3], $datos[4], $datos[5], $datos[6], $datos[7], $datos[8], $datos[9], $datos[10], $datos[11], $datos[12]);
                if ($resultado) {
                    //echo "se inserto los datos correctamente<br/>";
                } else {
                    //echo "no se inserto <br/>";
                }
            }
         }
    } else {
        echo "No existe el archivo copiado <br/>";
    }
}
?>

This is the query code to update the data:

<?php

function actualizar_datos($id_Control,$nombre,$ap_paterno,$ap_materno, $NSS, $CURP, $RFC, $fecha_nac, $id_puesto, $id_area, $idctg_turno, $idctg_empresa, $id_nomina) {
    global $conexion;
    $sentencia = "(UPDATE trabajador SET id_Control='$id_Control',nombre='$nombre', ap_paterno='$ap_paterno', ap_materno='$ap_materno', NSS='$NSS', CURP='$CURP', RFC='$RFC', fecha_nac='$fecha_nac', id_puesto='$id_puesto', id_area='$id_area', idctg_turno='$idctg_turno', idctg_empresa='$idctg_empresa', id_nomina='$id_nomina' WHERE id_Control=$id_Control)";
    $ejecutar = mysqli_query($conexion, $sentencia);

    return $ejecutar;
 }
?>
    
asked by Carlos 09.04.2018 в 16:15
source

1 answer

0

In MYSQL, Update works differently to Insert whereas Insert would be something like

Insert Into trabajador (id_Control,nombre, ap_paterno, ap_materno, NSS, CURP, RFC, fecha_nac, id_puesto, id_area, idctg_turno, idctg_empresa, id_nomina) values ('$id_Control','$nombre','$ap_paterno','$ap_materno','$NSS','$CURP','$RFC','$fecha_nac','$id_puesto','$id_area','$idctg_turno','$idctg_empresa','$id_nomina')

For update is more of the form:

UPDATE trabajador SET id_Control='$id_Control',nombre='$nombre', ap_paterno='$ap_paterno', ap_materno='$ap_materno', NSS='$NSS', CURP='$CURP', RFC='$RFC', fecha_nac='$fecha_nac', id_puesto='$id_puesto', id_area='$id_area', idctg_turno='$idctg_turno', idctg_empresa='$idctg_empresa', id_nomina='$id_nomina'...

However the detail is that here you must include a WHERE to filter which row is the one you want to modify, because if you did not execute the UPDATE for all, assuming that the row you determined by the control_id would be:

UPDATE trabajador SET id_Control='$id_Control',nombre='$nombre', ap_paterno='$ap_paterno', ap_materno='$ap_materno', NSS='$NSS', CURP='$CURP', RFC='$RFC', fecha_nac='$fecha_nac', id_puesto='$id_puesto', id_area='$id_area', idctg_turno='$idctg_turno', idctg_empresa='$idctg_empresa', id_nomina='$id_nomina' WHERE id_Control=$id_Control
  

PS: another error that I see coming is that $ name, $ ap_paterno ... etc are not   defined nowhere (or at least I do not see them)

    
answered by 09.04.2018 в 16:45