Interacción MySQL-PHP con Imágenes

Antes de nada quisiese agradecerle la molestia que se toma para con su ayuda a los demás.
La duda que quisiese plantearle es referida a la interacción php-mysql.
Desearía, por poner un ejemplo, crear un formulario con los campos titulo y caratula, a modo como si plantease una gestión de un videoclub.
El campo nombre sería un campo de texto y el campo de imagen sería un campo de archivo, es decir, nos aparecería el botón de examinar para elegir la imagen de nuestro disco duro.
A la hora de crear la base de datos en mysql, sé que el campo de eimagen debemos definirlo como BLOB... Y hasta ahí llego...
¿Cuál sería el código php para que pueda enviar los datos correctamente a la base correspondiente, el campo titulo queda claro que lo envío como texto, pero el campo imagen, cómo transformarla para meterla en la base...?
Y una vez que están los datos introducidos... ¿Cuál sería el código para que me paareciese una lista completa en forma de tabla con dos columnas, en una que me aparezca el titulo y en la otra la caratula (ya en imagen, lógicamente) de todos los datos introducidos...?
Y la última pregunta... ¿Cuál sería el código para que nos aparezca la caratula eligiendo previamente el id o el titulo de la misma...?
Nuevamente le pido disculpas por las molestias y le agradezco muchísimo su ayuda.

1 Respuesta

Respuesta
1
Te mando un ejemplo que hice:
Nota: La tabla la definí con 3 campos: id, titulo, caratula, tipo.
En el campo tipo, vamos a guardar el tipo de imagen que es.
archivo: load.php
<?php
if ($_POST['enviado'] == 1) {
$link = mysql_connect("localhost",'root','abichuela');
mysql_select_db("conamed",$link);
// Aqui obtenemos el archivo y sus caracteristicas
$archivo = $_FILES['archivo']['tmp_name'];
$arch_size = $_FILES['archivo']['size'];
$arch_tipo = $_FILES['archivo']['type'];
$arch_name = $_FILES['archivo']['name'];
//creamos un arreglo con los tipos de imagenes que vamos a aceptar
$mimetypes = array("image/pjpeg", "image/gif", "image/png");
if (!in_array($arch_tipo,$mimetypes)){
echo "El tipo de imagen no es valida: $arch_tipo";
exit();
}
switch($arch_tipo) {
case $mimetypes[0]:
$imagen = imagecreatefromjpeg($archivo);
break;
case $mimetypes[1]:
$imagen = imagecreatefromgif($archivo);
break;
case $mimetypes[2]:
$imagen = imagecreatefrompng($archivo);
break;
}
// Aquí, abrimos el archivo como solo lectura, lo leemos y el contenido lo asignamos a una variable.
$fp = fopen($archivo, "rb");
$contenido = fread($fp, filesize($archivo));
$contenido = addslashes($contenido);
fclose($fp);
$sql = "INSERT INTO tabla VALUES ('','$_POST[titulo]','$contenido','$arch_tipo')";
mysql_query($sql,$link) or die(mysql_error());
header("Location: mostrarimagenes.php");
}
?>
// Este es el codigo html para mostrar el formulario
<style type="text/css">
<!--
.Estilo1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
.Estilo2 {color: #666666}
.Estilo3 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #666666; }
-->
</style>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<br>
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="Estilo3">Nombre de la imagen</span></td>
<td><input name="titulo" type="text" class="Estilo3"></td>
</tr>
<tr>
<td class="Estilo1 Estilo2">Imagen (gif,jpg,png)</td>
<td><input name="archivo" type="file" class="Estilo3"></td>
</tr>
<tr>
<td><input type="hidden" name="enviado" value="1"></td>
<td><input name="Enviar" type="submit" class="Estilo3" value="Enviar archivo"></td>
</tr>
</table>
<br>
</form>
*************************
archivo: mostrarimagenes.php
<?php
if ($_GET['lista'] == 1) {
$link = mysql_connect("localhost",'root','abichuela');
mysql_select_db("conamed",$link);
$sql = "SELECT * FROM tabla WHERE id = '$_GET[id]'";
$res = mysql_query($sql,$link) or die(mysql_error());
$fila = mysql_fetch_array($res);
$imagen = $fila[2];
$tipo = $fila[3];
echo header("Content Type:$tipo");
echo $imagen;
return;
}
?>
<table>
<tr bgcolor="#CCCCCC">
<td>Titulo</td>
<td>Tipo</td>
<td>-</td>
</tr>
<?php
$link = mysql_connect("localhost",'root','abichuela');
mysql_select_db("conamed",$link);
$sql = "SELECT * FROM archivos";
$res = mysql_query($sql,$link) or die(mysql_error());
while($fila = mysql_fetch_array($res)){
$id = $fila[0];
$titulo = $fila[1];
// $imagen = $fila[2];
$tipo = $fila[3];
printf("<tr><td>%s</td><td>%s</td><td><a href='$_SERVER[PHP_SELF]?lista=1&id=$id'>Ver</a></td>",$titulo,$tipo,$id);
}
?>
Te dejo un link donde puedes profundizar más en todo esto:
www.programacion.com/php/articulo/datos_blob

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas