Foros del Web » Programando para Internet » PHP »

leer archivo csv con php

Estas en el tema de leer archivo csv con php en el foro de PHP en Foros del Web. Estimados Tengo una pequeña funcion para importar un archivo csv a mysql , ahora mi duda es que necesito leer este archivo para poder identificar ...
  #1 (permalink)  
Antiguo 03/08/2012, 10:32
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 9 años, 2 meses
Puntos: 61
leer archivo csv con php

Estimados

Tengo una pequeña funcion para importar un archivo csv a mysql , ahora mi duda es que necesito leer este archivo para poder identificar las columnas a subir por ej:

codigo_interno
AA123

codigo_tienda
111233444

el csv vendria con esos nombres predefinidos para cargarse y deberian cargarse los datos solo en las columnas correspondientes , espero se haya entendido.

Código PHP:
function Importar_CSV($link){
            
        
$row 1
        
$fp fopen ($_FILES["archivo"]["tmp_name"],"r");
        
$tipo_archivo  end(explode("."$_FILES["archivo"]["name"]));
        if (
$tipo_archivo != "csv") { 
            echo 
"solo se permiten subir archivos CSV";
            exit();
        }else{
            while (
$data fgetcsv ($fp1000";")){ 
                
$num count ($data); 
                print 
" <br>"
                
$row++; 
                echo 
"$row- ".$data[0].$data[1]; 
                
$insertar="INSERT INTO tb_tarjetas(codigo_interno,codigo_tienda) VALUES ('$data[0]','$data[1]')"
                
mysql_query($insertar); 
                }
            }
//else 
            
fclose ($fp); 
    }                        
?> 

Saludos y de antemano gracias
  #2 (permalink)  
Antiguo 03/08/2012, 10:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 11 años, 10 meses
Puntos: 528
Respuesta: leer archivo csv con php

Pues no, no he entendido, si ya lees el archivo con fgetcsv ¿cuál es la duda concreta? quizá me equivoque o te entiendo mal, pero salvo el encabezado, no conozco archivos csv que en cada fila tengan las etiquetas.
  #3 (permalink)  
Antiguo 03/08/2012, 12:14
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 9 años, 2 meses
Puntos: 61
Respuesta: leer archivo csv con php

La idea es leer los encabezados especificos de cada columna del csv , asi solo exporta los que contengan ese nombre por ej : esta el encabezado nombre y apellido (que exporte solo esos dos datos) pero el csv ademas trae dirección el telefono.

Saludos espero se haya entendido mi problema.
  #4 (permalink)  
Antiguo 03/08/2012, 12:25
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 11 años, 10 meses
Puntos: 528
Respuesta: leer archivo csv con php

Pues si el archivo contiene los encabezados, puedes leerlos en la primer fila y ubicar su índice, que será igual que en un arreglo. Es decir si lees el encabezado podrás saber la posición donde se encuentra la información en las filas posteriores.
  #5 (permalink)  
Antiguo 03/08/2012, 13:15
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 9 años, 2 meses
Puntos: 61
Respuesta: leer archivo csv con php

Amigo me podrias ayudar con alguna ilustración ejemplo de lo que me indicas.

saludos
  #6 (permalink)  
Antiguo 06/08/2012, 15:51
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 9 años, 2 meses
Puntos: 61
Respuesta: leer archivo csv con php

Siguiendo con el tema no lo e podido conseguir , tenia la idea de hacer algo como esto .

Código PHP:
Ver original
  1. function Importar_CSV($link){
  2.            
  3.         $row = 1;
  4.         $fp = fopen ($_FILES["archivo"]["tmp_name"],"r");
  5.         $tipo_archivo  = end(explode(".", $_FILES["archivo"]["name"]));
  6.         $columnas = array("codigo_interno", "codigo_tienda");
  7.         if (empty($fp)){
  8.             echo"No adjuntaste ning&uacute;n archivo";
  9.             exit();
  10.         }
  11.         if ($tipo_archivo != "csv") {
  12.             echo "solo se permiten subir archivos CSV";
  13.             exit();
  14.         }else{
  15.             while ($data = fgetcsv ($fp, 1000, ";")){
  16.                 $num = count ($data);
  17.                 print " <br>";
  18.                 $row++;
  19.                 echo "$row- ".$data[0].$data[1];
  20.                 if (in_array($columnas, $data)) {
  21.                 echo "Se encontraron las columnas en el CSV\n";
  22.                 $insertar="INSERT INTO tb_tarjetas(codigo_interno,codigo_tienda) VALUES ('$data[0]','$data[1]')";
  23.                 mysql_query($insertar);
  24.                 }
  25.                 }//while
  26.             }//else
  27.             fclose ($fp);
  28.     }

espero me puedan dar una mano.

Saludos
  #7 (permalink)  
Antiguo 13/01/2016, 12:34
 
Fecha de Ingreso: enero-2016
Mensajes: 1
Antigüedad: 4 años, 2 meses
Puntos: 0
Respuesta: leer archivo csv con php

Hola, este es un ejemplo en el cual puedes leer un archivo.csv ubicado en la misma carpeta e insertar en mysql , teniendo en cuenta que el csv tiene encabezados y el automaticamente el codigo no los ingresa e inserta los registros correspondientes.
Nota: El csv tiene tres datos Nombre,Edad,Profesion con n cantidad de registros

<?php
require 'conexion.php';
$registros = array();
if (($fichero = fopen("archivo.csv", "r")) !== FALSE) {
// Lee los nombres de los campos

$nombres_campos = fgetcsv($fichero, 0, ",", "\"", "\"");
$num_campos = count($nombres_campos);
print $nombres_campos[$num_campos -1].'<br>';
$row = 1;
while ($data = fgetcsv ($fichero, 1000, ";")){

$num = count ($data);
$row++;
// echo $row.$data[0].$data[1];
$sql="INSERT INTO personal(nombre,edad,profesion) VALUES ('$data[0]','$data[1]','$data[2]')";
$mysqli -> query ($sql);
}

//mysql_query($insertar);

fclose ($fichero );
}
?>

Etiquetas: csv, mysql
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 14:46.