Показать сообщение отдельно
Старый 21.03.2010, 20:27     # 8
Olegat
Newbie
 
Аватар для Olegat
 
Регистрация: 16.12.2005
Сообщения: 24

Olegat Нуль без палочки
Из всегда рабочих "народных советов"

Таблица image
Код:
CREATE TABLE image (
  id_image INT(11) NOT NULL AUTO_INCREMENT,
  name TINYTEXT NOT NULL,
  content LONGBLOB NOT NULL,
  PRIMARY KEY (id_image)
) TYPE=MyISAM;
Загрузка графики в базу

Код:
<form enctype='multipart/form-data' method=post>
<input type="file" name="image"><br>
<input type=submit value='Загрузить'>
</form>
<?php
  // Число изображений на странице
  $pnumber = 3;

  // Устанавливаем соединение с базой данных
  require_once("config.php");

  // Обработчик HTML-формы
  if(!empty($_FILES))
  {
    // Проверяем, является ли переданный файл изображением
    if(substr($_FILES['image']['type'],0,5) == 'image')
    {
      // Читаем содержимое файла
      $content = file_get_contents($_FILES['image']['tmp_name']);
      // Уничтожаем файл во временном каталоге
      unlink($_FILES['image']['tmp_name']);

      // Экранируем спецсимволы в бинарном содержимом файла
      $content = mysql_escape_string($content);

      // Формируем запрос на добавление файла в таблицу
      $query = "INSERT INTO image VALUES(NULL,
                                         '".$_FILES['image']['name']."',
                                         '$content')";
      if(mysql_query($query))
      {
        // Осуществляем автоматическую перезагрузку страницы
        echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
             </HEAD></HTML>";
      } else exit(mysql_error());
    }
  }

  // Проверяем, передан ли номер текущей страницы
  if(isset($_GET['page'])) $page = $_GET['page'];
  else $page = 1;

  // Начальная позиция
  $start = (($page - 1)*$pnumber + 1);

  // Выводим список файлов
  $query = "SELECT * FROM image LIMIT $start, $pnumber";
  $img = mysql_query($query);
  if(!$img) exit(mysql_error());
  // Если имеется хотя бы одна запись,
  // выводим ее
  if(mysql_num_rows($img) > 0)
  {
    while($image = mysql_fetch_array($img))
    {
      echo "<img src=get.php?id_image=$image[id_image]>&nbsp;";
    }
  }
  echo "<br><br>";

  // Число страниц
  $query = "SELECT COUNT(*) FROM image";
  $tot = mysql_query($query);
  if(!$tot) exit(mysql_error());
  $total = mysql_result($tot,0);
  $number = (int)($total/$pnumber);
  if((float)($total/$pnumber) - $number != 0) $number++;

  // Постраничная навигация
  for($i = 1; $i <= $number; $i++)
  {
    if($i != $number)
    {
      if($page == $i)
      {
        echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]&nbsp;";
      }
      else
      {
        echo "<a href=$_SERVER[PHP_SELF]?page=".$i.
             ">[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
    }
    else
    {
      if($page == $i)
      {
        echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]&nbsp;";
      }
      else
      {
        echo "<a href=$_SERVER[PHP_SELF]?page=".$i.
             ">[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a>&nbsp;";
      }
    }
  }
?>
Вывод графики из базы

Код:
<?php
  // Устанавливаем соединение с базой данных
  require_once("config.php");

  // Проверяем, передан ли параметр id_image
  // и является ли он целым числом, чтобы
  // предотвратить SQL-инъекцию
  if(!preg_match("|^[\d]+$|",$_GET['id_image']))
  {
    exit("Недопустимый формат URL-запроса");
  }

  // Извлекаем файл изображения из базы данных
  $query = "SELECT * FROM image
            WHERE id_image = $_GET[id_image]";
  $img = mysql_query($query);
  if(!$img) exit(mysql_error());
  $image = mysql_fetch_array($img);

  // Отсылаем заголовки на загрузку файла
  header("Content-type: image/*");
  // Отправляем файл пользователю
  echo $image['content'];
?>
Конфиг надо иметь свой

Последний раз редактировалось Olegat; 21.03.2010 в 20:30. Причина: Добавил обшибки
Olegat вне форума