Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con subir imagenes a bd ruta/directorio

Estas en el tema de Problema con subir imagenes a bd ruta/directorio en el foro de PHP en Foros del Web. Hola estoy haciendo una base de datos donde pueda guardar imágenes para un proyecto de galerías, eh leído que es malo guardar los archivos de ...
  #1 (permalink)  
Antiguo 08/03/2013, 10:45
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Exclamación Problema con subir imagenes a bd ruta/directorio

Hola estoy haciendo una base de datos donde pueda guardar imágenes para un proyecto de galerías,

eh leído que es malo guardar los archivos de imágenes directamente a la base de datos porque al momento de hacer triggers o consultas se hace complicado y también porque es muy pesado para la bd, entonces la otra alternativa era guardar la ruta en la base de datos y subir la imagen a un directorio,

ya lo hice! pero no me guarda las imágenes en el directorio ni tampoco crea el directorio, pero si guarda la dirección de las imágenes en la base de datos, porfavor pueden hecharme una mano en el codigo porfavor te lo agradeceria mucho.

index.php = aqui cargo mi imagen con algunos textos, luego me envia a un subir.php
Código PHP:
Ver original
  1. <form action="subir.php" method="POST" enctype="multipart/form-data">
  2.     <label for="imagen">Imagen:</label>
  3.     <input type="file" name="foto" id="foto" /><p>titulo
  4.         <input type="text" id="titulo" name="titulo" ></p>
  5.     <p>descripción&nbsp;
  6.         <textarea rows="2" name="descripcion" cols="27" size="80%"></textarea></p>
  7.     <p>&nbsp;<input type="submit" name="subir" value="Subir"/>
  8. </p>
  9. </form>

subir.php= aqui declaro y establesco todo para que se inserte y se cree en directorio de las imagenes, nose cual es mi error, tengo un servidor en linux y trabajo con mysql

Código PHP:
Ver original
  1. <?php
  2. //Conectar a la base de datos (bd).
  3. $puerto = "localhost";  
  4. $usuario = "taklabco_cesar";  
  5. $clave = "opciones";  
  6. $conexion = mysql_connect($puerto,$usuario,$clave);
  7. mysql_select_db ("taklabco_terapia", $conexion );
  8.  
  9. //recibo variables del form
  10. $titulo=$_POST['titulo'];
  11. $descripcion=$_POST['descripcion'];
  12.  
  13. //almacenamos la ruta de la imagen y en $destino la guardamos en el servidor
  14. $nombrefoto=$_FILES['foto']['name'];
  15. $ruta=$_FILES['foto']['tmp_name'];
  16. $destino= "fotos/".$nombrefoto;
  17.  
  18. //me va a copiar de los temporales al servidor
  19. copy($ruta,$destino);
  20.  
  21. mysql_query("insert into imagen(titulo,descripcion,foto) values ('$titulo','$descripcion','$destino')");
  22.  
  23. if ($mysql_query){
  24.             echo "ocurrio un error al copiar el archivo.";
  25.         } else {
  26.             echo "el archivo ha sido copiado exitosamente";
  27.         }
  28.  
  29. ?>

como ven me guarda la direccion en la bd pero nunca se crea el directorio y menos la imagen helpme
  #2 (permalink)  
Antiguo 08/03/2013, 10:52
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problema con subir imagenes a bd ruta/directorio

Hola, no le veo problema al código, ¿ya probaste cambiar los permisos al directorio "fotos" con sudo chmod 777?

Saludos
  #3 (permalink)  
Antiguo 08/03/2013, 11:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema con subir imagenes a bd ruta/directorio

Probaste con $destino= $_SERVER['DOCUMENT_ROOT']."/fotos/".$nombrefoto;? o sea con el path complete...
  #4 (permalink)  
Antiguo 08/03/2013, 11:08
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por walterdevel Ver Mensaje
Probaste con $destino= $_SERVER['DOCUMENT_ROOT']."/fotos/".$nombrefoto;? o sea con el path complete...
ACABO DE PROBAR CON LO QUE PLANTEASTE, AHORA ME REGISTRA LA RUTA COMPLETA EN LA BD PERO SIGE SIN CREARME UN DIRECTORIO NI SUBIR UNA IMAGEN , LE DI PERMISO 777 A LA CARPETA Y AL MOMENTO DE EJECUTAR EL subir.php ME VOTA ERROR
  #5 (permalink)  
Antiguo 08/03/2013, 11:11
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema con subir imagenes a bd ruta/directorio

Podes pegar el error?
  #6 (permalink)  
Antiguo 08/03/2013, 11:19
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por walterdevel Ver Mensaje
Podes pegar el error?
:D ya me salio, yo le daba permiso a todos los archivos y estaba mal , era solo a la carpeta fotos el codigo de $_SERVER['DOCUMENT_ROOT']. me ayudo mucho, estoy agradecido!

pero tengo otro problema, como lo listaria , como declararia ese valor al momento de hacer mi print, hay algun formato especial? o que podria cambiar

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Conectar a la base de datos (bd).
  4. $puerto = "localhost";  
  5. $usuario = "taklabco_cesar";  
  6. $clave = "opciones";  
  7. $conexion = mysql_connect($puerto,$usuario,$clave);
  8.  
  9. mysql_select_db ("taklabco_terapia", $conexion );
  10.  
  11. // listamos imagen
  12. $resultado=mysql_query("select * from imagen");
  13. while($row=mysql_fetch_array($resultado)) {
  14.  
  15. ?>
  16.  
  17. <table cellpadding="0" cellspacing="0" width="646" background="<?php echo $row['foto']; ?>" height="203">
  18.     <!-- MSTableType="layout" -->
  19.     <tr>
  20.         <td valign="top"><? echo $row['titulo']; ?></br><? echo $row['descripcion']; ?></td>
  21.     <td height="173">&nbsp;</td>
  22.     </tr>
  23.     <tr>
  24.         <td width="606">&nbsp;</td>
  25.         <td height="30" width="40">&nbsp;</td>
  26.     </tr>
  27. </table>
  28. <?
  29. }
  30. //cerrar BD
  31. mysql_close($conexion);
  32.  
  33. ?>

aqui puedes ver como me estan quedando las imagenes http://taklab.com/pruebas/subirarchivos/subir_archivo_imagen_db/imagen.php
  #7 (permalink)  
Antiguo 08/03/2013, 11:20
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problema con subir imagenes a bd ruta/directorio

Una pregunta, ¿tienes creado el directorio "fotos"? porque el código que pegaste no esta creando un directorio, le estas indicando la ruta a donde va a subir el archivo
  #8 (permalink)  
Antiguo 08/03/2013, 11:22
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por luis_h_1 Ver Mensaje
Una pregunta, ¿tienes creado el directorio "fotos"? porque el código que pegaste no esta creando un directorio, le estas indicando la ruta a donde va a subir el archivo
si lo tenia creado :) yo le daba permiso 777 al archivo subir.php y no al directorio :) muchas gracias por indicarme ese error estoy agradecido
  #9 (permalink)  
Antiguo 08/03/2013, 11:24
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema con subir imagenes a bd ruta/directorio

Podes guardar solamente $nombrefoto en la base de datos, luegos cuando vas a imprimirlo le agregas el path: <?php echo '/fotos/'.$row['foto'];?>
  #10 (permalink)  
Antiguo 08/03/2013, 11:29
Avatar de luis_h_1  
Fecha de Ingreso: octubre-2010
Ubicación: México
Mensajes: 42
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problema con subir imagenes a bd ruta/directorio

Para la web tienes que utilizar rutas relativas, con $_SERVER['DOCUMENT_ROOT'] estas indicándole la ruta absoluta, [URL="http://www.comocrearunsitioweb.com/rutas-absoluta-relativa"]aquí[/URL] puedes encontrar más info de esto,

Saludos!

Última edición por luis_h_1; 08/03/2013 a las 11:31 Razón: Corrección link
  #11 (permalink)  
Antiguo 08/03/2013, 11:36
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por walterdevel Ver Mensaje
Podes guardar solamente $nombrefoto en la base de datos, luegos cuando vas a imprimirlo le agregas el path: <?php echo '/fotos/'.$row['foto'];?>
LO ACABO DE PROBAR y en ves de listarme la imagen me sale una cadena de letras de la url

http://taklab.com/pruebas/subirarchivos/subir_archivo_imagen_db/imagen.php

Código PHP:
Ver original
  1. <?php
  2. // listamos imagen
  3. $resultado=mysql_query("select * from imagen");
  4. while($row=mysql_fetch_array($resultado)) {
  5. ?>
  6.  
  7. <table cellpadding="0" cellspacing="0" width="646" height="203">
  8.     <!-- MSTableType="layout" -->
  9.     <tr>
  10.         <td valign="top"><? echo $row['titulo']; ?></br><? echo $row['descripcion']; ?><?php echo '/fotos/'.$row['foto'];?></td>
  11.     <td height="173">&nbsp;</td>
  12.     </tr>
  13.     <tr>
  14.         <td width="606">&nbsp;</td>
  15.         <td height="30" width="40">&nbsp;</td>
  16.     </tr>
  17. </table>
  18. <?
  19. }
  20. //cerrar BD
  21. mysql_close($conexion);
  22. ?>

estoy haciendo algo mal?
  #12 (permalink)  
Antiguo 08/03/2013, 11:38
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema con subir imagenes a bd ruta/directorio

Eso iria en el src de la imagen :)

<img src="<?php echo '/fotos/'.$row['foto'];?>" />
  #13 (permalink)  
Antiguo 08/03/2013, 11:42
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por walterdevel Ver Mensaje
Eso iria en el src de la imagen :)

<img src="<?php echo '/fotos/'.$row['foto'];?>" />
porque me esta guardando desde la raiz principal? en el $nombrefoto de mi bd me guarda la ruta por ejemplo /home/taklabco/public_html/pruebas/subirarchivos/subir_archivo_imagen_db/fotos/Untitled-1.jpg

y si le agrego el /foto/ me quedaria asi
/foto//home/taklabco/public_html/pruebas/subirarchivos/subir_archivo_imagen_db/fotos/Untitled-1.jpg

yo deseo que se liste asi
http://taklab.com/pruebas/subirarchivos/subir_archivo_imagen_db/fotos/Untitled-1.jpg


que ise mal?.
  #14 (permalink)  
Antiguo 08/03/2013, 11:45
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema con subir imagenes a bd ruta/directorio

Por eso te decia que guardes el nombre solamente:

Código PHP:
Ver original
  1. mysql_query("insert into imagen(titulo,descripcion,foto) values ('$titulo','$descripcion','$nombrefoto')");
  #15 (permalink)  
Antiguo 08/03/2013, 11:48
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por walterdevel Ver Mensaje
Por eso te decia que guardes el nombre solamente:

Código PHP:
Ver original
  1. mysql_query("insert into imagen(titulo,descripcion,foto) values ('$titulo','$descripcion','$nombrefoto')");
lo probare :D
  #16 (permalink)  
Antiguo 08/03/2013, 11:57
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Problema con subir imagenes a bd ruta/directorio

Cita:
Iniciado por skardo Ver Mensaje
lo probare :D
Muchas gracias walterdevel estoy totalmente agradecido por todo, me listan muy bien, ahora tengo que ordenarlas, listarlas por ID :) eres lo maximo tio! dios te bendiga.
  #17 (permalink)  
Antiguo 08/03/2013, 12:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema con subir imagenes a bd ruta/directorio

Me alegro de que te funcionara :) Saludos

Etiquetas: bd, imagenes, mysql, select, variables
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 01:23.