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