Crear base de datos y que se guarden
He creado una base de datos en mysql para guardar una imagen y un enlace, la base de datos tiene 4 campos "imagen_id (auto_increment), imagen (mediumblob), tipo_imagen (varchar 30), url (text). Hasta aquí bien. Pero lo único que se guarda es la imagen.
Este es mi formulario.html
<form action="almacenar.php" method="POST" enctype="multipart/form-data"> <label for="imagen">Imagen:</label> <input type="file" name="imagen" id="imagen" /><br> <br> <strong>EMBED: </strong> <input name="embed" type="text" id="embed" size="50" /><br> <strong>URL: </strong> <input name="url" type="text" id="url=" size="50" /><br> <input type="submit" name="subir" value="Subir Imagen"/> </form>
Este es el archivo almacenar.php
<?php
// Conexion a la base de datos
mysql_connect("BASE_DE_DATOS","USUARIO","") or die(mysql_error());
mysql_select_db("imagenes") or die(mysql_error());
// Comprobamos si ha ocurrido un error.
If (!isset($_FILES["imagen"]) || $_FILES["imagen"]["error"] > 0)
{
echo "Ha ocurrido un error.";
}
else
{
// Verificamos si el tipo de archivo es un tipo de imagen permitido.
// y que el tamaño del archivo no exceda los 16MB
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
$limite_kb = 16384;
if (in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb * 1024)
{
// Archivo temporal
$imagen_temporal = $_FILES['imagen']['tmp_name'];
// Tipo de archivo
$tipo = $_FILES['imagen']['type'];
// Leemos el contenido del archivo temporal en binario.
$fp = fopen($imagen_temporal, 'r+b');
$data = fread($fp, filesize($imagen_temporal));
fclose($fp);
//Podríamos utilizar también la siguiente instrucción en lugar de las 3 anteriores.
// $data=file_get_contents($imagen_temporal);
// Escapamos los caracteres para que se puedan almacenar en la base de datos correctamente.
$data = mysql_escape_string($data);
// Insertamos en la base de datos.
$resultado = @mysql_query("INSERT INTO imagenes (imagen, tipo_imagen) VALUES ('$data', '$tipo')");
if ($resultado)
{
echo "El archivo ha sido copiado exitosamente.";
}
else
{
echo "Ocurrió algun error al copiar el archivo.";
}
}
else
{
echo "Formato de archivo no permitido o excede el tamaño límite de $limite_kb Kbytes.";
}
}
?>Y este archivo para mostrar la imagenes obtenerfotografia.php
<?php
// Conexion a la base de datos
mysql_connect("BASE_DE_DATOS", "USUARIO", "CONTRASEÑA") or die(mysql_error());
mysql_select_db("imagenes") or die(mysql_error());
if ($_GET['id'] > 0)
{
// Consulta de búsqueda de la imagen.
$consulta = "SELECT imagen, tipo_imagen FROM imagenes WHERE imagen_id={$_GET['id']}";
$resultado = @mysql_query($consulta) or die(mysql_error());
$datos = mysql_fetch_assoc($resultado);
$imagen = $datos['imagen']; // Datos binarios de la imagen.
$tipo = $datos['tipo_imagen']; // Mime Type de la imagen.
// Mandamos las cabeceras al navegador indicando el tipo de datos que vamos a enviar.
header("Content-type: $tipo");
// A continuación enviamos el contenido binario de la imagen.
echo $imagen;
}
?>Quisiera saber que hago mal o que hay mal en los códigos para que no guarde los enlace.
Y ya de paso saber como es la consulta para mostrar las imagenes y los enlaces.
1 Respuesta
Respuesta de Sveinbjorn El Rojo
2
