Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias?

Estas en el tema de ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias? en el foro de PHP en Foros del Web. Buenas noches, estoy creando un sistema de noticias como ya muchos saben. Ahora me gustaría poder agregar imágenes a los artículos ¿como se puede hacer ...
  #1 (permalink)  
Antiguo 03/01/2014, 22:04
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias?

Buenas noches, estoy creando un sistema de noticias como ya muchos saben. Ahora me gustaría poder agregar imágenes a los artículos ¿como se puede hacer esto? ¿Se pueden guardar imágenes en MySQL o debo montarlas al servidor? En caso de ambos ¿como se podrían imprimir? Muchas gracias y buenas noches.
  #2 (permalink)  
Antiguo 04/01/2014, 00:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

La idea general con las imágenes (y casi cualquier archivo) es guardarlo en el servidor y no en la base de datos.

En la base de datos lo único a guardar sería la ruta o algún detalle que te ayude a localizar el archivo en el servidor.

Ahora, las imágenes no se "imprimen" realmente, tu código debe imprimir la etiqueta de HTML correspondiente para cargar dicha imagen.

Ya sabes, HTML.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/01/2014, 03:56
Avatar de moriorGames  
Fecha de Ingreso: diciembre-2013
Ubicación: Barcelona
Mensajes: 37
Antigüedad: 10 años, 4 meses
Puntos: 3
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Hola buenos días.

Como bien ha comentado el compañero, debes subir las imágenes al servidor. Busca en este mismo foro, se ha hablado bastante de cómo subir imágenes. O sino, ve a google y verás como encuentras rápidamente cómo hacerlo.

Una vez guardas la imagen lo que has de hacer es guardar datos de esa imagen en la base de datos (por ejemplo la fecha de creación que podría ser algo así).

imagen_noticia_1.jpg
image_id = 1
image_name = 'imagen_noticia_1.jpg'
creation_date = '2013-12-12 09:58:23'

Luego cuando muestres el artículo en html puedes hacer una relación entre el id de la imagen y el artículo. Creo que algo así te podría servir :)
__________________
Mi juego de estrategia medieval si lo entras hazme llegar tu opinión por favor, siempre la tengo en cuenta.
  #4 (permalink)  
Antiguo 04/01/2014, 10:05
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Joder, lo marqué como solucionado por error e.e

Bueno... El asunto es que tengo un formulario que guarda datos en la base de datos pero quiero que me guarde las imágenes en el servidor. Tengo este código que encontré por ahí.

Código HTML:
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input name="uploadedfile" type="file" />
<input type="submit" value="Subir archivo" />
</form> 
y el PHP sería algo como

Código PHP:
$target_path "uploads/";
$target_path $target_path basename$_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "El archivo "basename$_FILES['uploadedfile']['name']). " ha sido subido";
} else{
echo 
"Ha ocurrido un error, trate de nuevo!";

Ahora... ¿Como puedo hacer para agregarlo a mi formulario? ¿No se dañarán los otros datos? Y, ¿como hago para llamarla al HTML? Sé que con la ruta y se me ocurre que esa ruta esté en MySQL pero ¿como guardaría esa ruta? Gracias

Última edición por MeDxEc; 04/01/2014 a las 10:13
  #5 (permalink)  
Antiguo 04/01/2014, 11:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Puedes guardar toda la ruta o solamente el nombre de la imagen, luego, cuando hagas la consulta para mostrar los datos, insertas la ruta y el nombre de la imagen en el atributo src de una etiqueta de imagen.

Código HTML:
Ver original
  1. <img src = "ruta/<?=$nombreImagen?>" />

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 04/01/2014, 13:12
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Cita:
Iniciado por Alexis88 Ver Mensaje
Puedes guardar toda la ruta o solamente el nombre de la imagen, luego, cuando hagas la consulta para mostrar los datos, insertas la ruta y el nombre de la imagen en el atributo src de una etiqueta de imagen.

Código HTML:
Ver original
  1. <img src = "ruta/<?=$nombreImagen?>" />

Saludos
Tengo unas cuantas dudas que me tienen un poco pendejo:

Me gustaría que al guardar la imágen esta quedara en un directorio que tuviese por nombre el valor de mi variable $titulo pero no me lo ejecuta correctamente

Código PHP:
<?php

include('config.php');

$titulo=$_POST['titulo'];
$autor=$_POST['autor'];
$descripcion=$_POST['descripcion'];
$noticia=$_POST['noticia'];
$keywords=$_POST['keywords'];
$ruta "img/posts/".$titulo."/";

$sql "INSERT INTO noticias (titulo, autor, descripcion, keywords, noticia, fecha) VALUES ('$titulo', '$autor', '$descripcion', '$keywords','$noticia', NOW())";
mysql_query($sql$connect) or die("Error en BBD: ".mysql_error());

$target_path "$ruta";
$target_path $target_path basename$_FILES['imagen_subida']['name']); if(move_uploaded_file($_FILES['imagen_subida']['tmp_name'], $target_path)) { echo "El archivo "basename$_FILES['imagen_subida']['name']). " ha sido subido";
} else{
echo 
"Ha ocurrido un error, trate de nuevo!";


header('Location: index.php');
?>
Otra cosa es... ¿Como carajos guardo la ruta en MySQL? Imprimirla en el HTML es sencillo, lo haría tal y como he impreso las demás cosas, lo que no logro aún o no doy con la solución es guardar la ruta ¿alguna idea?

Es más urgente lo primero porque creo que con esta modificación en el SQL bastaría

Código PHP:
//esto no me guarda la imágen en una carpeta con la variable $titulo, cosa que es lo que necesito
$ruta "img/posts/".$titulo."/";

$sql "INSERT INTO noticias (titulo, autor, descripcion, keywords, noticia, ruta_imagen, fecha) VALUES ('$titulo', '$autor', '$descripcion', '$keywords','$noticia','$ruta', NOW())"
Sabiendo como hacer lo primero, lo demás es una tontería ¿alguna idea?
  #7 (permalink)  
Antiguo 04/01/2014, 14:00
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

He hecho lo anterior en SQL y funcionó pero la ruta_image queda "img/posts//" y no la variable titulo ¿alguna idea?
  #8 (permalink)  
Antiguo 04/01/2014, 14:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Imprime el valor de la variable $titulo para que verifiques si existe.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 04/01/2014, 14:25
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Increiblemente me ha funcionado y no sé porque. Creo que Firefox no había actualizado el script porque no funcionaba pero ahora ya funciona. La otra cuestión es que tengo que tener creada la carpeta porque sino no funcionará. Esto es el error que bota:

Código PHP:
Warningmove_uploaded_file(img/posts/Titulo de prueba/wallpaper.jpg): failed to open streamNo such file or directory in /Applications/MAMP/htdocs/soytusinsajo2/procesar_noticia.php on line 18

Warning
move_uploaded_file(): Unable to move '/Applications/MAMP/tmp/php/php13rW8t' to 'img/posts/Titulo de prueba/wallpaper.jpg' in /Applications/MAMP/htdocs/soytusinsajo2/procesar_noticia.php on line 18
Ha ocurrido un error
trate de nuevo
¿Como hago para que cree la carpeta automáticamente? ._.

EDIT: Ya lo hice con la función mkdir() (Impresionante la flexibilidad que tiene PHP, no sé porque en muchas partes lo tratan tan mal).
  #10 (permalink)  
Antiguo 04/01/2014, 14:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Con mkdir.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 04/01/2014, 15:27
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

¿Como le modifico el nombre a la imagen y hago que se guarde con dicho nombre? Ya solucioné en parte lo de la ruta, ya la crea, no tengo problemas de espaciado pero necesito concatenar un nombre para dicha imágen ¿como lo hago? Gracias.
  #12 (permalink)  
Antiguo 04/01/2014, 18:37
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como subir imágenes por PHP e imprimirlas mediante un sistema de noticias

Cuando guardes el archivo tanto en la BD como en un directorio del servidor, puedes designarle un nombre o tomar el que ya tiene, pero siempre respetando el formato que el archivo tiene.

Código PHP:
Ver original
  1. $nuevoNombre = "ejemplo";
  2. $tipo = $_FILES["imagen_subida"]["type"];
  3. $temporal = $_FILES["imagen_subida"]["tmp_name"];
  4. $directorio = "../imagenes/";
  5.  
  6. //Guardando la imagen en el servidor
  7. move_uploaded_file($temporal, $directorio . $nuevoNombre . "." . $tipo);
  8.  
  9. //Guardando el nuevo nombre de la imagen en la BD
  10. $query = "INSERT INTO tabla (imagen) VALUES ('" . $nuevoNombre . "." . $tipo . "')";

Por ejemplo, si la imagen tuviera extensión jpeg, la imagen se guardaría como "ejemplo.jpeg". Si gustas, lo guardas junto con el nombre del directorio o lo dejas como está, al fin y al cabo, si haces lo segundo, vas a tener que indicar manualmente la ruta de acceso.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: cms, imagenes, upload
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:54.