Создание базы данных для изображений
В этом уроке мы научимся загружать изображение в базу данных MySql с использованием PHP. Хотя идея звучит сложной, но является достаточно простой в реализации и имеет множество практических применений. Изображение можно вызвать с базы данных с помощью всего одного PHP запроса. У вас, наверное, уже созрел вопрос – «Как изображения вставляются в базу данных?». Сейчас мы будем в этом разбираться.
Ну что начнем изучать!
Создаем три PHP файла:
-readdir.php – записываем изображение в базу данных
- image.php – сценарий отображения изображения
- view.php - пример файла, который покажет вам, как называются изображения
Создаем базу данных для изображений
Во-первых, для начала нам нужно создать базу данных, куда будут записываться изображения, назовем ее base64imgdb.
Во-вторых, создать таблицу с двумя строками:
CREATE TABLE `images` ( `imgid` INT NOT NULL AUTO_INCREMENT , `sixfourdata` LONGTEXT NOT NULL , PRIMARY KEY ( `imgid` ) );
Создание READDIR.PHP
Для начала работы, нам нужно создать соединение с базой данных:
<?php
$dbcnx = mysql_connect("localhost", "username", "password");
mysql_select_db("base64imgdb");
?>
Далее нам нужно открыть каталог, где ". /" - это каталог где находится файл readdir.php:
$path = "./";
$dir_handle = opendir($path) or die("Unable to open directory $path");
Это самая трудная часть сценария: сортировка типов изображений, чтение данных с использованием fopen, превращая его в использование base64_encode, а затем вставить его в таблицу.
<?php
while ($file = readdir($dir_handle)) {
$filetyp = substr($file, -3);
if ($filetyp == 'gif' OR $filetyp == 'jpg') {
$handle = fopen($path . "/" . $file,'r');
$file_content = fread($handle,filesize($path . "/" . $file));
fclose($handle);
$encoded = chunk_split(base64_encode($file_content));
$sql = "INSERT INTO images SET sixfourdata='$encoded'";
mysql_query($sql);
}
}
?>
Это последняя и окончательная часть readdir.php: закрытие каталога и завершение процесса:
<?php
closedir($dir_handle);
echo("complete");
mysql_close($dbcnx);
?>
Создание image.php
Этот файл принимает запросы, декодирует данные и представляет себя в качестве изображения. Во-первых, мы должны подключиться к базе данных еще раз:
<?php
$dbcnx=mysql_connect("localhost","username","password");
mysql_select_db("base64imgdb");
?>
Теперь мы создадим строки, которые осуществляют запрос типа image.php?img=x
<?php $img = $_REQUEST["img"]; ?>
После этого, нам необходимо подключиться к таблице в базе данных, получить данные, и установить их в переменные:
<?php
$result = mysql_query("SELECT * FROM images WHERE imgid=" . $img ."");
if (!$result) {
echo("<b>Не удалось подключиться к базе данных: " . mysql_error() . "</b>");
exit();
}
while ($row = mysql_fetch_array($result)) {
$imgid = $row["imgid"];
$encodeddata = $row["sixfourdata"];
}
?>
Это наиболее запутанная часть файла:
<?php mysql_close($dbcnx); echo base64_decode($encodeddata); ?>
Ну и наконец, вывод изображения.
<img src='image.php?img=1' border="0" alt="">
Файлы которые мы использовали для создания скрипта.!
readdir.php:
<?php
$dbcnx = mysql_connect("localhost", "username", "password");
mysql_select_db("base64imgdb");
$path = "./";
$dir_handle = opendir($path) or die("Unable to open directory $path");
while ($file = readdir($dir_handle)) {
$filetyp = substr($file, -3);
if ($filetyp == 'gif' OR $filetyp == 'jpg') {
$handle = fopen($file,'r');
$file_content = fread($handle,filesize($file));
fclose($handle);
$encoded = chunk_split(base64_encode($file_content));
$sql = "INSERT INTO images SET sixfourdata='$encoded'";
mysql_query($sql);
}
}
closedir($dir_handle);
echo("complete");
mysql_close($dbcnx);
?>
image.php
<?php
$dbcnx = mysql_connect("localhost", "username", "password");
mysql_select_db("base64imgdb");
$img = $_REQUEST["img"];
$result = mysql_query("SELECT * FROM images WHERE imgid=" . $img . "");
if (!$result) {
echo("<b> Не удалось подключиться к базе данных: " . mysql_error() . "</b>");
exit();
}
while ($row = mysql_fetch_array($result) ) {
$imgid = $row["imgid"];
$encodeddata = $row["sixfourdata"];
}
mysql_close($dbcnx);
echo base64_decode($encodeddata);
?>
И view.php
<html> <body> ... <img src='image.php?img=1' border="0" alt=""> ... </body> </html>
Вот и все!
Последние уроки категории:
Сокращение PHP кода
Вы задумывались когда — нибудь о том, что лишний и бесполезный код убивает ваше время разработки приложения/сайта. Хотя это и кажется мелочью, но когда такой мелочи становится много, то время, потраченное впустую, становится ценным. И так давайте посмотрим, что можно и нужно сокращать...
Видимость переменных в PHP
В данном уроке рассматривается область видимости переменных PHP. Объясняется различие локальной и глобальной области видимости, показывается как получить доступ к глобальным переменным внутри функции, как работать с суперглобалами и создавать статические переменные.
Как читать Rss ленты?
Читалки и агрегаторы RSS используются для доступа, чтения и управления периодически-обновляемыми лентами RSS (или Atom), которые генерируются веб-сайтами. Эти ленты предоставляют доступ к последним материалам с этих сайтов.
Установка и настройка PHP+Apache
В этом уроке хотелось бы поднять очень интересную тему – Установка и настройка веб сервера PHP5 + Apache. В интернете довольно много различных инструкций по данной теме, но только вот в основном это копипаст, а не инструкция для человека, я же постараюсь объяснить все намного проще – на пальцах. Причина для установки локального вебсервера довольно много, например скорость выполнения и отладки скриптов, простота загрузки и модернизации контента и еще много чего.
Как выбрать фреймворк
Так уж повелось, что лень – это двигатель прогресса и как бы странно это не звучало, все те блага цивилизации, которые мы имеем сейчас были сделаны в первую очередь для нашего комфорта. Так и программисты чтобы облегчить себе жизнь и тем самым получить возможность создавать более сложные проекты за менее долгое время придумали сделать себе фреймворки.




Комментарии: