Foros del Web » Programando para Internet » PHP »

No consigo insertar contenido de archivo csv en mysql

Estas en el tema de No consigo insertar contenido de archivo csv en mysql en el foro de PHP en Foros del Web. Hola, como pongo en el título del post, he creado un formulario html para cargar un archivo csv y un script php tratar el archivo ...
  #1 (permalink)  
Antiguo 13/03/2007, 11:33
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
No consigo insertar contenido de archivo csv en mysql

Hola,

como pongo en el título del post, he creado un formulario html para cargar un archivo csv y un script php tratar el archivo e insertar su contenido en una base de datos MySQL.

El código del formulario html es este:
Código:
<form action="subir.php" method="post" name="miformu"> 
<input name"archivo" type="file"> 
<input type="submit" name="subir" value="Subir" class="Button" /> 
</form>
Aparentemente, en este formulario no hay ningún problema.

Y el código del script php es este otro:
Código:
<?  
	 # Leemos las lineas del archvo que tendran la forma: 
   # "campo1","campo2","campo3","campo4 " 
   $lineas = $archivo; 
  # Conectamos con la base de datos ... 
    $connect  = mysql_connect("localhost", "joseluis", "joseluis"); 
    mysql_select_db("joseluis", $connect); 

  # Recorro todas las lineas, y voy ejecutando el insert into con cada linea 
  for ($i = 0;  $i < sizeof($lineas);  $i++){ 
    $sql = "INSERT INTO alumnosunimad VALUES (".$lineas[$i].")"; 
    mysql_query($sql, $connect); 
   }
	 
?>
Durante todo el proceso no me aparece ningún error pero, al final, examino el contenido de la tabla en la base de datos y veo que no me ha insertado nada.

¿Qué es lo que puede estar fallando? Os agradezco mucho, de antemano, cualquier ayuda.

Gracias!!!
__________________
Nadie dijo que ésto iba a ser fácil
  #2 (permalink)  
Antiguo 13/03/2007, 11:41
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
De acuerdo Re: No consigo insertar contenido de archivo csv en mysql

pon el tema con el codigo completo por favor que necesito lo mismo... gracias...
__________________
sEIK! -Chile-
Analista Programador.
  #3 (permalink)  
Antiguo 13/03/2007, 12:19
Avatar de iskariote  
Fecha de Ingreso: marzo-2007
Mensajes: 39
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: No consigo insertar contenido de archivo csv en mysql

por lo que pones en tu codigo, no veo en ningun lado que abras el archivo en cuestion....

deberia ser una cosa asi:

$archivo = $_POST['archivo'];

if fopen($archivo)
{
while (!(feof($archivo)))
{
......
}
}

atte

ISKARIOTE
  #4 (permalink)  
Antiguo 14/03/2007, 02:56
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: No consigo insertar contenido de archivo csv en mysql

Cita:
Iniciado por seik! Ver Mensaje
pon el tema con el codigo completo por favor que necesito lo mismo... gracias...
Cuando me funcione, te paso el código completo para que puedas utilizarlo, ¿ok?

Saludos!!!
__________________
Nadie dijo que ésto iba a ser fácil
  #5 (permalink)  
Antiguo 14/03/2007, 03:06
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Re: No consigo insertar contenido de archivo csv en mysql

Fijate si esto te sirve:
los parámetros son nombre del archivo csv, $vector_campos=array('nombre de campo1','nombre del campo2','nombre del campo n'), y el nombre de la tabla.
Funciona con archivos subidos. Si se usa un form de upload, habrá que colocar $_FILES['nombre_campo_archivo']['tmp_name'] como primer parámetro cuando se llame a la función.
Tiene como ventaja hacer una única consulta para la inserción, lo cual es fundamental si el archivo es muy grande.
Código PHP:
function tomar_datos_archivo($nombre_archivo,$vector_campos,$tabla){
    
$formatocampos=implode(',',$vector_campos);
    
$strquery="insert into $tabla ($formatocampos) values";
    
$vec_uno=file($nombre_archivo);
    for(
$i=0;$i<count($vec_uno);$i++){
        
$formatovalores='';
        
$miarray=explode(';',$vec_uno[$i]);
            for(
$j=0;$j<(count($vector_campos));$j++){
                
$formatovalores.=mysql_real_escape_string(trim($miarray[$j]))."','";
            }
        
$formatovalores=substr($formatovalores,0,(strlen($formatovalores)-3));
        
$strquery.=" ('$formatovalores') ,";
    }
$strquery=substr($strquery,0,(strlen($strquery)-1)).';';
mysql_query($strquery);
echo 
'listo';


Última edición por Panino5001; 14/03/2007 a las 03:20
  #6 (permalink)  
Antiguo 14/03/2007, 11:27
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
Sigue sin funcionar...

Hola,

después de trastear un poco por ahí, he creado el siguiente script:
Código:
<?

  $mysql_host = 'localhost';
  $mysql_username = 'joseluis';
  $mysql_password = 'joseluis';
  $mysql_dbName = 'joseluis';
  $dbh = mysql_connect("$mysql_host", "$mysql_username", "$mysql_password");
         mysql_select_db("$mysql_dbName");

  	

	$vector_campos=array('dni','nombre','universidad');
	$tabla='alumnosunimad';
  

	
   //function tomar_datos_archivo($nombre_archivo,$vector_campos,$tabla){ 
     $formatocampos=implode(',',$vector_campos); 
     $strquery="insert into $tabla ($formatocampos) values"; 
     $vec_uno=file($_FILES['archivo']['archivo']); 
     for($i=0;$i<count($vec_uno);$i++){ 
       $formatovalores=''; 
       $miarray=explode(';',$vec_uno[$i]); 
       for($j=0;$j<(count($vector_campos));$j++){ 
         $formatovalores.=mysql_real_escape_string(trim($miarray[$j]))."','"; 
       } 
       $formatovalores=substr($formatovalores,0,(strlen($formatovalores)-3)); 
       $strquery.=" ('$formatovalores') ,"; 
     } 
     $strquery=substr($strquery,0,(strlen($strquery)-1)).';'; 
     mysql_query($strquery); 
 //}
	 
	 mysql_close($dbh);  

?>

<form action="<?php echo $PHP_SELF;?>" method="post" name="miformu"> 
<input name"archivo" type="file"> 
<input type="submit" name="subir" value="Subir" class="Button" /> 
</form>
En teoría, ésto tendría que coger un archivo csv que examine el usuario e insertar el contenido de dicho archivo en la base de datos. Lo he probado y lo que hace es almacenar el valor 0 (cero) en el primer campo de la tabla.
Yo creo que lo que está fallando es que el fichero no está bien abierto o algo así, en resumen, creo que el problema está al leer el fichero, ¿qué opinais vosotros?

Muchas gracias por la ayuda!!
__________________
Nadie dijo que ésto iba a ser fácil
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 04:27.