PHP + MySql + BLOB

Iniciado por IWKY, 1 Abril 2009, 02:55 AM

0 Miembros y 1 Visitante están viendo este tema.

IWKY

Buenas, estoy haciendo una pequeña web que carga unas imágenes en la bbdd y después las recupera, hasta ahí todo correcto, el problema viene cuando quiero insertar las imágenes, me he hecho un formulario con su php para cargar las imágenes a la bbdd pero después a la hora de mostrarlas no salen y si miro en phpMyAdmin si que aparecen, pero lo más curioso es que si inserto las imágenes desde phpMyAdmin si que las puedo leer bien desde la bbdd y mostrarlas bien, bueno en realidad de tres imágenes por fila solo muestra 2 bien pero eso será otro error diferente que habrá que corregir. Añado los scripts para que lo veáis y juzguéis.

Formulario html
Código (html4strict) [Seleccionar]

<html>
<body>
<h2>Sistema de actualizaci&oacute;n</h2>
<form enctype="multipart/form-data" method="post" action="upload.php">
<p>Imagen Full (Grande 1000x750):<input type="file" name="full"></p>
<p>Imagen medium (Mediana 500x375):<input type="file" name="medium"></p>
<p>Imagen Small (Peque&ntilde;a 100x75):<input type="file" name="small"></p>
<p>TITULO: <textarea name="titulo" rows="2" cols="50"></textarea></p>
<p>DESCRIPCI&Oacute;N: <textarea name="descripcion" rows="5" cols="50"></textarea></p>
<p><input type="submit" name="send" value="Enviar"></p>
</form>
</body>
</html>


Script que procesa el forulario
Código (php) [Seleccionar]

<?php
require_once 'bd.php';

function 
leer_fichero($name){
$fp fopen ($name'r');
if ($fp){
$datos fread ($fpfilesize ($name)); // cargo la imagen
$datos addslashes($datos);
}
fclose($fp);
return $datos;
}

function 
insertar($imagen_full_bin$imagen_medium_bin$imagen_small_bin$titulo$descripcion){
$sql "INSERT INTO archivos (id, img_full, img_medium, img_small, titulo, descripcion) VALUES ('', '$imagen_full_bin', '$imagen_medium_bin', '$imagen_small_bin', '$titulo', '$descripcion')";
mysql_query($sql) or die("No se pudo insertar los datos en la base de datos.");
}
// Comienza el script

$img_full $_FILES['full']['tmp_name'];
$img_medium $_FILES['medium']['tmp_name'];
$img_small $_FILES['small']['tmp_name'];

$imagen_full_bin leer_fichero($img_full);
$imagen_medium_bin leer_fichero($img_medium);
$imagen_small_bin leer_fichero($img_small);

$titulo $_POST['titulo'];
$descripcion $_POST['descripcion'];

insertar($imagen_full_bin$imagen_medium_bin$imagen_small_bin$titulo$descripcion);
header("Location: upload.html");  // si ha ido todo bien
?>




Script que muestra las imágenes
Código (php) [Seleccionar]

<?php

require_once 'bd.php';

$id = (isset($_GET['id']) ? $_GET['id'] : exit());
$tam = (isset($_GET['tam']) ? $_GET['tam'] : exit());

switch(
$tam){
case "full":
$sql "SELECT img_full FROM archivos WHERE id = $id";
list($img)=mysql_fetch_row(mysql_query($sql));
header("Content-type: image/jpg");
echo $img;
break;
case "medium":
$sql "SELECT img_medium FROM archivos WHERE id = $id";
list($img)=mysql_fetch_row(mysql_query($sql));
header("Content-type: image/jpg");
echo $img;
break;
case "small":
$sql "SELECT img_small FROM archivos WHERE id = $id";
list($img)=mysql_fetch_row(mysql_query($sql));
header("Content-type: image/jpg");
echo $img;
break;
}

?>



Tabla de MySql
Código (sql) [Seleccionar]

CREATE TABLE IF NOT EXISTS `archivos` (
  `id` int NOT NULL auto_increment,
  `img_full` longblob NOT NULL,
  `img_medium` longblob NOT NULL,
  `img_small` longblob NOT NULL,
  `titulo` varchar(50) collate utf8_spanish_ci NOT NULL,
  `descripcion` varchar(100) collate utf8_spanish_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui