Foros del Web » Programando para Internet » PHP »

importar csv (problema)

Estas en el tema de importar csv (problema) en el foro de PHP en Foros del Web. hola, resulta que estoy generando un archivo csv a partir de una consulta a la bd, el script que me lo genera es: Código PHP: ...
  #1 (permalink)  
Antiguo 24/05/2006, 13:07
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 25 años, 3 meses
Puntos: 20
importar csv (problema)

hola, resulta que estoy generando un archivo csv a partir de una consulta a la bd, el script que me lo genera es:

Código PHP:
<?php
  
include('connect.php');
   
$mun=$_GET['mun'];
   
$sql="SELECT * FROM datos_admtivos INNER JOIN datos_municipio ON datos_municipio.cod_inst = datos_admtivos.cod_inst INNER JOIN manejo_residuos ON manejo_residuos.cod_inst = datos_admtivos.cod_inst INNER JOIN comp_interno ON comp_interno.cod_inst = datos_admtivos.cod_inst INNER JOIN comp_externo ON comp_externo.cod_inst = datos_admtivos.cod_inst INNER JOIN fuentes_generacion ON fuentes_generacion.cod_inst = datos_admtivos.cod_inst INNER JOIN procesos_eliminacion ON procesos_eliminacion.cod_inst = datos_admtivos.cod_inst INNER JOIN desactivacion_residuos ON desactivacion_residuos.cod_inst = datos_admtivos.cod_inst INNER JOIN resnopel_bio ON resnopel_bio.cod_inst = datos_admtivos.cod_inst INNER JOIN resnopel_rec ON resnopel_rec.cod_inst = datos_admtivos.cod_inst INNER JOIN resnopel_ine ON resnopel_ine.cod_inst = datos_admtivos.cod_inst INNER JOIN resnopel_ord ON resnopel_ord.cod_inst = datos_admtivos.cod_inst INNER JOIN respelin_bio ON respelin_bio.cod_inst = datos_admtivos.cod_inst INNER JOIN respelin_ana ON respelin_ana.cod_inst = datos_admtivos.cod_inst INNER JOIN respelin_cor ON respelin_cor.cod_inst = datos_admtivos.cod_inst INNER JOIN respelin_ani ON respelin_ani.cod_inst = datos_admtivos.cod_inst INNER JOIN respequi_far ON respequi_far.cod_inst = datos_admtivos.cod_inst INNER JOIN respequi_cit ON respequi_cit.cod_inst = datos_admtivos.cod_inst INNER JOIN respequi_mtp ON respequi_mtp.cod_inst = datos_admtivos.cod_inst INNER JOIN respequi_rea ON respequi_rea.cod_inst = datos_admtivos.cod_inst INNER JOIN respequi_cot ON respequi_cot.cod_inst = datos_admtivos.cod_inst INNER JOIN respequi_ace ON respequi_ace.cod_inst = datos_admtivos.cod_inst INNER JOIN respe_rad ON respe_rad.cod_inst = datos_admtivos.cod_inst AND datos_admtivos.cod_inst = '".$mun."'";
   
$rs=mysql_query($sql);
   
$datos="";
   if(isset(
$rs) && mysql_num_rows($rs)>0)
   {
       
//numero de filas y columnas de conjunto de datos
       
$nrows=mysql_num_rows($rs);
       
$ncols=mysql_num_fields($rs);
       
//se recorre el recordset fila a fila, campo a campo
       
for($i=0;$i<$nrows;$i++)
       {
          for(
$j=0;$j<$ncols;$j++)
             
//se concatenan os valores
             
$datos.=mysql_result($rs,$i,$j).";";
          
//se quita el ; sobrante y se añade un salto de linea
          
$datos=substr($datos,0,strlen($datos)-1)."\n";
       }
       
$archivo="hospitalarios.csv";
       
//se pasa a un archivo, luego se crea un enlace
       
$fp=fopen($archivo,"w+");
       
fwrite($fp,$datos);
       
fclose($fp);
       
mysql_free_result($rs);
?>
    <a href="<?php echo $archivo;?>">Bajar archivo</a>
<?php

   
}
?>
y necesito importarlo a una bd que tiene aprox 17 tablas, el script que tengo para importarlo es:

Código PHP:
<? 
    $dbh
=mysql_connect ("localhost", "root", "") or die ('I cannot connect to the database because: ' . mysql_error()); 
    
mysql_select_db ("bdhospitalarios"); 
       
    
$handle = fopen ("bd.csv", "r");       
    if (
$handle) 
    { 
        
$row = explode("\n", fread($handle, filesize("bd.csv"))); 
    } 
     
$i = 0; 
     while (
$i < $row){ 
    foreach(
$row as $data) 
    {       
        
$data = explode(";", $row[$i], 8); 

        echo 
'<table border="1">'; 
        echo 
'<tr>'; 
        
/*$sql = "INSERT INTO empresas (nombre,apellido1,apellido2,cargo,empresa,direccion,telefono,extension,ciudad)    VALUES (0"; 
        foreach($data as $field) 
        {       
            echo "<td><b>".$field."</b></td>"; 
            $sql .= ",'$field'"; 
        } 
        $sql .= ");";*/
        
        
$sql = "INSERT INTO clientes (empresa,direccion,telefono,telefono2,ciudad,contacto_nombre,contacto_apellido,cargo_contacto)    VALUES (";
        foreach(
$data as $field)
        {      
            echo 
"<td><b>".$field."</b></td>";
            
$sql .= "'$field',";
        }
        
$sql = substr($sql, 0, strlen($sql) - 1);  
//suponiendo que PHP te admita esa función, pero seguro que tiene 
//alguna parecida, ya que si no te quedaría una , al final de la instrucción
        
$sql .= ");";  
        
mysql_db_query ("share_marketing", $sql) or die (mysql_error()); 
        echo 
'</tr>'; 
        echo 
'</table>'; 
    
$i++; 
    } 
    } 
?>
este es un script que ya he usado y funciona de lujo, el cuento es que necesito importar el csv que me genera el primer script y que tiene esta fornma:

Cita:
INS24 TRES rwe Prueba1 rew rew INS24 valle del cauca ALC INS24 wer rew erw erw wer ewr ew ew ew erw
es decir me lo organiza en filas y no en columnas, lo que necesito saber es como modifico mi 2 script para poder insertar estos datos de manera correspondiente a cada tabla?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 24/05/2006, 14:35
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 25 años, 3 meses
Puntos: 20
bien, ya logre cuadrar el script para que me lo genere en columnas ahora, no se es como lo puedo insertar a las 22 tablas con el script que tengo
__________________
Say no more.......
  #3 (permalink)  
Antiguo 24/05/2006, 14:58
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 25 años, 3 meses
Puntos: 20
bien, me dicen que para poder insertar estos datos a las 22 tablas debo definir unos condicionales y bucles, el problema es que no se como hacerlos, quien me puede dar una ayuda con esto, es urgente
__________________
Say no more.......
  #4 (permalink)  
Antiguo 25/05/2006, 09:13
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 25 años, 3 meses
Puntos: 20


chicos, help me
__________________
Say no more.......
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 15:51.