imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 08.02.2010, 00:34     # 1
sambik
Guest
 
Сообщения: n/a

сохранение и извлечения изображения в mysql

помогите пожалуста с проблемой сохранение и извлечения изображения в mysql с использованием php моя таблицы images.


CREATE TABLE `images` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`content` blob NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
и код по идеи при загрузки изображения она должна высвечиваться с базу на экран но не работает может мы сможети помочь или подсказать свою версию ввода и вывода изображения
<?php
// Соединяемся с сервером БД
mysql_connect ( 'localhost', 'root', '' );
mysql_query( 'SET NAMES cp1251' );
mysql_select_db ( 'images' );

if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
// Проверяем пришел ли файл
if( !empty( $_FILES['image']['name'] ) ) {
// Проверяем, что при загрузке не произошло ошибок
if ( $_FILES['image']['error'] == 0 ) {
// Если файл загружен успешно, то проверяем - графический ли он
if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
// Читаем содержимое файла
$image = file_get_contents( $_FILES['image']['tmp_name'] );
// Экранируем специальные символы в содержимом файла
$image = mysql_escape_string( $image );
$title = mysql_escape_string( $_POST['title'] );
// Формируем запрос на добавление файла в базу данных
$query="INSERT INTO `images` VALUES(NULL, '".$title."', '".$image."')";
// После чего остается только выполнить данный запрос к базе данных
mysql_query( $query );
}
}
}
}
?>
<html>
<head>
<title>Загрузка изображений</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<h3>Загруженные изображения</h3>
<p>
<?php
$query = "SELECT id, title FROM images WHERE 1 ORDER BY id";
$res = mysql_query( $query );
while( $img = mysql_fetch_array( $res ) ) {
echo '<img src="image.php?id='.$img['id'].'" alt="'.$img['id'].'" />';
}
?>
</p>
<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
Наименование: <input type="text" name="title" value="" /><br/>
Изображение: <input type="file" name="image" /><br/>
<input type="submit" value="Загрузить" />
</form>
</body>
</html>
 
Старый 08.02.2010, 11:39     # 2
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
И что там неработает? Какие ошибки?
EvroStandart вне форума  
Старый 09.02.2010, 09:59     # 3
sambik
Guest
 
Сообщения: n/a

не выходит изображение
 
Старый 09.02.2010, 10:52     # 4
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Куда не выходит?
В таблицу базы? В броузер?
image.php вообще существует?
EvroStandart вне форума  
Старый 09.02.2010, 11:42     # 5
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
sambik, раз уж ты решил заняться программированием, позволь дать тебе несколько советов, как программист программисту.

1) слышал про такой сайт - google.com? запрос http://www.google.com.ua/search?q=php+mysql+image выдает столько ссылок на статьи и примеры, аналогичные твоему, что способен разобраться даже начинающий. не надо с первой же проблемой ломиться на форумы - другое дело, если вопрос нетривиальный или же по теме ничего не нашлось

2) если уж задаешь вопрос - то максимально точно указывай, в чем проблема. EvroStandart тебя правильно переспрашивает - слова "помогите, не работает что-то, где-то, почему-то" говорят очень мало по сравнению с описанием "вот тут вот в ХХХ строке выдает ошибку ХХХ"

3) опять же - задавая вопрос, предоставляй не просто кусок своего кода, а именно то место, где загвоздка. если у тебя не выводится картинка из базы на страничку, то телепатов, способных на расстоянии прочесть, что же у тебя там в файле image.php, еще не родили и даже не зачали.

4) и последнее: на сайте есть замечательный тег CODE, который, как ни странно, предназначен для публикации листингов
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 10.02.2010, 18:05     # 6
sambik
Guest
 
Сообщения: n/a

[img]C:\1.jpg[/img]
[img]C:\2.jpg[/img]
у меня проблемы с выводом изображения у меня установлен wampserver2 по идеи должен поддерживать.
После загрузки должно появляться изображение которое загрузилась но появляется (x1).на explorer и google ch.p.
а на mozille и opere толька (1).
И еще хотел спросить как можно через браузер сохранять изображение в папку. А путь к папке можно хоронить в базе а так можно вытащить из базы я думаю так <img srt="<? row ["imag"]?>"> заранее спасибо.

<?php
// Соединяемся с сервером БД
mysql_connect ( 'localhost', 'root', '' );
mysql_query( 'SET NAMES cp1251' );
mysql_select_db ( 'test2' );


if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
// Проверяем пришел ли файл
if( !empty( $_FILES['image']['name'] ) ) {
// Проверяем, что при загрузке не произошло ошибок
if ( $_FILES['image']['error'] == 0 ) {
// Если файл загружен успешно, то проверяем - графический ли он
if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
// Читаем содержимое файла
$image = file_get_contents( $_FILES['image']['tmp_name'] );
// Экранируем специальные символы в содержимом файла
$image = mysql_escape_string( $image );
$title = mysql_escape_string( $_POST['title'] );
// Формируем запрос на добавление файла в базу данных
$query="INSERT INTO `images` VALUES(NULL, '".$title."', '".$image."')";
// После чего остается только выполнить данный запрос к базе данных
mysql_query( $query );
}
}
}
}
?>
<html>
<head>
<title>Загрузка изображений</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<h3>Загруженные изображения</h3>
<p>
<?php
$query = "SELECT id, title FROM images WHERE 1 ORDER BY id";
$res = mysql_query( $query );
while( $img = mysql_fetch_array( $res ) ) {
echo '<img src="img2.php?id='.$img['id'].'" alt="'.$img['id'].'" />'; // вывод изображений из базы данных
}

?>
</p>
<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
Наименование: <input type="text" name="title" value="" /><br/>
Изображение: <input type="file" name="image" /><br/>
<input type="submit" value="Загрузить" />
</form>
</body>
</html>


img2.php

Код: Выделить всё

<?
mysql_connect ( 'localhost', 'root', '' );
mysql_query( 'SET NAMES cp1251' );
mysql_select_db ( 'test2' );


$sql = "SELECT * FROM images WHERE id=$_GET[id]";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$pic = $row["content"];
mysql_free_result($result);

header("Content-Type: image/jpg");
echo $pic;
?>

CREATE TABLE `images` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`content` blob NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
 
Старый 11.02.2010, 11:29     # 7
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от sambik Посмотреть сообщение
появляется (x1).на explorer и google ch.p.
а на mozille и opere толька (1).
Вообще ничего непонял.

Ты результаты проверок "if" в коде проверял? Базу проверял? Или просто скопировал себе готовый код и дальше можешь только спрашивать почему неработает?


Цитата:
Сообщение от sambik Посмотреть сообщение
И еще хотел спросить как можно через браузер сохранять изображение в папку.
http://www.google.ee/search?hl=et&q=...i&lr=&aq=f&oq=
EvroStandart вне форума  
Старый 21.03.2010, 19: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 в 19:30. Причина: Добавил обшибки
Olegat вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:17.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.