Foros del Web » Programando para Internet » PHP »

Devuelve mal el mensaje de error

Estas en el tema de Devuelve mal el mensaje de error en el foro de PHP en Foros del Web. Buenas gente, vuelvo a molestarlos por lo siguiente. Tengo este codigo con el cual importo un csv. Estoy probando con este csv @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 18/06/2013, 07:56
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Devuelve mal el mensaje de error

Buenas gente, vuelvo a molestarlos por lo siguiente.
Tengo este codigo con el cual importo un csv.
Estoy probando con este csv
Código csv:
Ver original
  1. Susca,Luis,20148530867,16357.10,34803.51,1
  2. Iglesias,Sergio,20206910829,16357.00,01716.46,1
  3. Saubidet,Sergio,20215053890,06357.00,26909.07,1
  4. P1ieper,Gustavo,20218778772,05073.00,23177.95,1 // aca le puse un 1 al apellido para que me devuelva error, el problema es que me muestra el error en el ultimo apellido (Angulo)
  5. Fernandez,Gustavo,20176735016,05073.00,04628.59,1
  6. Bianchi,Oscar,20168137797,06357.00,41943.42,1
  7. zunzuneguy,daniel,20085694082,03593.00,07395.41,1
  8. Orieta,Omar,20223258957,06357.00,11883.03,1
  9. Angulo,Luis,20209035074,06357.00,13815.57,1
Nose como hacer para que me muestre el error realmente donde esta.
Este es el codigo php
Código PHP:
$error 0;
$file fopen($destino"r");
while (
$datos fgetcsv ($file1000","))
{
    
$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;
                            }
}

    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'"
); 
            }
    }
          
                            if(
$error == 1){
                                echo (
"La importacion se detuvo por el siguiente error <br />");
                                echo (
"Corrija el siguiente campo $apellido e importe el archivo nuevamente");
                                     
unlink($destino);
                            }
                                elseif(
$error == 2){
                                    echo (
"La importacion se detuvo por el siguiente error <br />");
                                    echo (
"Corrija el siguiente campo $nombre e importe el archivo nuevamente");
                                        
unlink($destino);
                                }
                                    elseif(
$error == 3){
                                       echo (
"La importacion se detuvo por el siguiente error <br />");
                                       echo (
"Corrija el siguiente campo $cuil e importe el archivo nuevamente");
                                             
unlink($destino);
                                    }
                                        elseif(
$error == 4){
                                           echo (
"La importacion se detuvo por el siguiente error <br />");
                                           echo (
"Corrija el siguiente campo $basico e importe el archivo nuevamente");
                                                
unlink($destino);
                                        }
                                            elseif(
$error == 5){
                                               echo (
"La importacion se detuvo por el siguiente error <br />");
                                               echo (
"Corrija el siguiente campo $bruto e importe el archivo nuevamente");
                                                    
unlink($destino);
                                            }
                                                elseif(
$error == 6){
                                                   echo (
"La importacion se detuvo por el siguiente error <br />");
                                                   echo (
"Corrija el siguiente campo $afili e importe el archivo nuevamente");
                                                        
unlink($destino);
                                                }
                                                    elseif(
$error == 0){
                                                        echo 
"<script>
                                                                alert('Importacion exitosa');
                                                                window.location.href='form.htm';
                                                             </script>"
;
                                                             
unlink($destino);
                                                    }
?> 
Espero puedan darme una mano, muchas gracias
__________________
Nico...
  #2 (permalink)  
Antiguo 18/06/2013, 08:14
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Devuelve mal el mensaje de error

Efectivamente, el control de errores lo haces fuera del while, y no se ejecutará hasta que termines de procesar todas las lineas. Por otra parte, tampoco muestras la variable error ni detienes la ejecucción del script.
SAlu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 18/06/2013, 08:20
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

El control de errores esta dentro del while, la que esta fuera es el INSERT, UPDATE y los mensajes de error. Si cierro el while al final de todo no me valida nada.
__________________
Nico...
  #4 (permalink)  
Antiguo 18/06/2013, 08:22
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Devuelve mal el mensaje de error

En mi editor aparece afuera, pero debe ser mi editor:

Código PHP:
Ver original
  1. <?php
  2. $error = 0;
  3. $file = fopen($destino, "r");
  4. while ($datos = fgetcsv ($file, 1000, ","))
  5. {
  6.     $num = count($datos);
  7.     $apellido = $datos[0];
  8.     $apellido = str_replace("'"," ",$apellido);
  9.     $nombre = $datos[1];
  10.     $nombre = str_replace("'"," ",$nombre);
  11.     $cuil = $datos[2];
  12.     $basico = $datos[3];
  13.     $bruto = $datos[4];
  14.     $afili = $datos[5];
  15.  
  16.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){
  17.         $error = 1;
  18.     }
  19.     elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){
  20.         $error = 2;
  21.     }
  22.     elseif(!cuitValido($cuil)){
  23.         $error = 3;
  24.     }
  25.     elseif(!is_numeric($basico)){
  26.         $error = 4;
  27.     }
  28.     elseif(!is_numeric($bruto)){
  29.         $error = 5;
  30.     }
  31.     elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){
  32.         $error = 6;
  33.     }
  34. }//while ($datos = fgetcsv ($file, 1000, ","))
  35.  
  36. if($error == 0)
  37. {
  38.     if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='$cuil'")))
  39.     {
  40.         mysql_query("INSERT INTO ddjj
  41.         VALUES ('null','$apellido','$nombre','$cuil','$basico','$bruto','$afili')");
  42.     }//if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='$cuil'")))
  43.     else
  44.     {
  45.         mysql_query("UPDATE ddjj
  46.         SET apellido='$apellido', nombre='$nombre', cuil='$cuil', basico='$basico', bruto='$bruto', afiliado='$afili' WHERE cuil='$cuil'");
  47.     }//else
  48. }//if($error == 0)
  49.  
  50. if($error == 1){
  51.     echo ("La importacion se detuvo por el siguiente error <br />");
  52.     echo ("Corrija el siguiente campo $apellido e importe el archivo nuevamente");
  53.     unlink($destino);
  54. }//if($error == 1){
  55. elseif($error == 2){
  56.     echo ("La importacion se detuvo por el siguiente error <br />");
  57.     echo ("Corrija el siguiente campo $nombre e importe el archivo nuevamente");
  58.     unlink($destino);
  59. }//elseif($error == 2){
  60. elseif($error == 3){
  61.     echo ("La importacion se detuvo por el siguiente error <br />");
  62.     echo ("Corrija el siguiente campo $cuil e importe el archivo nuevamente");
  63.     unlink($destino);
  64. }//elseif($error == 3){
  65. elseif($error == 4){
  66.     echo ("La importacion se detuvo por el siguiente error <br />");
  67.     echo ("Corrija el siguiente campo $basico e importe el archivo nuevamente");
  68.     unlink($destino);
  69. }//elseif($error == 4){
  70. elseif($error == 5){
  71.     echo ("La importacion se detuvo por el siguiente error <br />");
  72.     echo ("Corrija el siguiente campo $bruto e importe el archivo nuevamente");
  73.     unlink($destino);
  74. }//elseif($error == 5){
  75. elseif($error == 6){
  76.     echo ("La importacion se detuvo por el siguiente error <br />");
  77.     echo ("Corrija el siguiente campo $afili e importe el archivo nuevamente");
  78.     unlink($destino);
  79. }//elseif($error == 6){
  80. elseif($error == 0){
  81.     echo "<script>
  82.             alert('Importacion exitosa');
  83.             window.location.href='form.htm';
  84.             </script>";
  85.     unlink($destino);
  86. }//elseif($error == 0){
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 18/06/2013, 08:28
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Que es lo comentado? No entiendo...
__________________
Nico...
  #6 (permalink)  
Antiguo 18/06/2013, 08:37
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

En síntesis que las verificaciones de error 1, 2, 3 etc. deben hacerse dentro del while y no después de que haya acabado este

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 18/06/2013, 08:39
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Las verificaciones de error estan dentro del while, lo que esta afuera son los mensajes de error.
__________________
Nico...
  #8 (permalink)  
Antiguo 18/06/2013, 08:41
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Por eso, esos mensajes también deben estar dentro del while

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 18/06/2013, 08:43
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Es que si los mensajes de error los pongo dentro del while pasa de largo, no me valida nada.
__________________
Nico...
  #10 (permalink)  
Antiguo 18/06/2013, 09:00
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Mira si eso te funciona
Código PHP:
Ver original
  1. <?
  2. $error = 0;
  3. $file = fopen($destino, "r");
  4. while ($datos = fgetcsv ($file, 1000, ","))
  5. {
  6.     $num = count($datos);
  7.     $apellido = $datos[0];
  8.     $apellido = str_replace("'"," ",$apellido);
  9.     $nombre = $datos[1];
  10.     $nombre = str_replace("'"," ",$nombre);
  11.     $cuil = $datos[2];
  12.     $basico = $datos[3];
  13.     $bruto = $datos[4];
  14.     $afili = $datos[5];
  15.  
  16.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){
  17.         $error = 1;
  18.     }elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){
  19.         $error = 2;
  20.     }elseif(!cuitValido($cuil)){
  21.         $error = 3;
  22.     }elseif(!is_numeric($basico)){
  23.         $error = 4;
  24.     }elseif(!is_numeric($bruto)){
  25.         $error = 5;
  26.     }elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){  
  27.         $error = 6;
  28.     }
  29.     $hasError = checkErrors($error);
  30.     if($hasError != false){
  31.         echo $hasError;
  32.         break;
  33.     }
  34. }
  35. if($error == 0){
  36.     if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='$cuil'"))){  
  37.         mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','$cuil','$basico','$bruto','$afili')");  
  38.     }else{
  39.         mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='$cuil', basico='$basico', bruto='$bruto', afiliado='$afili' WHERE cuil='$cuil'");  
  40.     }
  41.     unlink($destino);
  42.     echo "<script>
  43.             alert('Importacion exitosa');
  44.             window.location.href='form.htm';
  45.         </script>";
  46. }
  47. function checkErrors($error){          
  48.     $mensaje = '';
  49.     if($error == 1){
  50.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  51.         Corrija el siguiente campo $apellido e importe el archivo nuevamente";
  52.     }
  53.     elseif($error == 2){
  54.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  55.         Corrija el siguiente campo $nombre e importe el archivo nuevamente";
  56.     }
  57.     elseif($error == 3){
  58.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  59.         Corrija el siguiente campo $cuil e importe el archivo nuevamente";
  60.     }
  61.     elseif($error == 4){
  62.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  63.         Corrija el siguiente campo $basico e importe el archivo nuevamente";
  64.     }
  65.     elseif($error == 5){
  66.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  67.         Corrija el siguiente campo $bruto e importe el archivo nuevamente";
  68.     }
  69.     elseif($error == 6){
  70.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  71.         Corrija el siguiente campo $afili e importe el archivo nuevamente";
  72.     }
  73.    
  74.     if($mensaje != ''){
  75.         unlink($destino);
  76.         return $mensaje;
  77.     }
  78.    
  79.     return false;
  80. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 18/06/2013, 09:14
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

No, me tira este error.
Warning: unlink(): open_basedir restriction in effect. File() is not within the allowed path(s): (/home/u133075534:/usr/lib/php:/tmp) in /home/u133075534/public_html/upload/upload.php on line 137 La importacion se detuvo por el siguiente error
Corrija el siguiente campo e importe el archivo nuevamente
__________________
Nico...
  #12 (permalink)  
Antiguo 18/06/2013, 09:20
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Perdón me faltaron algunos campos

Código PHP:
Ver original
  1. <?php
  2. $error = 0;
  3. $file = fopen($destino, "r");
  4. while ($datos = fgetcsv ($file, 1000, ","))
  5. {
  6.     $num = count($datos);
  7.     $apellido = $datos[0];
  8.     $apellido = str_replace("'"," ",$apellido);
  9.     $nombre = $datos[1];
  10.     $nombre = str_replace("'"," ",$nombre);
  11.     $cuil = $datos[2];
  12.     $basico = $datos[3];
  13.     $bruto = $datos[4];
  14.     $afili = $datos[5];
  15.  
  16.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){
  17.         $error = 1;
  18.     }elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){
  19.         $error = 2;
  20.     }elseif(!cuitValido($cuil)){
  21.         $error = 3;
  22.     }elseif(!is_numeric($basico)){
  23.         $error = 4;
  24.     }elseif(!is_numeric($bruto)){
  25.         $error = 5;
  26.     }elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){  
  27.         $error = 6;
  28.     }
  29.     $hasError = checkErrors($error, $datos, $nombre, $apellido, $destino);
  30.     if($hasError != false){
  31.         echo $hasError;
  32.         break;
  33.     }
  34. }
  35. if($error == 0){
  36.     if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='$cuil'"))){  
  37.         mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','$cuil','$basico','$bruto','$afili')");  
  38.     }else{
  39.         mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='$cuil', basico='$basico', bruto='$bruto', afiliado='$afili' WHERE cuil='$cuil'");  
  40.     }
  41.     unlink($destino);
  42.     echo "<script>
  43.            alert('Importacion exitosa');
  44.            window.location.href='form.htm';
  45.        </script>";
  46. }
  47. function checkErrors($error, $datos, $nombre, $apellido, $destino){          
  48.     $mensaje = '';
  49.     if($error == 1){
  50.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  51.        Corrija el siguiente campo $apellido e importe el archivo nuevamente";
  52.     }
  53.     elseif($error == 2){
  54.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  55.        Corrija el siguiente campo $nombre e importe el archivo nuevamente";
  56.     }
  57.     elseif($error == 3){
  58.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  59.        Corrija el siguiente campo {$datos[2]} e importe el archivo nuevamente";
  60.     }
  61.     elseif($error == 4){
  62.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  63.        Corrija el siguiente campo {$datos[3]} e importe el archivo nuevamente";
  64.     }
  65.     elseif($error == 5){
  66.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  67.        Corrija el siguiente campo {$datos[4]} e importe el archivo nuevamente";
  68.     }
  69.     elseif($error == 6){
  70.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  71.        Corrija el siguiente campo {$datos[5]} e importe el archivo nuevamente";
  72.     }
  73.    
  74.     if($mensaje != ''){
  75.         unlink($destino);
  76.         return $mensaje;
  77.     }
  78.    
  79.     return false;
  80. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #13 (permalink)  
Antiguo 18/06/2013, 09:34
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Excelente
Sos un genio! Lo que cambie fue el cierre del while y lo puse debajo del UPDATE porque sino no me importaba todas las lineas.
Lo de mas barbaro.
Muchas gracias
__________________
Nico...
  #14 (permalink)  
Antiguo 18/06/2013, 09:36
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Me alegra que te haya servido

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #15 (permalink)  
Antiguo 18/06/2013, 10:06
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Jonni nose porque motivo dejo de validar, esta tal cual me lo pasaste. Pero hice unas pruebas y anduvo y ahora no. Q pudo haber pasado?
__________________
Nico...
  #16 (permalink)  
Antiguo 18/06/2013, 10:09
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

mmm pues no se deberías mostrar el código, es extraño

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #17 (permalink)  
Antiguo 18/06/2013, 10:41
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Si, es rarisimo, recien andaba re bien...
Ahora probe con este archivo
Código csv:
Ver original
  1. Susca,Luis,20148530867,16357.10,34803.51,0
  2. Pedrin,Sergio,20206910829,16357.00,01716.46,1
  3. Saubidet,Sergio,20215053890,06357.00,26909.07,0
  4. Pieper,Gustavo,20218778772,05073.00,23177.95,1
  5. Fernandez,Gustavo,20176735016,05073.00,04628.59,1
  6. Bianchi,Oscar,20168137797,06357.00,1234.42,0
  7. 1zunzuneguy,daniel,20085694082,03593.00,17395.41,0 // aca puse el uno y no me avisa del error y me inserta todos los demas menos este
Y asi me funcionaba el php
Código PHP:
$error 0
$file fopen($destino"r"); 
while (
$datos fgetcsv ($file1000",")) 

    
$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;

__________________
Nico...
  #18 (permalink)  
Antiguo 18/06/2013, 11:40
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

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 ($file1000",")) 

    
$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;

__________________
Nico...
  #19 (permalink)  
Antiguo 19/06/2013, 07:48
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Hola mira si esto te sirve
Código PHP:
Ver original
  1. <?php
  2. $error = 0;  
  3. $file = fopen($destino, "r");  
  4. while ($datos = fgetcsv ($file, 1000, ","))  
  5. {  
  6.     $num = count($datos);  
  7.     $apellido = $datos[0];  
  8.     $apellido = str_replace("'"," ",$apellido);  
  9.     $nombre = $datos[1];  
  10.     $nombre = str_replace("'"," ",$nombre);  
  11.     $cuil = $datos[2];  
  12.     $basico = $datos[3];  
  13.     $bruto = $datos[4];  
  14.     $afili = $datos[5];  
  15.  
  16.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){  
  17.         $error = 1;  
  18.     }elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){  
  19.         $error = 2;  
  20.     }elseif(!cuitValido($cuil)){  
  21.         $error = 3;  
  22.     }elseif(!is_numeric($basico)){  
  23.         $error = 4;  
  24.     }elseif(!is_numeric($bruto)){  
  25.         $error = 5;  
  26.     }elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){    
  27.         $error = 6;  
  28.     }else{
  29.         $error = 0;
  30.     }
  31.     $hasError = checkErrors($error, $datos, $nombre, $apellido, $destino);
  32.     if($hasError != false){
  33.         echo $hasError;
  34.         break;
  35.     }else{
  36.         $hasError = true;
  37.     }
  38. }
  39. if($hasError == true){
  40.     echo "
  41.     <script>  
  42.         alert('Importacion exitosa');  
  43.         window.location.href='form.htm';  
  44.     </script>";  
  45. }
  46. function checkErrors($error, $datos, $nombre, $apellido, $destino){          
  47.     $mensaje = '';
  48.     if($error == 1){  
  49.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  50.        Corrija el siguiente campo $apellido e importe el archivo nuevamente";  
  51.     }  
  52.     elseif($error == 2){  
  53.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  54.        Corrija el siguiente campo $nombre e importe el archivo nuevamente";  
  55.     }  
  56.     elseif($error == 3){  
  57.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  58.        Corrija el siguiente campo {$datos[2]} e importe el archivo nuevamente";  
  59.     }  
  60.     elseif($error == 4){  
  61.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  62.        Corrija el siguiente campo {$datos[3]} e importe el archivo nuevamente";  
  63.     }  
  64.     elseif($error == 5){  
  65.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  66.        Corrija el siguiente campo {$datos[4]} e importe el archivo nuevamente";  
  67.     }  
  68.     elseif($error == 6){  
  69.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  70.        Corrija el siguiente campo {$datos[5]} e importe el archivo nuevamente";  
  71.     }elseif($error == 0){  
  72.         if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='{$datos[2]}'"))){  
  73.             mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','{$datos[2]}','{$datos[3]}','{$datos[4]}','{$datos[5]}')");  
  74.         }else{  
  75.             mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='{$datos[2]}', basico='{$datos[3]}', bruto='{$datos[4]}', afiliado='{$datos[5]}' WHERE cuil='{$datos[2]}'");
  76.         }
  77.         unlink($destino);
  78.     }
  79.     if($mensaje != ''){
  80.         unlink($destino);  
  81.         return $mensaje;
  82.     }
  83.     return false;
  84. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #20 (permalink)  
Antiguo 19/06/2013, 07:56
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Hola Jonni, gracias por responder.
Me tira este error.
Warning: unlink(files/7b953a_prueba_importar2.csv): No such file or directory in /home/u133075534/public_html/upload/upload.php on line 140 Warning: unlink(files/7b953a_prueba_importar2.csv): No such file or directory in /home/u133075534/public_html/upload/upload.php on line 140 Warning: unlink(files/7b953a_prueba_importar2.csv): No such file or directory in /home/u133075534/public_html/upload/upload.php on line 140 Warning: unlink(files/7b953a_prueba_importar2.csv): No such file or directory in /home/u133075534/public_html/upload/upload.php on line 143 La importacion se detuvo por el siguiente error
Corrija el siguiente campo 1Fernandez e importe el archivo nuevamente
__________________
Nico...
  #21 (permalink)  
Antiguo 19/06/2013, 08:03
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Código PHP:
Ver original
  1. <?php
  2. $error = 0;  
  3. $file = fopen($destino, "r");  
  4. while ($datos = fgetcsv ($file, 1000, ","))  
  5. {  
  6.     $num = count($datos);  
  7.     $apellido = $datos[0];  
  8.     $apellido = str_replace("'"," ",$apellido);  
  9.     $nombre = $datos[1];  
  10.     $nombre = str_replace("'"," ",$nombre);  
  11.     $cuil = $datos[2];  
  12.     $basico = $datos[3];  
  13.     $bruto = $datos[4];  
  14.     $afili = $datos[5];  
  15.  
  16.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){  
  17.         $error = 1;  
  18.     }elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){  
  19.         $error = 2;  
  20.     }elseif(!cuitValido($cuil)){  
  21.         $error = 3;  
  22.     }elseif(!is_numeric($basico)){  
  23.         $error = 4;  
  24.     }elseif(!is_numeric($bruto)){  
  25.         $error = 5;  
  26.     }elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){    
  27.         $error = 6;  
  28.     }else{
  29.         $error = 0;
  30.     }
  31.     $hasError = checkErrors($error, $datos, $nombre, $apellido);
  32.     if($hasError != false){
  33.         echo $hasError;
  34.         unlink($destino);
  35.         break;
  36.     }else{
  37.         $hasError = true;
  38.     }
  39. }
  40. if($hasError == true){
  41.     unlink($destino);
  42.     echo "
  43.     <script>  
  44.         alert('Importacion exitosa');  
  45.         window.location.href='form.htm';  
  46.     </script>";
  47. }
  48. function checkErrors($error, $datos, $nombre, $apellido){          
  49.     $mensaje = '';
  50.     if($error == 1){  
  51.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  52.        Corrija el siguiente campo $apellido e importe el archivo nuevamente";  
  53.     }  
  54.     elseif($error == 2){  
  55.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  56.        Corrija el siguiente campo $nombre e importe el archivo nuevamente";  
  57.     }  
  58.     elseif($error == 3){  
  59.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  60.        Corrija el siguiente campo {$datos[2]} e importe el archivo nuevamente";  
  61.     }  
  62.     elseif($error == 4){  
  63.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  64.        Corrija el siguiente campo {$datos[3]} e importe el archivo nuevamente";  
  65.     }  
  66.     elseif($error == 5){  
  67.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  68.        Corrija el siguiente campo {$datos[4]} e importe el archivo nuevamente";  
  69.     }  
  70.     elseif($error == 6){  
  71.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  72.        Corrija el siguiente campo {$datos[5]} e importe el archivo nuevamente";  
  73.     }elseif($error == 0){  
  74.         if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='{$datos[2]}'"))){  
  75.             mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','{$datos[2]}','{$datos[3]}','{$datos[4]}','{$datos[5]}')");  
  76.         }else{  
  77.             mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='{$datos[2]}', basico='{$datos[3]}', bruto='{$datos[4]}', afiliado='{$datos[5]}' WHERE cuil='{$datos[2]}'");
  78.         }
  79.     }
  80.     if($mensaje != ''){
  81.         return $mensaje;
  82.     }
  83.     return false;
  84. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #22 (permalink)  
Antiguo 19/06/2013, 08:07
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

No, no funciona. Me sigue tirando un error

La importacion se detuvo por el siguiente error
Corrija el siguiente campo 54Bianchi e importe el archivo nuevamente Warning: unlink(files/eaa2c2_prueba_importar2.csv): No such file or directory in /home/u133075534/public_html/upload/upload.php on line 114
__________________
Nico...
  #23 (permalink)  
Antiguo 19/06/2013, 08:15
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Con esto deberia funcionar...

Código PHP:
Ver original
  1. <?php
  2. $error = 0;  
  3. $file = fopen($destino, "r");  
  4. while ($datos = fgetcsv ($file, 1000, ","))  
  5. {  
  6.     $num = count($datos);  
  7.     $apellido = $datos[0];  
  8.     $apellido = str_replace("'"," ",$apellido);  
  9.     $nombre = $datos[1];  
  10.     $nombre = str_replace("'"," ",$nombre);  
  11.     $cuil = $datos[2];  
  12.     $basico = $datos[3];  
  13.     $bruto = $datos[4];  
  14.     $afili = $datos[5];  
  15.  
  16.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){  
  17.         $error = 1;  
  18.     }elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){  
  19.         $error = 2;  
  20.     }elseif(!cuitValido($cuil)){  
  21.         $error = 3;  
  22.     }elseif(!is_numeric($basico)){  
  23.         $error = 4;  
  24.     }elseif(!is_numeric($bruto)){  
  25.         $error = 5;  
  26.     }elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){    
  27.         $error = 6;  
  28.     }else{
  29.         $error = 0;
  30.     }
  31.     $hasError = checkErrors($error, $datos, $nombre, $apellido);
  32.     if($hasError != false){
  33.         echo $hasError;
  34.         fclose($file);
  35.         unlink($destino);
  36.         break;
  37.     }else{
  38.         $hasError = true;
  39.     }
  40. }
  41. if($hasError == true){
  42.     fclose($file);
  43.     unlink($destino);
  44.     echo "
  45.     <script>  
  46.         alert('Importacion exitosa');  
  47.         window.location.href='form.htm';  
  48.     </script>";
  49. }
  50. function checkErrors($error, $datos, $nombre, $apellido){          
  51.     $mensaje = '';
  52.     if($error == 1){  
  53.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  54.        Corrija el siguiente campo $apellido e importe el archivo nuevamente";  
  55.     }  
  56.     elseif($error == 2){  
  57.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  58.        Corrija el siguiente campo $nombre e importe el archivo nuevamente";  
  59.     }  
  60.     elseif($error == 3){  
  61.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  62.        Corrija el siguiente campo {$datos[2]} e importe el archivo nuevamente";  
  63.     }  
  64.     elseif($error == 4){  
  65.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  66.        Corrija el siguiente campo {$datos[3]} e importe el archivo nuevamente";  
  67.     }  
  68.     elseif($error == 5){  
  69.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  70.        Corrija el siguiente campo {$datos[4]} e importe el archivo nuevamente";  
  71.     }  
  72.     elseif($error == 6){  
  73.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  74.        Corrija el siguiente campo {$datos[5]} e importe el archivo nuevamente";  
  75.     }elseif($error == 0){  
  76.         if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='{$datos[2]}'"))){  
  77.             mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','{$datos[2]}','{$datos[3]}','{$datos[4]}','{$datos[5]}')");  
  78.         }else{  
  79.             mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='{$datos[2]}', basico='{$datos[3]}', bruto='{$datos[4]}', afiliado='{$datos[5]}' WHERE cuil='{$datos[2]}'");
  80.         }
  81.     }
  82.     if($mensaje != ''){
  83.         return $mensaje;
  84.     }
  85.     return false;
  86. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #24 (permalink)  
Antiguo 19/06/2013, 08:23
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

No, tampoco.

La importacion se detuvo por el siguiente error
Corrija el siguiente campo 4Fernandez e importe el archivo nuevamente Warning: fclose(): 13 is not a valid stream resource in /home/u133075534/public_html/upload/upload.php on line 115 Warning: unlink(files/d56dfc_prueba_importar2.csv): No such file or directory in /home/u133075534/public_html/upload/upload.php on line 116

Jonni tambien podria validar el archivo, mostrar los datos en una tabla al usuario y con otro boton hacer el INSERT o UPDATE. Es un poco mas largo pero creo que podria solucionar este inconveniente, no crees?
__________________
Nico...
  #25 (permalink)  
Antiguo 19/06/2013, 08:36
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Código PHP:
Ver original
  1. <?php
  2. $error = 0;
  3. $file = fopen($destino, "r");  
  4. $check = false;
  5. while ($datos = fgetcsv ($file, 1000, ","))  
  6. {  
  7.     $num = count($datos);  
  8.     $apellido = $datos[0];  
  9.     $apellido = str_replace("'"," ",$apellido);  
  10.     $nombre = $datos[1];  
  11.     $nombre = str_replace("'"," ",$nombre);  
  12.     $cuil = $datos[2];  
  13.     $basico = $datos[3];  
  14.     $bruto = $datos[4];  
  15.     $afili = $datos[5];  
  16.  
  17.     if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){  
  18.         $error = 1;  
  19.     }elseif(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){  
  20.         $error = 2;  
  21.     }elseif(!cuitValido($cuil)){
  22.        $error = 3;  
  23.     }elseif(!is_numeric($basico)){  
  24.         $error = 4;  
  25.     }elseif(!is_numeric($bruto)){  
  26.         $error = 5;  
  27.     }elseif(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){    
  28.         $error = 6;  
  29.     }else{
  30.         $error = 0;
  31.     }
  32.     $hasError = checkErrors($error, $datos, $nombre, $apellido);
  33.     if($hasError != false){
  34.         echo $hasError;
  35.         fclose($file);
  36.         unlink($destino);
  37.         $check = false;
  38.         break;
  39.     }else{
  40.         $check = true;
  41.     }
  42. }
  43. if($check == true){
  44.     fclose($file);
  45.     unlink($destino);
  46.     echo "
  47.     <script>  
  48.         alert('Importacion exitosa');  
  49.         window.location.href='form.htm';  
  50.     </script>";
  51. }
  52. function checkErrors($error, $datos, $nombre, $apellido){          
  53.     $mensaje = '';
  54.     if($error == 1){  
  55.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  56.        Corrija el siguiente campo $apellido e importe el archivo nuevamente";  
  57.     }  
  58.     elseif($error == 2){  
  59.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  60.        Corrija el siguiente campo $nombre e importe el archivo nuevamente";  
  61.     }  
  62.     elseif($error == 3){  
  63.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  64.        Corrija el siguiente campo {$datos[2]} e importe el archivo nuevamente";  
  65.     }  
  66.     elseif($error == 4){  
  67.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  68.        Corrija el siguiente campo {$datos[3]} e importe el archivo nuevamente";  
  69.     }  
  70.     elseif($error == 5){  
  71.         $mensaje = "La importacion se detuvo por el siguiente error <br />
  72.        Corrija el siguiente campo {$datos[4]} e importe el archivo nuevamente";  
  73.     }  
  74.     elseif($error == 6){  
  75.         $mensaje = "La importacion se detuvo por el siguiente error <br />  
  76.        Corrija el siguiente campo {$datos[5]} e importe el archivo nuevamente";  
  77.     }elseif($error == 0){  
  78.         if(!mysql_num_rows(mysql_query("SELECT cuil FROM ddjj WHERE cuil='{$datos[2]}'"))){  
  79.             mysql_query("INSERT INTO ddjj VALUES ('null','$apellido','$nombre','{$datos[2]}','{$datos[3]}','{$datos[4]}','{$datos[5]}')");  
  80.         }else{  
  81.             mysql_query("UPDATE ddjj SET apellido='$apellido', nombre='$nombre', cuil='{$datos[2]}', basico='{$datos[3]}', bruto='{$datos[4]}', afiliado='{$datos[5]}' WHERE cuil='{$datos[2]}'");
  82.         }
  83.     }
  84.     if($mensaje != ''){
  85.         return $mensaje;
  86.     }
  87.     return true;
  88. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #26 (permalink)  
Antiguo 19/06/2013, 08:46
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Me tira el mensaje de error solo si el primer registro esta mal.
Si el archivo no contiene ningun error me devuelve 1 y me inserta solo el primer registro y no todos.
__________________
Nico...
  #27 (permalink)  
Antiguo 19/06/2013, 08:53
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

jejeje el problema es el return true de checkErrors, tiene q ser return false

Código PHP:
Ver original
  1. if($mensaje != ''){
  2.     return $mensaje;
  3. }
  4. return false;

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #28 (permalink)  
Antiguo 19/06/2013, 09:03
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Uhh te re agradezco...sos un capo....gracias por la paciencia...pocas veces vista.
Una ultima, me podes explicar que haces con el check=false?

Gracias
__________________
Nico...
  #29 (permalink)  
Antiguo 19/06/2013, 09:17
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Devuelve mal el mensaje de error

Pues mira, el codigo planteado hacer lo siguiente:

1. Primero abre el archivo csv y obtiene los datos, check esta en false ya que aun no se ha validado información, de esta manera evitamos redireccionar.

2. Luego se hacen las validaciones de los datos y generamos un codigo de error por cada fila, en caso de que encuentre un error este codigo sera diferente de 0.

3. Luego de obtener el codigo de error pasamos las variables a la funcion que verificara si hay error y retornara el mensaje correspondiente, en caso de que no haya error, guarda los datos en la base de datos y retornara false.

4. El aplicativo verificara que le funcion checkErrors retorne false, en caso de no ser asi es porque existe un error, por ende mostrara el mensaje cerrara la instancia del archivo abierto por fopen y eliminamos el archivo (si no usamos fclose unlink retornara un error de permiso denegado). Decimos que check es false, porque existe un error y usamos break para salir del ciclo.
Si no hay errores decimos que check es true.

Hasta aqui el punto 2 al 4 siempre se repetira por cada fila, en caso de error se interrumpe la importacion.

5. Despues de terminar el ciclo determinamos el valor de check, si es true es porque TODOS los datos del csv son correctos, cerramos la instancia de fopen y eliminamos el archivo, posteriormente motramos el mensaje de confirmacion y redirigimos

Espero que te haya sido util.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #30 (permalink)  
Antiguo 19/06/2013, 09:25
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Devuelve mal el mensaje de error

Sos un genio, muy bien explicado!

Muchas gracias
__________________
Nico...

Etiquetas: devuelve, mensaje, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:32.