Foros del Web » Programando para Internet » PHP »

Subir fotos y mostrarlas

Estas en el tema de Subir fotos y mostrarlas en el foro de PHP en Foros del Web. Buenas. Estoy intentando subir una foto y un comentario, y luego poder mostrar la foto y el comentario. La idea sería que mostrase la última ...
  #1 (permalink)  
Antiguo 07/02/2012, 23:38
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Subir fotos y mostrarlas

Buenas.
Estoy intentando subir una foto y un comentario, y luego poder mostrar la foto y el comentario. La idea sería que mostrase la última foto subida (con el comentario de dicha foto claro).

Conseguí tras muchos intentos que suba la foto a la carpeta, y también sube el nombre de la foto (el final de la ruta incluyendo la extensión) y el comentario que le pongo en la caja de texto.

El problema que tengo ahora es que por mucho que lo intente no consigo que me muestre la última foto. He intentado mil consultas, con ORDER BY DESC, seleccionando según un Id, pero nada...

Sé que estará todo fatal pero este es el código que tengo hasta ahora...
Lo que más me interesaría sería como digo poder mostrar la última foto subida junto con el comentario. Los códigos que corresponden a esa última parte están bastante mal claro ; )

Código:
<?php

$conexion = mysql_connect('localhost','BASEDEDATOS','PASS');

if (!$conexion) {
    die('Could not connect: ' . mysql_error());
}

if (!mysql_select_db('BASEDEDATOS')) {
    die('Could not select database: ' . mysql_error());
}

if(isset($_FILES['image'])){
    $file_name = $_FILES['image']['name']; // This holds the file name in a variable.
    move_uploaded_file($_FILES['image']['tmp_name'], 'upload/'.$file_name);
    echo "File uploaded successfully.<a href='upload/$file_name'>Click to view!</a>"; //Esto lo tengo de ejemplo por si quiero poner el link...
	echo "<img src='upload/$file_name'> ";
}

if(isset($_POST['txtComent'])){
    $file_coment = $_POST['txtComent']; // This holds the file name in a variable.
    $sql = mysql_query ("INSERT INTO Fotos (Id,Ruta,Comentario) VALUES ('','$file_name','$file_coment')");
    mysql_query($sql);
    $result = mysql_query("SELECT Comentario FROM Fotos WHERE Ruta = '$file_name'");
    while ($coment = mysql_fetch_assoc($result)) {
    echo $coment['Comentario']."<br>";

    }
}
?>
Si alguien lo prefiere puedo poner el link a la página para que la ayuda sea más fácil.

He estado dando vueltas por el foro y probando códigos pero me veo incapaz y me he decidido a postear...

¡Gracias por adelantado!
  #2 (permalink)  
Antiguo 08/02/2012, 00:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Subir fotos y mostrarlas

Hola:

Me parece que estás condicionando la inserción a que exista un comentario, aunque ya hayas ubicado la imagen... creo que sin comentario deberías usar uno por defecto o ninguno... y para localizarla en la base de datos, deberías usar mysql_insert_id() para obtenerlo (supongo que es un campo auto_increment)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 08/02/2012, 00:52
 
Fecha de Ingreso: enero-2012
Ubicación: localhost
Mensajes: 37
Antigüedad: 12 años, 3 meses
Puntos: 10
Respuesta: Subir fotos y mostrarlas

¿Haz asegurado que todos los campos en la bd tengan el nombre tal cual los llamas ?
¿Te devuelve un error? , ¿Te muestra otra imagen?, ¿Porque usas fetch_assoc dentro de un while si fetch_assoc es un array de un solo valor? ¿No seria mejor usar if(), o en su caso usar fetch_array?.
__________________
"El Conocimiento Es Poder
Mente Comunal - Diversidad Colectiva
  #4 (permalink)  
Antiguo 08/02/2012, 01:29
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir fotos y mostrarlas

Buenas... Gracias por las respuestas...

El comentario lo necesito poner, es un requisito... Sería algo así como "foto de la semana" y poder cambiarla...
Sí es auto_increment. ¿Cómo tendría que poner el mysql_insert_id()? ¿Llamo esa función y la asigno a una variable y luego hago un SELECT para sacar la ruta de la foto?



La BD es simplemente Id, Ruta (que guarda por ejemplo foto.jpg), y Comentario (que guarda el comentario). Creo que sí tienen todos el nombre tal cual los llamo. No me devuelve error, ahora mismo me devuelve la foto que subo, pero creo que me lío porque no sé después cómo relacionarla con su comentario o cómo mostrar la foto desde otro sitio. Es decir (que me lío yo solo), si subo la misma foto dos veces, no me la guarda dos veces (en a carpeta) porque ya está, pero sí almacena dos veces en la tabla y luego me muestra esos dos comentarios a la vez. Además la idea sería mostrarla en otra "página" luego, no justo después de cargarla... Vamos, que me gustaría saber cómo seleccionarla...
Lo del fetch_assoc me pillas, he estado probando varios códigos y ese me funcionaba... (Aunque ya digo que me repite los comentarios...)

(Creo que no se va a entender nada... ¡Perdón!)
  #5 (permalink)  
Antiguo 08/02/2012, 01:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Subir fotos y mostrarlas

Hola:

Detrás del insert (mysql_query($sql)) puedes obtener el id asignado por auto_increment así:
$id = mysql_insert:id();

Luego la consulta sería:
select * from Fotos where id='$id';

No sé si tendrá que ver, pero en mis sistemas no puedo poner espacios en blanco en las declaraciones sql:

where Ruta='$file_name'

Lo que comentas sobre no subir fotos con el mismo nombre... me suena raro...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 08/02/2012, 02:04
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir fotos y mostrarlas

Buenas caricatos.

Justo estaba probando la función que me habías dicho y estoy haciendo progresos.

El comentario parece que ya me sale, coge el último añadido gracias a la función.

La foto en cambio no me la muestra, no sé cómo hacerlo.

El código sería...

Código:
if(isset($_FILES['image'])){
    $file_name = $_FILES['image']['name']; // This holds the file name in a variable.
    move_uploaded_file($_FILES['image']['tmp_name'], 'upload/'.$file_name);
    mysql_query($sql);
    $ultid = mysql_insert_id($conexion);
    $result = mysql_query("SELECT Ruta FROM Fotos WHERE Id = '$ultid'");
    echo "File uploaded successfully.<a href='upload/$file_name'>Click to view!</a>";
	echo "<img src='upload/$result'> ";
}

if(isset($_POST['txtComent'])){
    $file_coment = $_POST['txtComent']; // This holds the file name in a variable.
    $sql = mysql_query ("INSERT INTO Fotos (Id,Ruta,Comentario) VALUES ('','$file_name','$file_coment')");
    mysql_query($sql);
    $ultid2 = mysql_insert_id($conexion);
    $result2 = mysql_query("SELECT Comentario FROM Fotos WHERE Id = '$ultid2'");
    while ($coment = mysql_fetch_assoc($result2)) {
    echo $coment['Comentario']."<br>";

    }
}
El caso es que la foto, en lugar de añadir el campo Ruta, que sería lo de foto.jpg o similar, me pone (...)upload/Resource%20id%20#8
¿Cómo cojo la ruta? ¿Cómo mostraría luego todo esto en otra página (en un HTML u otro PHP?

(Lo de los espacios parece funcionar en mi caso... ¡O eso creo!)

Perdón por las molestias y gracias de nuevo. ¡Estoy aprendiendo por si sirve de algo! hehehe
  #7 (permalink)  
Antiguo 08/02/2012, 03:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Subir fotos y mostrarlas

Hola:

Por lo que veo te sobra una instrucción:
mysql_query($sql);

... tal vez si quieres consultar el éxito de la consulta/inserción debas poner
if ($sql) {// inserción exitosa...

y lo de mysql_insert_id(), puedes omitir el parámetro, o en este caso debería ser mysql_insert_id($sql)...

Ya nos dirás la evolución.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 08/02/2012, 10:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir fotos y mostrarlas

Hola otra vez.

¿Por qué $sql? Yo le ponía $conexion porque es la que tengo arriba...

He probado borrando lo que me dices y cambiando eso pero sigue sin salir la foto... ¿Crees que mi SELECT está bien? Igual es que la guardo mal... Igual debería pensar en cambiar el nombre al subirla o algo así...

Es que no entiendo por qué el comentario sí lo coge bien y la foto en cambio no...
  #9 (permalink)  
Antiguo 08/02/2012, 14:31
 
Fecha de Ingreso: febrero-2012
Ubicación: Granada
Mensajes: 16
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Subir fotos y mostrarlas

creo que no te funciona porque cuando dices

$result = mysql_query("SELECT Comentario FROM Fotos WHERE Ruta = '$file_name'");

la variable $file_name no tiene nada, puedes comprobarlo mostrandola justo antes de hacer la consulta.

imagen
SELECT Ruta FROM Fotos WHERE Id = '$ultid'

yo pondria
select ruta,id from fotos where id='$utild'


no conozco esto
echo "<img src='upload/$result'> ";

yo lo haria
echo "<img src=$result['ruta']>";


que yo lo hubiera peusto asi no significa que funcione
  #10 (permalink)  
Antiguo 08/02/2012, 17:23
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Subir fotos y mostrarlas

Buenas andresee, gracias por tu comentario.

He probado lo que me comentas y lo de img me da error si lo pongo como me dices.

Lo de $file_name que me dices, ¿cómo es que está vacía? ¿No se supone que le he metido el valor en esta línea previa?
$file_name = $_FILES['image']['name']; // This holds the file name in a variable.

Gracias por adelantado.

Etiquetas: fotos, mysql, sql, 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 11:45.