Foros del Web » Programando para Internet » PHP »

Error al importar archivo csv desde form

Estas en el tema de Error al importar archivo csv desde form en el foro de PHP en Foros del Web. Hola a todos! Tengo un problema al importar un archivo csv y me sale este error: " Warning: fopen($archivo) [function.fopen]: failed to open stream: No ...
  #1 (permalink)  
Antiguo 13/08/2011, 08:42
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años
Puntos: 1
Error al importar archivo csv desde form

Hola a todos! Tengo un problema al importar un archivo csv y me sale este error:
"Warning: fopen($archivo) [function.fopen]: failed to open stream: No such file or directory in..."
"Warning: fgetcsv() expects parameter 1 to be resource, boolean given in..."

La idea más importante es que pueda seleccionar el archivo desde cualquier ubicación de la PC y que no necesariamente esté en la misma carpeta que el formulario.

Por otro lado, las celdas (los campos) del archivo csv contienen el dato + espacios vacios... o sea, dice por ejemplo: FORD______hasta acá, donde las _ son espacios en blanco. La pregunta es: cómo puedo hacer al importar el archivo para quiotarle esos "restos" vacíos?

Estos son los archivos que uso:

Código HTML:
<form action="csv-subir.php" method="post" name="miformu"> 
<input name"archivo" type="file"> 
<input type="submit" name="subir" value="Subir" class="Button" /> 
</form> 
Código PHP:
include('conectar.php');

$archivo $_POST['archivo'];

$row 1;
$fp fopen ('$archivo','r');
while (
$data fgetcsv ($fp1000";"))
{
$num count ($data);
print 
" <br>";
$row++;
echo 
"$row- ".$data[0].$data[1].$data[2].$data[3].$data[4].$data[5].$data[6].$data[7];
$insertar="INSERT INTO articulos (cod_articulo,cod_categoria,categoria,cod_linea,linea,descripcion,precio,unidad) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]')";
mysql_query($insertar);
}
fclose ($fp); 
Desde ya muchas gracias a todos.
Saludos. MArx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 13/08/2011, 08:59
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Error al importar archivo csv desde form

Hola Pola para empezar los archivos se procesan con FILES

$archivo = $_FILES['archivo'];
/*
Con esto puedo ver la informacion del archivo que me llego por el formulario
*/
echo '<pre>';
print_r($archivo);
echo '</pre>';

y se envian el form asi:
<form enctype="multipart/form-data" action="csv-subir.php" method="post" name="miformu">
....
</form>

Bueno con eso ya te envia el archivo para procesarlo, si te sigue tirando error lo vemos

$fp = fopen ('$archivo','r');
while ($data = fgetcsv ($fp, 1000, ";"))
{
$insertar="INSERT INTO articulos (cod_articulo,cod_categoria,categoria,cod_linea,li nea,descripcion,precio,unidad) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]')";
mysql_query($insertar);
}
fclose ($fp);
  #3 (permalink)  
Antiguo 13/08/2011, 10:01
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años
Puntos: 1
Respuesta: Error al importar archivo csv desde form

Patriarka: gracias por responder. Me sigue tirando error:
Warning: fopen($archivo) [function.fopen]: failed to open stream: No such file or directory in D:\...\csv-subir.php on line 7

Warning: fgetcsv() expects parameter 1 to be resource, boolean given in D:\...\csv-subir.php on line 8

Warning: fclose(): supplied argument is not a valid stream resource in D:\...\csv-subir.php on line 17

Esto es porque el archivo tiene que estar en la misma carpeta que el archivo csv-subir.php? Que es justo lo que quiero evitar.

Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 13/08/2011, 10:25
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Error al importar archivo csv desde form

mostrame que te devuelve
echo '<pre>';
print_r($archivo);
echo '</pre>';
  #5 (permalink)  
Antiguo 13/08/2011, 10:36
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años
Puntos: 1
Respuesta: Error al importar archivo csv desde form

Me parece muy raro... no me devuelve nada. Lo miro de arriba hacia abajo y no puedo darme cuenta el xq.
Esto es lo que estoy haciendo:
Código HTML:
<form enctype="multipart/form-data" action="csv-subir.php" method="post" name="miformu">   
<input name"archivo" type="file"> 
<input type="submit" name="subir" value="Subir" class="Button" /> 
</form> 
csv-subir.php
Código PHP:
$archivo $_FILES['archivo'];
/*
Con esto puedo ver la informacion del archivo que me llego por el formulario
*/
echo '<pre>';
print_r($archivo);
echo 
'</pre>'
Simplemente aparece el html en blanco.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #6 (permalink)  
Antiguo 13/08/2011, 10:37
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años
Puntos: 1
Respuesta: Error al importar archivo csv desde form

Ah! Ya está. Me faltaba agregarle un = al campo del name del form.

Ahora si, me devuelve esto:
Array
(
[name] => prueba.csv
[type] => application/vnd.ms-excel
[tmp_name] => C:\Windows\Temp\php9FAB.tmp
[error] => 0
[size] => 17951
)

Edito: pero al probarlo para que suba el archivo me sigue saliendo el mismo error que te comenté mas arriba.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 13/08/2011, 11:15
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Error al importar archivo csv desde form

bueno fijate que [tmp_name] => C:\Windows\Temp\php9FAB.tmp te da el absoluto para que puedas accederlo desde un temporal

Etiquetas: csv, mysql, formulario
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:19.