Lagre og skrive ut bilder fra en database

Det første vi trenger, er en tabell vi kan lagre bildene våre i. I denne tabellen må vi ha et felt som er av datatypen LONGBLOB. Det vil si at vi forteller databasen at vi skal lagre en stor binærfil her.

Tabellen du trenger:
CREATE TABLE tbl_bilde (
  id int(4) NOT NULL auto_increment,
  bin_data longblob,
  filename varchar(50) default NULL,
  filesize varchar(50) default NULL,
  filetype varchar(50) default NULL,
  height int(11) NOT NULL default '0',
  width int(11) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Vi definerer et konfig fil med variabler vi ofte bruker. Denne kaller du config.php

<?php
$mysql_host = "localhost"; // Mysql host
$mysql_user = "brukernavn";// Mysql brukernavn
$mysql_pass = "passord"; // Mysql passord
$mysql_db = "sindrem"; // Mysql database
$width = 100; // Bredde på thumbnails
$height = 100; // Høyde på thumbnails
$display = 8; // Antall thumbnail på hver side
$per_linje = 4; // Antall thumbnails på hver linje
$XX = "<br>Ingen bilder!</br>"; // Feilmelding dersom ingen bilder finnes.
?>

Vi trenger også en form, slik at brukeren har mulighet for å browse til den fila han ønsker, for så å laste denne opp. MAX_FILE_SIZE setter begrensninger på hvor stor fila som lastes opp, kan være. Oppgitt i kilobyte.

I fila upload.php:
<form method="post" action="lastopp.php" enctype="multipart/form-data">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>Velg bilde du vil laste opp:<br>
<input type="file" name="form_data"  size="40">
<p><input type="submit" name="submit" value="submit">
</form>

Fila som er valgt i upload.php, sender vi så til lastopp.php. Denne filen laster bildet inn i en database.

I fila lastopp.php:
<?php

include('config.php');
MYSQL_CONNECT($mysql_host,$mysql_user,$mysql_pass);
mysql_select_db($mysql_db);
extract($_FILES['form_data']);
$data = mysql_escape_string(fread(fopen($tmp_name, "rb"), filesize($tmp_name)));
$info = getimagesize($tmp_name);
$width =$info[0];
$height=$info[1];
//echo "$height - $width";
$result=MYSQL_QUERY("INSERT INTO tbl_bilde (bin_data,filename,filesize,filetype,height,width)".
"VALUES ('$data','$name','$size','$type','$height','$width')");
print "<p>Bilde ble lastet opp.</b>";
MYSQL_CLOSE();
?>

Vi har nå lastet opp bildet vårt i databasen. I del 2 ser vi på hvordan vi kan skrive denne ut.

Til side 2 >>

Funnet på PHPBuilder og skrevet om litt.