MySql y PHP

Hola, me llamo Sergi y acabo de empezar con php. Lo que necesito es generar páginas php que contengan imágenes y me gustaría saber cómo almacenarlas en la base de datos MySql. También me gustaría saber cómo guardar en la base de datos simplemente la dirección de ubicación de las diferentes imágenes y así no tener que aumentar innecesariamente el tamaño de la base de datos.
Muchas gracias.
1

1 Respuesta

35.075 pts.
Hi,
Mira, lo que tengo hecho yo son dos script que guardan (store.php3) y muestran (gatdata.php3) en una tabla de mySQL.
Obviamente las imágenes quedan bajo la estructura de la tabla y no en archivos.
Te mando los scripts y el formato de la tabla a continuación:
----------------------
Para guardar la imagen
----------------------
<?php
// store.php3 - by Florian Dittmer <[email protected]>
// Example php script to demonstrate the storing of binary files into
// an sql database. More information can be found at http://www.phpbuilder.com/
?>
<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>
<?php
// code that will be executed if the form has been submitted:
if ($submit) {
// connect to the database
// (you may have to adjust the hostname,username or password)
MYSQL_CONNECT("localhost","root","password");
mysql_select_db("binary_data");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
"VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysql_insert_id();
print "<p>This file has the following Database ID: <b>$id</b>";
MYSQL_CLOSE();
} else {
// else show the form to submit new data:
?>
<form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description" size="40">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
</BODY>
</HTML>
---------------------
Fin guardar imagen
-----------------------
-----------------------
Para mostrar la imagen
-----------------------
<?php
// getdata.php3 - by Florian Dittmer <[email protected]>
// Example php script to demonstrate the direct passing of binary data
// to the user. More infos at http://www.phpbuilder.com
// Syntax: getdata.php3?id=<id>
if($id) {
// you may have to modify login information for your database server:
@MYSQL_CONNECT("localhost","root","password");
@mysql_select_db("binary_data");
$query = "select bin_data,filetype from binary_data where id=$id";
$result = @MYSQL_QUERY($query);
$data = @MYSQL_RESULT($result,0,"bin_data");
$type = @MYSQL_RESULT($result,0,"filetype");
Header( "Content-type: $type");
echo $data;
};
?>
------------------
Fin mostrar imagen
------------------
El script de mostrar imagen se puede utilizar en un codigo HTML de la forma "<img src="getdata.php3?id=3">"
De otra forma si haces una aplicación (ej. En Delphi) podes mostrar la imagen agregando un simple componente que "chupa" los datos binarios y los transforma un una imagen.
Obviamente los scripts que te mande son lo base de lo base y son modificables. Se pueden agregar muchas cosas y no solo sirve para guardar y mostrar imágenes porque en la tabla llevas el tipo de datos que guardas.
La tabla tiene el formato:
CREATE TABLE binary_data (
id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
description CHAR(50),
bin_data LONGBLOB,
filename CHAR(50),
filesize CHAR(50),
filetype CHAR(50)
);
Modifícala a tu gusto. Es solo un ejemplo que funciona.
Si necesitas el otro formato, o sea, el que guarda solo las direcciones de los archivos en la tabla y las imágenes en archivos separados en lel disco podes buscar en www.phpbuilder.com que seguro esta el código fuente de ese script. En la zona Code Library.
Espero que te haya servido y cualquier otra consulta que tengas no dudes en preguntarme.
Nahuelon..

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas