Buenas gente, estoy trabajando en un form donde se importa un archivo csv pero tengo que validar los campos importados para evitar basura en la DB.
Hasta ahora lo que hago es subir el archivo al servidor, separar los campos y validarlos. Hasta ahi funciona bien, el tema es que el archivo tiene un solo registro.
Código csv:
Ver originalmartinez,manuel,20231139290,2345.45,4000.21,1
Pero nose como hacer para que cuando el archivo tenga mas registros vaya leyendo cada linea y validando para luego insertarlo en la DB. Pueden ser archivos de cientos de registros..
Código csv:
Ver originalmartinez,manuel,20231139290,2345.45,4000.21,1
martinez,manuel,20231139290,2345.45,4000.21,1
martinez,manuel,20231139290,2345.45,4000.21,1
martinez,manuel,20231139290,2345.45,4000.21,1
martinez,manuel,20231139290,2345.45,4000.21,1
martinez,manuel,20231139290,2345.45,4000.21,1
Aca va el codigo que estoy armando a los golpes! ja
Código PHP:
$status = "";
if ($_POST["action"] == "upload") {
// obtenemos los datos del archivo
$tamano = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
$archivo = $_FILES["archivo"]['name'];
//le antepongo 6 caracteres aleatorios para que no se sobreescriba con otro archivo de igual nombre
$prefijo = substr(md5(uniqid(rand())),0,6);
if ($archivo != "") {
// guardamos el archivo a la carpeta files
$destino = "files/".$prefijo."_".$archivo;
if (copy($_FILES['archivo']['tmp_name'],$destino)) {
$status = "Archivo subido: <b>".$archivo."</b>";
}else
{
$status = "Error al subir el archivo";
}
}
else{
$status = "Error al subir archivo";
}
}
$file = file_get_contents($destino);
$separador = explode(",",$file);
$apellido = $separador[0];
$nombre = $separador[1];
$cuil = $separador[2];
$basico = $separador[3];
$bruto = $separador[4];
$afili = $separador[5];
if(!(preg_match("|^[a-zA-Z]+[ ]*$|",$apellido))){
echo "<script>
alert('El campo Apellido y Nombres debe ser alfabetico');
window.location.href='form.htm';
</script>";
unlink($destino);//borro el archivo si tiene algun error
}
elseif(!(preg_match("|^[a-zA-Z]+[ ]*$|",$nombre))){
echo "<script>
alert('El campo Apellido y Nombres debe ser alfabetico');
window.location.href='form.htm';
</script>";
unlink($destino);
}
elseif(! cuitValido($cuil)){
echo"<script>
alert ('Verifique la CUIL ingresada');
window.location.href='form.htm';
</script>";
unlink($destino);
}
elseif(!is_numeric($basico)){
echo"<script>
alert ('El campo Sueldo Basico debe ser numerico');
window.location.href='form.htm';
</script>";
unlink($destino);
}
elseif(!is_numeric($bruto)){
echo"<script>
alert ('El campo Sueldo Bruto debe ser numerico');
window.location.href='form.htm';
</script>";
unlink($destino);
}
elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){
echo"<script>
alert ('Debe indicar 1 para afiliados y 0 para NO afiliados');
window.location.href='form.htm';
</script>";
unlink($destino);
}
else
{
echo "<script>
alert('Archivo importado con exito');
window.location.href='form.htm';
</script>";
}