Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2009, 06:32
climax2006
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 20 años, 6 meses
Puntos: 1
bucle que si existe registro no lo inserte y pase al siguiente

Hola: mi consulta es como puedo hacer dentro de un bucle, si existe el registro en la bdd O viene mal formateado, este no lo inserte y pase al siguiente, y de lo contrario lo inserte.

al finalizar, mostrar el total de insertados y no insertados.
lo primero que hago es cargar el csv en una tabla temporal
Código PHP:
$fp = fopen ($tmpdestino,"r");
$sql = "CREATE TEMPORARY TABLE T_TEMPUF (fecha DATE NOT NULL, uf DOUBLE NOT NULL)" ;
        
mysql_query($sql);

while (
$data = fgetcsv ($fp, 1000, ";"))
            {
                
$num = count ($data);
                
$tmpfecha     = VechaUsuario($data[0]);
                
$tmpanio     = substr($tmpfecha,0,4);
                
$tmpmes     = substr($tmpfecha,4,2);
                
$tmpdia     = substr($tmpfecha,6,2);
                if(!
checkdate($tmpmes,$tmpdia,$tmpanio))
                    {
                        
$msg.='FORMATO DE FECHA INCORRECTO, DEBE SER DD/MM/AAAA<br />';
                    }
                
$tmpmonto    = $data[1];
                if (!
is_numeric('0'.$tmpmonto))
                    {
                        
$msg.='MONTO UF NO ES NUMERICO<br />');
                    }
                
$insertar = "INSERT INTO T_TEMPUF (fecha,uf) VALUES ('".$tmpfecha."','".$tmpmonto."')";
                
mysql_query($insertar);
        
            }
        
fclose ($fp); 
despues de insertar en la temporal grabo en la tabla
Código PHP:
$tmpcuenta = 0;
        
$sql1 = "SELECT fecha,uf FROM T_TEMPUF ";
        
$sql1 = mysql_query($sql1);
        if ( 
mysql_num_rows($sql1) > 0) 
            {
                while (
$row = mysql_fetch_array($sql1))
                    {
                        
$sql = "SELECT * FROM T_MONEDA WHERE FECHA = '".VechaUsuario(VechaUsuario2($row[0]))."'";
                        
$sql = mysql_query($sql);
                        if (
mysql_num_rows($sql) == 0) 
                            {
                                
                                
$insertar = "INSERT INTO T_MONEDA (FECHA,MONTOUF) ";
                                
$insertar = $insertar."VALUES('".VechaUsuario(VechaUsuario2($row[0]))."','".$row[1]."')";
                                
mysql_query($insertar);
                            }
                    }
            } 
pero solo inserta, y si falla no manda ningun error

de antemanos gracias