Hola vereis, tengo una preguntas sobre las imagenes insertadas en mysql como blob, mi pregunta es si se pueden insertar imagenes en campos blob aunque en la base de datos no exintan los campos para el peso y el tipo de archivo?
Mi problema es que me han pasado una aplicacion que inserta, modifica, borra y muestra unas fichas que se componen de imagenes y texto, las fichas que hay en la base de datos y que habian sido insertadas antes de que yo tuviera este proyecto se muestran perfectamente (texto e imagenes) pero cuando intento insertar una nueva ficha me lo inserta bien (todos los campos de texto tienen su contenido y en los campos de las imagenes me sale '[BLOB - 15.1 KB]') pero a la hora de mostar la ficha solo me muestra los campos de texto y las imagenes no me salen, mejor dicho me sale un borde negro border='1' (que tengo puesto en los estilos para las imagenes) pero no la imagen....se supone que si en la base de datos en el campo de la imagen tiene contenido '[BLOB - 15.1 KB]' es que se ha insertado bien no?
a ver si me podeis decir algo.....gracias
os pongo el codigo que uso
input donde cargo la imagen Código HTML:
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_SESSION['maxsize'];?>">
<input name="situation" type="file" class="fondo_campo_insert" id="situation" value="<?php echo $_POST['situation']; ?>" maxlength="8">
tratamiento de las fotos Código PHP:
$_SESSION['yac_id']=mysql_insert_id(); //devuelve el ultimo yac_id del INSERT.
//TRATAMIENTO DE LAS FOTOS
require_once ('manejo_fotos.php');
$ancho_fijo = 300; //ancho de las fotos optimizadas en pixels.
$temp_foto = 'img.jpg'; //foto temporal reducida.
$campo_actual = "situation";
$control= campo_lleno($campo_actual);
if ($control==0)
{
if (tiene_extension_valida($_FILES[$campo_actual]['name']))
{ resize ($campo_actual,$ancho_fijo); //devuelve 'img.jpg'
subir_foto_sql($campo_actual,$_SESSION['yac_id'],'img.jpg');
}
else
{ $redir="<meta http-equiv=\"refresh\" content=\"5; URL=modify1.php\"><p> </p><p> </p><p> </p><p> </p><p> </p><table width=\"80%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"bd_ayuda\"><tr><td align=\"center\" valign=\"middle\"><div align=\"center\"><p> </p><p>Has seleccionado una extension de archivo no válida en el campo $campo_actual. Solo los formatos de archivo '.jpg' ó '.jpeg' estan permitidos</p></div></td></tr></table>";
print $redir;
die();
}
}
else
{
if ($control==1)
{
$redir="<meta http-equiv=\"refresh\" content=\"5; URL=modify1.php\"><p> </p><p> </p><p> </p><p> </p><p> </p><table width=\"80%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"bd_ayuda\"><tr><td align=\"center\" valign=\"middle\"><div align=\"center\"><p> </p><p>El archivo ".$_FILES[$campo_actual]['name']." que intentas subir es mayor que 200kb, selecciona otro más pequeño</p></div></td></tr></table>";
print $redir;
die();
}
}
este es el archivo manejo_fotos.php Código PHP:
<?php
function campo_lleno ($campo)
{
$nombre = $_FILES[$campo]['name'];
if ($nombre !='')
{
if ($_FILES[$campo]['size']!=0)
{
echo "el campo esta lleno <br>";
return 0;
}
else
{ Ha sido rechazado por tamaño
return 1;
}
}
else
{ No ha seleccionado archivo alguno
return 2;
}
}
function tiene_extension_valida($nombre)
{
$extensiones=array("jpg","jpeg","JPG","JPEG");
$var=explode(".","$nombre");
$num=count($extensiones);
$valor=$num-1;
for($i=0;$i<=$valor;$i++)
{ if($extensiones[$i]==$var[1])
{ return true;
echo "tiene extension valida<br>";
break;
}
}
return false;
}
function resize ($campo_actual, $ancho_fijo)
{
// echo "foto_resize = $foto <br>";
$foto = $_FILES[$campo_actual]['tmp_name'];
//$tamaño = $_FILES["$campo_actual"]['size'];
$im = imagecreatefromjpeg($foto);
$arr=getimagesize($foto);
$ratio = $arr[0]/$ancho_fijo;
// echo "ratio = $ratio <br>";
$im2= imagecreatetruecolor($ancho_fijo,$arr[1]/$ratio);
imagecopyresampled($im2,$im,0,0,0,0,$ancho_fijo,$arr[1]/$ratio,$arr[0],$arr[1]);
imageinterlace($im2,1);
imagejpeg ($im2,'img.jpg',75);
imagedestroy ($im);
imagedestroy ($im2);
}
function subir_foto_sql ($col_name, $yac_id,$foto_temp)
{
require_once ('../configure.php');
// $redir="<meta http-equiv=\"refresh\" content=\"5; URL=fill.php\"><br>Espera, serás redireccionado<br>";
$data = "";
$userfile = $foto_temp;
// echo "userfile = $userfile <br>";
// $tamano=$_FILES["$col_name"]["size"];
$tipo="image/pjpeg";
$fp = fopen($userfile, "rb");
while(!feof($fp))
{
$data .= fread($fp, 1024);
}
fclose($fp);
$data = addslashes($data);
$data = addcslashes($data, "\0");
require_once ("../../../../Connections/db_connect.php");
mysql_select_db($_SESSION['db_name']);
$sql = "UPDATE ".$_SESSION['nombre_ficha']." SET $col_name='$data' WHERE yac_id = ".$_SESSION['yac_id']."";
// echo "UPDATE ".$_SESSION['nombre_ficha']." SET $col_name='data' WHERE yac_id = ".$_SESSION['yac_id']."<br>";
// $res=mysql_query($sql,$_SESSION['connection'])or die (print $redir. mysql_error());
$res=mysql_query($sql,$_SESSION['connection']) ;
}
?>
y asi muestro las fotos Código PHP:
<?php print "<img src='printimage.php?col=representative&id=".$_SESSION['yac_id']."' border='1'>"; ?>
y esto es el archivo printimage.php Código PHP:
<?php
require_once ('../configure.php');
$link=mysql_connect("bd","user","password");
mysql_select_db(db);
$MainSQL="SELECT ".$_GET['col']." FROM ".$_SESSION['nombre_ficha']." where yac_id=".$_GET['id']."";
$res = mysql_query($MainSQL,$link);
$row=mysql_fetch_array($res);
$data = $row[0];
if (strlen($data)<5){
$MainSQL="SELECT img FROM temp where id=1";
$res = mysql_query($MainSQL,$link);
$row=mysql_fetch_array($res);
$data = $row[0];
}
$tipo="image/jpeg";
header("Content-Type: ". $tipo ."\n");
header("Content-Transfer-Encoding: binary\n");
header("Content-length: " . strlen($data) . "\n");
print $data;
?>