Estoy trabajando en importar un csv, previa validacion e insercion en Mysql.
El problema es que si el archivo csv no tiene ningun error me inserta solo el ultimo registro.
Si tiene errores va todo bien, me muestra los mensajes de error y demas.
Cuando el archivo esta bien no puedo hacer que lo inserte todo completo.
Este es el codigo a ver si me pueden dar una mano. Desde ya muchas gracias
$error = 0;
$file = fopen($destino, 'r');
while($datos = fgetcsv ($file, 1000, ","))
{
$num = count($datos);
$apellido = $datos[0];
$apellido = str_replace("'"," ",$apellido);
$nombre = $datos[1];
$nombre = str_replace("'"," ",$nombre);
$cuil = $datos[2];
$basico = $datos[3];
$bruto = $datos[4];
$afili = $datos[5];
if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){
$error = 1;
}elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){
$error = 2;
}elseif(!cuitValido($cuil)){
$error = 3;
}elseif(!is_numeric($basico)){
$error = 4;
}elseif(!is_numeric($bruto)){
$error = 5;
}elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){
$error = 6;
}
$hasError = checkErrors($error, $datos, $nombre, $apellido, $destino);
if($hasError != false){
echo $hasError;
break;
}
}
if($error == 0){
if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='$cuil'"))){
mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','$cuil','$basico','$bruto','$afili')");
}else{
mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='$cuil', basico='$basico', bruto='$bruto', afiliado='$afili' WHERE cuil='$cuil'");
}
unlink($destino);
echo "<script>
alert('Importacion exitosa');
window.location.href='form.htm';
</script>";
}
function checkErrors($error, $datos, $nombre, $apellido, $destino){
$mensaje = '';
if($error == 1){
$mensaje = "La importacion se detuvo por el siguiente error <br />
Corrija el siguiente campo $apellido e importe el archivo nuevamente";
}
elseif($error == 2){
$mensaje = "La importacion se detuvo por el siguiente error <br />
Corrija el siguiente campo $nombre e importe el archivo nuevamente";
}
elseif($error == 3){
$mensaje = "La importacion se detuvo por el siguiente error <br />
Corrija el siguiente campo {$datos[2]} e importe el archivo nuevamente";
}
elseif($error == 4){
$mensaje = "La importacion se detuvo por el siguiente error <br />
Corrija el siguiente campo {$datos[3]} e importe el archivo nuevamente";
}
elseif($error == 5){
$mensaje = "La importacion se detuvo por el siguiente error <br />
Corrija el siguiente campo {$datos[4]} e importe el archivo nuevamente";
}
elseif($error == 6){
$mensaje = "La importacion se detuvo por el siguiente error <br />
Corrija el siguiente campo {$datos[5]} e importe el archivo nuevamente";
}
if($mensaje != ''){
unlink($destino);
return $mensaje;
}
return false;
}