Foros del Web » Programando para Internet » PHP »

Insertar Registro En Bd

Estas en el tema de Insertar Registro En Bd en el foro de PHP en Foros del Web. Estoy trabajando con un upload de archivos y deseo almacenar en una BD los datos de mi archivo a subir como lo son su ruta ...
  #1 (permalink)  
Antiguo 05/05/2005, 17:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Insertar Registro En Bd

Estoy trabajando con un upload de archivos y deseo almacenar en una BD los datos de mi archivo a subir como lo son su ruta (en el servidor), nombre, tamaño y fecha en q se subio el archivo.

Tengo dos problemas:

1.- Obtener la ruta del archivo en el servidor para su descarga. Si logro subirlo pero cómo obtengo la ruta para descargarlo??.
** En el código q más abajo les paso no incluyo este dato al momento de intentar insertar el registro x q no c como obtenerlo, sólo considero los datos de nombre, tamaño y fecha.
2.- Ese registro q intento crear no me genera nada, q me hace falta?.

El código q estoy utilizando es este:
<
//conexión
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "****";
$bd_base = "archivos";

$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);

//datos del archivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];

$sql="INSERT INTO rutas (fecha,nombre,tamaño)";
$sql.="VALUES (NOW(),'$nombre_archivo','$tamano_archivo')";
?>
  #2 (permalink)  
Antiguo 05/05/2005, 19:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 76
Antigüedad: 12 años, 7 meses
Puntos: 0
Hola, lo que se me ocurrio para solucionar el problema de la ruta es simplemente concatenar al nombre del archivo la url de tu servidor, x ej: si tu dir es www.ultravioleta.com y los archivos los estas subiendo en la carpeta files te quedaria algo asi:

$path = "www.ultravioleta.com/files/" . $HTTP_POST_FILES['userfile'];

para obtener el tamaño en byte del archivo tenes la funcion filesize, seria algo asi:

$filename = "/tmp/prueba.txt";
$size = filesize($filename);

en cuanto al insert, nose hace un echo de la consulta antes de mandarla y controla que todo salga bien. Y si estas trabajando con una BD online usa el phpmyadmin y ingresa ese sql haber si funciona bien.


Mauricio A. Gomez
www.maurishio.com.ar
  #3 (permalink)  
Antiguo 06/05/2005, 09:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Hola!! grax x contestar. Sabes?, no me funciono; me imprime esto:

Ruta en server: http://localhost/upload_php/Array

Lo q hago es lo siguiente:

$path = "http://localhost/upload_php/" . $HTTP_POST_FILES['userfile'];
echo "Ruta en server:" . $path . "<br><br>";

Como vez es exactamente lo q me sugeriste pero me genera un array.
Y para el insert si estoy utilizando phpmyadmin, pero como dije no logro insertar nada, algo me falta pero aun no c.

Salu2
  #4 (permalink)  
Antiguo 06/05/2005, 10:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te dice "Array" por qué esto:
$HTTP_POST_FILES['userfile'];

entrega un array con unos valores determinados:
$HTTP_POST_FILES['userfile']['tmp_name'] --> El nombre del archivo temporal que crea PHP al subir el archivo.
$HTTP_POST_FILES['userfile']['name'] ---> el nombre del archivo original (sin ruta alguna del "cliente")

Y otras más como 'size' y 'type' que definen tamaño del archivo y formato MIME del archivo.

De hecho ya lo estás usando ....

Por lo demás es recomendable que NO uses $HTTP_POST_FILES .. usa: $_FILES (como array superglobal que es .. te evitará problemas en configuraciónes de PHP con register_globals a OFF y además ganaras en seguridad).

Los otros problemas:
Código PHP:
$sql="INSERT INTO rutas (fecha,nombre,tamaño)";
$sql.="VALUES (NOW(),'$nombre_archivo','$tamano_archivo')"
eso así sólo no funciona .. por qué no usas la función para ejecutar esa consulta SQL que ahí haces. Te falta:
Código PHP:
mysql_query($sql) or die(mysql_error()); 
También te falta mover el archivo desde el directorio temporal que PHP lo deja al subir el archivo a su destino definitivo .. NO sé si omitistes esa párte de código o no .. pero en algún sitio debes hacer:

Código PHP:
move_uploaded_file($_FILES['userfile']['tmp_name'],".archivos/".$_FILES['userfile]['name]); 
(suponiendo que tengas creado bajo el directorio que ejecutas ese script un directorio "archivos" y que tenga permisos de escritura suficientes (0766 o simlar)

Cuando tengas tu dato ya en tu BD .. para recuperar el archivo tan sólo debes hacer tu consulta SQL a tu BD -> obtener el registro que busques bajo el criterio de tu consulta SQL que uses y de ahí montar mínimo un link tipo:
Código PHP:
<a href="archivos/<? echo $row['archivo']; ?>">bajar $row['archivo']</a>
Un saludo,
  #5 (permalink)  
Antiguo 06/05/2005, 10:15
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Cluster
move_uploaded_file($_FILES['userfile']['tmp_name'],".archivos/".$_FILES['userfile]['name']);

no debería ser sin . antes de archivos? (no te dejo en paz con los detalles :P)
  #6 (permalink)  
Antiguo 06/05/2005, 16:41
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Ya Se Pudo!!

Muchas gracias!! ya esta jalando perfectamente. Mis datos son almacenados en la BD y ya estoy trabajando con la deskrga.
SEPPO si habia en errorcito grax (era sin el "." antes de "archivos/", lo mas seguro es q se le haya barrido el dedo x ahi a CLUSTER jeje..... grax CLUSTER me diste un ayudadon!!!!

move_uploaded_file($_FILES['userfile']['tmp_name'],"archivos/".$_FILES['userfile']['name']))

Salu2 a todos
  #7 (permalink)  
Antiguo 06/05/2005, 17:04
Avatar de navessd  
Fecha de Ingreso: junio-2003
Ubicación: Topus Uranus
Mensajes: 158
Antigüedad: 14 años, 6 meses
Puntos: 0
hola tengo un problema parecido, me pregunto si tuviste que para obtener la url del archivo (para mostrarlo depués) tuviste que usar la variable: $tipo_archivo = $HTTP_POST_FILES['userfile']['type'];

salu2
__________________
Bush, te vamo a rajarte el Paño!!!!
  #8 (permalink)  
Antiguo 08/05/2005, 11:12
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Hola navessd

Sabes?... en estos dias ya no pude trabajar x q tube q salir fuera de la ciudad pero en cuanto lo tenga prometo subirlo para q lo veas y juntos irle avanzando... sax??

Hasta pronto
  #9 (permalink)  
Antiguo 08/05/2005, 21:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
NAVESSD...nuestro problema esta resuelto ;)

Volví a necesitar ayuda en el foro para eso. Checa el tema "Almacenar ruta de archivo (servidor) en BD para su deskrga".. ahi esta todo, espero t sirva.

Suerte
  #10 (permalink)  
Antiguo 08/05/2005, 22:54
Avatar de navessd  
Fecha de Ingreso: junio-2003
Ubicación: Topus Uranus
Mensajes: 158
Antigüedad: 14 años, 6 meses
Puntos: 0
vale muchas gracias!!!
;·]
__________________
Bush, te vamo a rajarte el Paño!!!!
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 12:53.