imho.ws |
![]() |
![]() |
![]() |
# 1 |
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> |
![]() |
# 5 |
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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. |
![]() |
![]() |
# 6 |
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; |
![]() |
# 7 | ||
Full Member
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Ты результаты проверок "if" в коде проверял? Базу проверял? Или просто скопировал себе готовый код и дальше можешь только спрашивать почему неработает? Цитата:
|
||
![]() |
![]() |
# 8 |
Newbie
Регистрация: 16.12.2005
Сообщения: 24
![]() |
Из всегда рабочих "народных советов"
Таблица 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]> "; } } 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."] "; } else { echo "<a href=$_SERVER[PHP_SELF]?page=".$i. ">[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> "; } } else { if($page == $i) { echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] "; } else { echo "<a href=$_SERVER[PHP_SELF]?page=".$i. ">[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> "; } } } ?> Код:
<?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. Причина: Добавил обшибки |
![]() |