Error loading a text file into mysql, using array with php.

0

I try to load a txt, with coding format utf8 and with separators between lines Þ and between fields . I upload it with a form html e input type = file . I have the files sorted by mvc. And the version of php = 7.2.2 installed.

It turns out that when you click on the button and try to load the file into a table, you are throwing me the following error: Parse error: syntax error, unexpected '[', expecting ')' It is in the file model line where is the function that receives array as paramaters: public function inserta_ventas

? To what is the error and / or what can be a more efficient way of doing the load, it should be mentioned that they are heavy files with thousands of lines?

Form

   
       <form method="POST" action="../controles/load_ventas.php">
                <br>  
                <label for="a_venta">Carga de datos:</label>
                <input type="file" name="ventas" id="ventas"> 
                <br>             
           <div class='col-xs-6'>
           <h3 class='text-right'>   
           <input type="submit" name="registrar" id="registrar" class="btn btn-success" value="Carga">
           </h3>
           </div>  
        </form>

Controller

<?php

require "../config/Conexion.php";
require_once "../modelos/Ventas.php";

$ventas = new Ventas(); //objeto del modelo Ventas 

$archivo = isset($_POST["ventas"])? limpiarCadena($_POST["ventas"]):"";  //recibiendo archivo del form
 
$contenido = file_get_contents($archivo); //obteniendo contenido, formateado A UTF 8

     $filas = explode("Þ", $contenido); //delimitador entre lineas del fichero

     foreach ($filas as $linea) {

          $campos = explode("¶", $linea);  //dividiendo el string

          if(!empty($campos[0])) {

           $insert_vtas = $ventas->inserta_ventas($campos[0],$campos[1],$campos[2],$campos[3],$campos[4],
                          $campos[5],$campos[6],$campos[7],$campos[8],$campos[9],$campos[10],$campos[11],
                          $campos[12],$campos[13],$campos[14],$campos[15],$campos[16],$campos[17],
                          $campos[18],$campos[19],$campos[20],$campos[21],$campos[22],$campos[23],$campos[24],
                          $campos[25],$campos[26],$campos[27],$campos[28],$campos[29],$campos[30],$campos[31],
                          $campos[32],$campos[33],$campos[34],$campos[35],$campos[36],$campos[37],$campos[38],
                          $campos[39],$campos[40],$campos[41],$campos[42],$campos[43]);
           }
     }

?>

Model

<?php
//Incluyendo la conexión a la BD
require "../config/Conexion.php";

Class Ventas
{
	//Implementando el constructor
	public function __construct()
	{

	}

	public function inserta_ventas($campos[0],$campos[1],$campos[2],$campos[3],$campos[4],
     	                $campos[5],$campos[6],$campos[7],$campos[8],$campos[9],$campos[10],
     	                $campos[11],$campos[12],$campos[13],$campos[14],$campos[15],$campos[16],$campos[17],
     	                $campos[18],$campos[19],$campos[20],$campos[21],$campos[22],$campos[23],$campos[24],
     	                $campos[25],$campos[26],$campos[27],$campos[28],$campos[29],$campos[30],$campos[31],
     	                $campos[32],$campos[33],$campos[34],$campos[35],$campos[36],$campos[37],$campos[38],
     	                $campos[39],$campos[40],$campos[41],$campos[42],$campos[43])
	{
		$sql="INSERT INTO ventas306(clave_area,area_vta,fecha_contable,sesion,fecha_apertura,hora_apertura,av_p,
		      transaccion,operacion,id_vta,tipo,origen,destino,fecha_salida,hra_salida,f_boleto,asiento,pasajero,
		      campo19,f_pago,ef,tb,pu,tr,do,gp,cv,importe,formato_salto,fecha_venta,hra_venta,corrida,empresa_corrida,
		      t_boleto,referencia,autorizacion,voucher,t_servicio,fecha_cierre,razon_social,rfc,documento,empresa,fin) 

              VALUES ('$campos[0]','$campos[1]','$campos[2]','$campos[3]','$campos[4]',
     	              '$campos[5]','$campos[6]','$campos[7]','$campos[8]','$campos[9]',
     	              '$campos[10]','$campos[11]','$campos[12]','$campos[13]','$campos[14]',
     	              '$campos[15]','$campos[16]','$campos[17]','$campos[18]','$campos[19]','$campos[20]',
     	              '$campos[21]','$campos[22]','$campos[23]','$campos[24]','$campos[25]','$campos[26]',
     	              '$campos[27]','$campos[28]','$campos[29]','$campos[30]','$campos[31]','$campos[32]',
     	              '$campos[33]','$campos[34]','$campos[35]','$campos[36]','$campos[37]','$campos[38]',
     	              '$campos[39]','$campos[40]','$campos[41]','$campos[42]','$campos[43]')";

		return ejecutarConsulta($sql); 
	}
}
?>
    
asked by Armando Arellano 28.02.2018 в 01:51
source

1 answer

2

You can make the following change in your model, which can make you more viable

public function inserta_ventas($campos){
{
    $sql="INSERT INTO ventas306(clave_area,area_vta,fecha_contable,sesion,fecha_apertura,hora_apertura,av_p,
          transaccion,operacion,id_vta,tipo,origen,destino,fecha_salida,hra_salida,f_boleto,asiento,pasajero,
          campo19,f_pago,ef,tb,pu,tr,do,gp,cv,importe,formato_salto,fecha_venta,hra_venta,corrida,empresa_corrida,
          t_boleto,referencia,autorizacion,voucher,t_servicio,fecha_cierre,razon_social,rfc,documento,empresa,fin) 

          VALUES ('$campos[0]','$campos[1]','$campos[2]','$campos[3]','$campos[4]',
                  '$campos[5]','$campos[6]','$campos[7]','$campos[8]','$campos[9]',
                  '$campos[10]','$campos[11]','$campos[12]','$campos[13]','$campos[14]',
                  '$campos[15]','$campos[16]','$campos[17]','$campos[18]','$campos[19]','$campos[20]',
                  '$campos[21]','$campos[22]','$campos[23]','$campos[24]','$campos[25]','$campos[26]',
                  '$campos[27]','$campos[28]','$campos[29]','$campos[30]','$campos[31]','$campos[32]',
                  '$campos[33]','$campos[34]','$campos[35]','$campos[36]','$campos[37]','$campos[38]',
                  '$campos[39]','$campos[40]','$campos[41]','$campos[42]','$campos[43]')";

    return ejecutarConsulta($sql); 
}

and when making your call from your controller

$campos = explode("¶", $linea);
....
$insert_vtas = $ventas->inserta_ventas($campos);
    
answered by 28.02.2018 / 02:04
source