Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/05/2013, 12:13
Avatar de Nico0601
Nico0601
 
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Problemas para recorrer archivo validando campos.

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 original
  1. martinez,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 original
  1. martinez,manuel,20231139290,2345.45,4000.21,1
  2. martinez,manuel,20231139290,2345.45,4000.21,1
  3. martinez,manuel,20231139290,2345.45,4000.21,1
  4. martinez,manuel,20231139290,2345.45,4000.21,1
  5. martinez,manuel,20231139290,2345.45,4000.21,1
  6. 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>"
;
                        } 
__________________
Nico...