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