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:
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..Ver original
martinez,manuel,20231139290,2345.45,4000.21,1
Código csv:
Aca va el codigo que estoy armando a los golpes! jaVer original
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 martinez,manuel,20231139290,2345.45,4000.21,1
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>";
}