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, 14:07
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 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($handlefilesize("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($sql0strlen($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, 15:35
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 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, 15:58
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 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, 10:13
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 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 10:49.