Revisando de nuevo como me lo pasaste antes, funciona bien el tema de los errores y los mensajes.
EL problema esta en que si el archivo no tiene ningun error me inserta el ultimo registro del csv unicamente.
Asi esta el codigo
Código PHP:
$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;
}