| 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 в 20:30. Причина: Добавил обшибки |
|
|