PHP - subir y mostrar imagenes en una base mysql

 
Vista:

subir y mostrar imagenes en una base mysql

Publicado por Sandra (1 intervención) el 11/12/2006 14:47:02
el problema que tengo es el siguiente ya subo la imagen a la base de datos en un campo Blob pero en el momento de mostrar solo me muestra codigo binario.. El codigo es el siquiente porfa diganme que me falta o que esto haciendo mal..
**ingreso.php**
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>INGRESO DE DATOS</title>
</head>
<body>
<?PHP
$conexion=mysql_connect("localhost","root","");
if(!$conexion)
{
echo "Error en la conexion";
exit;
}
else
{
$foto_name= $_FILES['foto']['name'];
$foto_size= $_FILES['foto']['size'];
$foto_type= $_FILES['foto']['type'];
$foto_temporal= $_FILES['foto']['tmp_name'];
$f1= fopen($foto_temporal,"rb");

$foto_reconvertida = fread($f1, $foto_size);
$foto_reconvertida=addslashes($foto_reconvertida);

$cedula=$_POST['cedula'];
$apellido=$_POST['apellido'];
$nombre=$_POST['nombre'];
$telefono=$_POST['telefono'];
mysql_select_db("",$conexion);
$SQL ="select * from clientes where ci='$cedula'";
$resultado=mysql_query($SQL,$conexion);
$filas= mysql_affected_rows($conexion);
if($filas==0)
{
if (($foto_type=='image/pjpeg')||($foto_type=='image/jpeg')||($foto_type=='image/gif') )
{
$SQL = "insert into clientes (nombre,apellido,ci,telefono,foto,tipo) values('$nombre','$apellido','$cedula','$telefono','$foto_reconvertida','$foto_type')";
$resultado=mysql_query($SQL,$conexion);
echo "DATO INGRESADO EXITOSAMENTE <BR>";
}
else
{
echo "no es una imagen";
}
}
else
{
echo "LA CEDULA YA HA SIDO INGRESADA <BR>";
}

mysql_close($conexion);
}

?>

</body>
</html>
** ver.php**

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="image/pjpg; charset=iso-8859-1" />
<link rel="stylesheet" href="estilo.css" type="text/css"/>
<title>Consulta</title>
</head>
<body>
<?PHP
//conectar al servidor
$conexion= mysql_connect("localhost","root","");
if (!$conexion)
{
echo "error de conexion";
}
else
{
//conectar a la base de datos
mysql_select_db("",$conexion);
//selecciona todos los registros de la tabla clientes
$sql="select * from clientes";
//ejecuta la sentencia
$resultado=mysql_query($sql,$conexion);

echo "<table border='5'>";
echo "<td bgcolor='blue'>Nombre</td><td bgcolor='blue'> Apellido</td><td bgcolor='blue'> CI </td><td bgcolor='blue'> Telefono </td>";
echo "<td bgcolor='blue'>Foto</td>";
//bucle hasta que se acabe el arreglo
while($campos=mysql_fetch_array($resultado)) //arreglo de los resultado (mysql_fetch_array)
{
echo "<tr>";
echo "<td bgcolor='aqua'>  $campos[0]</td> ";
echo "<td bgcolor='aqua'>$campos[1] </td>";
echo "<td bgcolor='aqua'>$campos[2] </td>";
echo "<td bgcolor='aqua'>$campos[3]</td> ";

$imagen =$campos[4];
$mime = $campos[5];
//cambias al tipo de la imagen
//header("Content-Type: $mime");
echo "<td bgcolor='aqua'>$imagen</td> ";
echo "</tr> ";
}
echo "</table>";
//cierras la conexion
mysql_close($conexion);

}

?>

</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:subir y mostrar imagenes en una base mysql

Publicado por FiSiCo (403 intervenciones) el 12/12/2006 00:33:28
Lo que pasa es que al extraer un archivo de MySQL lo que estraes es su codigo binario asi:

**extrae.php**
//Sentencia SQL
"select * from imagenes where id=".$_GET["id"];

$imagen =$campos[4];
$mime = $campos[5];
//cambias al tipo de la imagen
header("Content-Type: $mime");
echo $imagen;

aqui muestras la imagen pero si esta imagen o mas imagenes las quieres mostrar en una tabla para extraer la imagen tienes que utilizar un archivo extra que es el que te extrae las imagenes po ejemplo asi:

**ver.php**

while($campos=mysql_fetch_array($resultado)) //arreglo de los resultado (mysql_fetch_array)
{
echo "<tr>";
echo "<td bgcolor='aqua'> $campos[0]</td> ";
echo "<td bgcolor='aqua'>$campos[1] </td>";
echo "<td bgcolor='aqua'>$campos[2] </td>";
echo "<td bgcolor='aqua'>$campos[3]</td> ";

echo "<td bgcolor='aqua'><img src="extrae.php?id=$id"></td> ";
echo "</tr> ";
}
echo "</table>";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar