Создание базы данных для изображений

В этом уроке мы научимся загружать изображение в базу данных 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>
				

Вот и все!

Просмотров: 1751      Опубликовал: Евгений Фединчик      Дата: 05.03.2010 11:53:28
  • Понравился урок? Добавьте его к себе в закладки.

    Последние уроки категории:

    Сокращение PHP кода

    Вы задумывались когда — нибудь о том, что лишний и бесполезный код убивает ваше время разработки приложения/сайта. Хотя это и кажется мелочью, но когда такой мелочи становится много, то время, потраченное впустую, становится ценным. И так давайте посмотрим, что можно и нужно сокращать...

    Видимость переменных в PHP

    В данном уроке рассматривается область видимости переменных PHP. Объясняется различие локальной и глобальной области видимости, показывается как получить доступ к глобальным переменным внутри функции, как работать с суперглобалами и создавать статические переменные.

    Как читать Rss ленты?

    Читалки и агрегаторы RSS используются для доступа, чтения и управления периодически-обновляемыми лентами RSS (или Atom), которые генерируются веб-сайтами. Эти ленты предоставляют доступ к последним материалам с этих сайтов.

    Установка и настройка PHP+Apache

    В этом уроке хотелось бы поднять очень интересную тему – Установка и настройка веб сервера PHP5 + Apache. В интернете довольно много различных инструкций по данной теме, но только вот в основном это копипаст, а не инструкция для человека, я же постараюсь объяснить все намного проще – на пальцах. Причина для установки локального вебсервера довольно много, например скорость выполнения и отладки скриптов, простота загрузки и модернизации контента и еще много чего.

    Как выбрать фреймворк

    Так уж повелось, что лень – это двигатель прогресса и как бы странно это не звучало, все те блага цивилизации, которые мы имеем сейчас были сделаны в первую очередь для нашего комфорта. Так и программисты чтобы облегчить себе жизнь и тем самым получить возможность создавать более сложные проекты за менее долгое время придумали сделать себе фреймворки.

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

    • Осталось: 1000 символов.
      Сохранить комментарий Отправка комментария
    lessons
    downloads
    search
    hosting

    Ищите хороший и не дорогой хостинг?

    Хостинг avahost.ua
    VPS VDS - виртуальный выделенный сервер
    sistems
    RBK Money

    Обменник.ws
    Статистика HitUa