Foros del Web » Programando para Internet » PHP »

no puedo leer la imagen al hacer update

Estas en el tema de no puedo leer la imagen al hacer update en el foro de PHP en Foros del Web. Hola a todos: Tengo una tabla llamada "fotos" para guardar imagenes con los campos: num_ident(int), imagen(BLOB), nombre(varchar), tamano(varchar) y formato(varchar). el script que permite visualizar ...
  #1 (permalink)  
Antiguo 06/11/2009, 06:57
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
no puedo leer la imagen al hacer update

Hola a todos:

Tengo una tabla llamada "fotos" para guardar imagenes con los campos: num_ident(int), imagen(BLOB), nombre(varchar), tamano(varchar) y formato(varchar).

el script que permite visualizar las fotos es el siguiente (este script funciona para fotos que he insertado con un formulario)

este seria el script llamado "leerbasedatos.php":

<?php
$base="basket";
$tabla="fotos";
$conexion=mysql_connect("localhost","root","");
mysql_select_db($base, $conexion);
$sacar="SELECT * FROM fotos";
$resultado=mysql_query($sacar,$conexion);

while ($registro=mysql_fetch_array($resultado)){
print"<center>Titulo de la imagen: ".$registro['nombre']."<br>";

print "<img src='ver_foto.php?n=".$registro['num_ident']."'><br>";

print "tamaño de la imagen: ".$registro['tamano']." bytes </center>";

}
mysql_close();

?>


este seria el script "ver_foto" conectado con el anterior.

<?php
$numero=$_REQUEST['n'];
$base="basket";
$tabla="fotos";
$conexion=mysql_connect("localhost","root","");
mysql_select_db($base,$conexion);
$sacar="SELECT * FROM ".$tabla." WHERE(num_ident=$numero)";
$resultado=mysql_query($sacar,$conexion);
while($registro=mysql_fetch_array($resultado)){
$tipo_foto=$registro['formato'];
header ("Content-type:$tipo_foto");
echo $registro['imagen'];
}

?>

funciona bien con imagenes insertadas.

Ahora lo que hago es actualizar la tabla, por ejemplo para la imagen de indice (num_ident) numero 1 con un formulario que envia las variables al mismo script, como se ve, mi intencion es hacer un update en los campos imagen, nombre, tamano y formato.
Al mirar la tabla en phpmyadmin veo que los valores han cambiado siendo sustituidos por la nueva foto pero en el script de leerbasedatos.php no se ve ya la foto.
La forma de transformar una de las variables que compone la imagen es identica a la utilizada a la hora de insertar la imagen inicialmente
Agradeceria si alguien tuviese alguna indicacion ya que no se por donde tirar.


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php

if (isset($_FILES['foto']['size']) && isset($_FILES['foto']['type']) && isset($_FILES['foto']['name']) && isset($_FILES['foto']['tmp_name'])) {

$foto_name= $_FILES['foto']['name'];
$foto_size= $_FILES['foto']['size'];
$foto_type= $_FILES['foto']['type'];
$foto_temporal= $_FILES['foto']['tmp_name'];
$lim_tamano= $_POST['lim_tamano'];
$foto_titulo= $_POST['titulo'];


include("funcionesMySql.php");
conectar("basket");


$extension="image/jpeg";



if ($foto_name != "" AND $foto_size != 0
AND $foto_titulo !='' AND
$foto_size<=$lim_tamano AND $extension !=''){
/*reconversion de la imagen para meter en la tabla
abrimos el fichero temporal en modo
lectura "r" binaria"b"*/
$f1= fopen($foto_temporal,"rb");
#leemos el fichero completo limitando
# la lectura al tamaño de fichero
$foto_reconvertida = fread($f1, $foto_size);
#anteponemos \ a las comillas que pudiera contener el fichero
# para evitar que sean interpretadas como final de cadena
$foto_reconvertida=mysql_real_escape_string($foto_ reconvertida);
# abrimos la base de datos y escribimos las intrucciones de inserción
# en el campo BLOB insertaremos la foto_reconvertida


$modificacion = "UPDATE fotos SET
formato='$foto_type' where num_ident= '1'";
mysql_query($modificacion);

$modificacion = "UPDATE fotos SET
tamano='$foto_size' where num_ident= '1'";
mysql_query($modificacion);

$modificacion = "UPDATE fotos SET
nombre='$foto_titulo' where num_ident= '1'";
mysql_query($modificacion);

$modificacion = "UPDATE fotos SET
imagen='.$foto_reconvertida.' where num_ident= '1'";
mysql_query($modificacion);
echo "parece que todo ha funcionado bien!!!!!!!!!";

}

}

?>

<h3>FORMULARIO DE ENVIO DE IMAGENES A MYSQL</h3>
<form enctype="multipart/form-data" method="post" action="">

<input type="hidden" name="lim_tamano" value="99000">
<p>Imagen : <br><input type="file" name="foto"><br></p>

<p>Nombre<br><INPUT type="text" name="titulo"><br></p>
<input type="submit" name="enviar" value="Enviar"/><br>
</form>

</body>
</html>

Gracias a todos y que vaya bien
  #2 (permalink)  
Antiguo 06/11/2009, 09:28
Avatar de luckystrikede11  
Fecha de Ingreso: octubre-2009
Ubicación: Concepcion, Chile
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: no puedo leer la imagen al hacer update

si insercion de los datos esta bien.. el problema seria con el cache del navegador para que se vea la nueva imagen
  #3 (permalink)  
Antiguo 06/11/2009, 09:31
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: no puedo leer la imagen al hacer update

Hola,

Me autorespondo por si a alguien le puede servir:

el error esta en que escribi


$modificacion = "UPDATE fotos SET
imagen='.$foto_reconvertida.' where num_ident= '1'";
mysql_query($modificacion);

debiendo haber quitado los puntos delante y detras de $foto_reconvertida de esta forma:

$modificacion = "UPDATE fotos SET
imagen='$foto_reconvertida' where num_ident= '1'";
mysql_query($modificacion);
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 15:54.