Foros del Web » Programando para Internet » PHP »

Saltar registro en importación de CSV

Estas en el tema de Saltar registro en importación de CSV en el foro de PHP en Foros del Web. Tengo un CSV con dos columnas: Nombre y mail. Necesito importarla a una tabla mysql con el único requisito es que si uno de los ...
  #1 (permalink)  
Antiguo 08/08/2014, 12:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Pregunta Saltar registro en importación de CSV

Tengo un CSV con dos columnas: Nombre y mail.

Necesito importarla a una tabla mysql con el único requisito es que si uno de los mails ya existen en la tabla lo saltée no se si estaré muy quemado o que pero no puedo hallar el código para armarlo.

Utilizo éste código para la importación:

Código PHP:
Ver original
  1. <?php
  2. include("config.php");
  3.  
  4. $file = $_FILES['csv']['tmp_name'];
  5.     $handle = fopen($file,"r");
  6.    
  7.     //loop through the csv file and insert into database
  8.     do {
  9.         if ($file) {
  10.             mysql_query("INSERT INTO afiliados (nombre, mail) VALUES
  11.                (
  12.                    '".$data[0]."',
  13.                    '".$data[1]."'
  14.                )
  15.            ");
  16.         }
  17.     } while ($data = fgetcsv($handle,1000,",","'"));
  18. ?>

Imagino que lo que debo hacer es usar mysql_num_rows para contar los registros de mail comparandolos con $data[1] y si da valor dmayor a 0 que no escriba... pero donde meto eso en el rulo del código?
  #2 (permalink)  
Antiguo 08/08/2014, 13:12
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Saltar registro en importación de CSV

Por que no mejor con un foreach y una function que chequee si existe el email ?
Algo asi:
Código PHP:
Ver original
  1. <?php
  2. include("config.php");
  3.  
  4. $file = $_FILES['csv']['tmp_name'];
  5.     $handle = fopen($file,"r");
  6.    $data = fgetcsv($handle,1000,",","'");
  7.            
  8.    foreach($data as $k => $v){
  9.      if(!check_email($v[1])){
  10.        mysql_query("INSERT INTO afiliados (nombre, mail) VALUES
  11.                (
  12.                    '".$v[0]."',
  13.                    '".$v[1]."'
  14.                )
  15.            ");
  16.      }
  17.    }        
  18.            
  19.    function check_email($email){
  20.      
  21.      //si existe el email en la db
  22.      //return true;
  23.      //si no existe
  24.      //return false
  25.      
  26.    }
__________________
la la la
  #3 (permalink)  
Antiguo 11/08/2014, 05:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Saltar registro en importación de CSV

Usé este código:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $file = $_FILES['csv']['tmp_name'];
  4.     $handle = fopen($file,"r");
  5.    
  6.     //loop through the csv file and insert into database
  7.     do {
  8.         if ($file) {
  9.             $check = @mysql_result(mysql_query('SELECT COUNT(*) FROM afiliados WHERE mail = "'.mysql_real_escape_string($data[1]).'"'),0);
  10.             if($check < 1)
  11.                 mysql_query("INSERT INTO afiliados (nombre, mail) VALUES
  12.                     (
  13.                         '".$data[0]."',
  14.                         '".$data[1]."'
  15.                     )
  16.                 ");
  17.         }
  18.     } while ($data = fgetcsv($handle,1000,",","'"));
  19. ?>

Por ahora anda bien, gracias por la ayuda, ahora tengo que solucionar lo de los ascentos.

Etiquetas: csv, mysql, registro, saltar, tabla
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 13:03.