Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
1

Вывод изображения из базы данных MySQL

27.05.2014, 15:49. Просмотров 5096. Ответов 21
Метки нет (Все метки)

Не могу вывести изображения из бд. Может что-то с тегами перепутал.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<HTML><head><title>stud</title></head>
<meta header="Content-type: image/*">
<form action="index.php" method="post">
 
<br>
 
<?
$dbhost="localhost";              //имя сервера
$username="root";  //имя пользователя базы
$dbpass="";      // пароль базы
$dbname="student"; //наименование источника данных с описанием базы данных
$operation=$_POST['operation'];
$link=mysql_connect($dbhost,$username,$dbpass);    //связь с базой данных
if(!$link) exit("Ошибка при подключении к БД");    //ошибка при подключении базы
$rezult=mysql_select_db($dbname, $link);
$zapros="SELECT foto FROM image "; //запрос на поиск
$rezult=mysql_query  ($zapros);                                   //выполнение запроса
if(!$rezult)  exit ("Ошибка при выполнении запроса" . mysql_error());
 
 
 
switch ($operation)                                                //проверка, какая кнопка была нажата
 {
 
case 'Загрузить фото':  
 
$foto=$_POST['image'];
 
$zapros1="INSERT INTO image SET   foto='$foto'"; //запрос на поиск
$rezult1=mysql_query  ($zapros1);                                   //выполнение запроса
if(!$rezult1)  exit ("Ошибка при выполнении запроса" . mysql_error());
echo("Запись добавлено");   
 
break;
  
  
  
 break; // выход из оператора switch
} //конец оператора switch
 
 
 
$zapros1="SELECT foto FROM image "; //запрос на поиск
$rezult1=mysql_query  ($zapros1);  
$i=1;
 while  ($row=mysql_fetch_array ($rezult1)) //цикл чтения записей запроса
{ 
   $foto1[$i]=$row[foto];
 
   $maxnum=$i; 
    $i++;
 echo("<br> $foto1[$i]<br>");
}
 
 
 mysql_close($link); //закрытие базы данных
 
 
for ($i=1; $i<$maxnum+1; $i++)
{
echo "<table>
<tr>
<td>
 
<img src='$foto1[$i]' alt='' />
</td>
</tr> 
</table>";
}
 
echo "<table>
<tr>
<td>
Изображение: <input type='file' name='image' />
<input type='submit' name='operation'  value='Загрузить фото' />
</td>
</tr> 
</table>";
 
echo("    <br>");
 ?> 
 
</form>
</body>
</HTML>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2014, 15:49
Ответы с готовыми решениями:

Вывод изображения из базы данных
Здравствуйте, не могу вывести изображение. &lt;? echo '&lt;div class=&quot;post&quot;&gt;'; $news...

Вывод данных из базы данных MySQL в PHP в виде дерева.
У нас в сети решили сделать портал-базу по рефератам. Все я сделал остались две траблы, про первую...

Некорректный вывод данных с базы MySQL
Добрый день! Есть страничка, которая выводит афиши спектаклей в строку, в зависимости от размера...

Вывод из базы данных MySQL по нажатию
Ситуация такая, в базе данных хранятся изображения(путь к изображению) и с определенным описаниями...

21
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:04 2
а в базе оно есть?
какой формой вы его в базу отправляете?
что в поле $_POST['image'] передаете?
там путь или содержимое файла?
файл где нибудь сохраняется?
0
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 17:06  [ТС] 3
в базе есть. Отправляю этой же формой.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:09 4
вы передаете файл,
вам нужно обработать сохранение передаваемого файла,
сохранив его на диск записать в базу путь к файлу, тогда он выведется
0
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 17:12  [ТС] 5
мне нужно, чтобы сам файл сохранился в базе, а не его путь. И его вывести.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:15 6
а поле foto в базе в каком формате?
оно поддерживает сохранение не ограниченного объема данных?
0
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 17:18  [ТС] 7
В формате blom. Там есть ограничения, но не помню какие.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:18 8
в любом случае, в данном варианте в базу файл не попадает
0
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 17:19  [ТС] 9
Почему тогда в phpmyadminе появляется запись и размер?
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:23 10
при отправке формы, файл временно сохраняется на диске во директорию /tmp
вам нужно его пересохранить в свою директорию и записать путь в базу, после чего вывести
если вы хотите целиком файл засунуть в мускул,
вам нужно его открыть, считать данные, внести данные в мускул.
читать файл из мускула нужно в отдельном файле, задавать ему header гласящий что это картинка, и подсовывать данные в тег <img

Добавлено через 1 минуту
вы могли бы привести данные, которые вам выводит пыхадмин при добавлении поля?
0
109 / 100 / 12
Регистрация: 01.05.2013
Сообщений: 603
27.05.2014, 17:23 11
имхо изображение надо не в базе хранить а в специальной папке.
А в базе только адрес на него.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:27 12
ну не хочет он путь сохранять, он весь файл в базу закидывать хочет
0
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 17:30  [ТС] 13
Вот что вывод phpmyadmin. С путями конечно легче.
0
Миниатюры
Вывод изображения из базы данных MySQL  
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:32 14
сомневаюсь что вы передаете файл картинки размером в 5 байт
0
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 17:34  [ТС] 15
Да, они весят гораздо больше.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 17:42 16
что бы найти ваш файл вам нужно вставить
PHP
1
2
3
4
5
6
7
8
        switch ($operation) {                                                //проверка, какая кнопка была нажата
 
            case 'Загрузить фото':
 
                $foto = $_POST['image'];
//                    СОХРАНЕНИЕ ЗАГРУЖЕННОГО ФАЙЛА
                echo print_r($_FILES);
//                    СОХРАНЕНИЕ ЗАГРУЖЕННОГО ФАЙЛА
Добавлено через 3 минуты
структура переменной $_FILES немного отличается при передаче одного файла или нескольких
во всяком случае там есть путь к временному файлу, оригинальное имя, расшриние, mime тип и размер,
вам нужно изучить структуру, выбрать нужные данные и сохранить их.
будет правильнее, если временный файл скопировать в отдельную директорию, а не загонять в базу

Добавлено через 4 минуты
и советовал бы вам не заходить в базу под рутом,
создайте пользователя для вашей базы и заходите под ним
1
109 / 100 / 12
Регистрация: 01.05.2013
Сообщений: 603
27.05.2014, 17:49 17
и советовал бы вам не заходить в базу под рутом,
создайте пользователя для вашей базы и заходите под ним
А вот тут не согласен.

база под "рутом" у себя на локальной машине это вполне нормально.

Создавать пользователя нужно только когда уже сайт работает на реальном хостиге.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 18:35 18
Лучший ответ Сообщение было отмечено Daxwel как решение

Решение

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<HTML><head><title>stud</title></head>
    <meta header="Content-type: image/*">
    <?  echo ' <form enctype="multipart/form-data"  action="index.php" method="post" >'?>
    <? //echo ' <form enctype="multipart/form-data"  action="img_mysql.php" method="post" >'?>
 
        <br>
 
        <?
        $dbhost = "localhost";              //имя сервера
        $username = "root";  //имя пользователя базы
        $dbpass = "";      // пароль базы
        $dbname = "student"; //наименование источника данных с описанием базы данных
 
//create table `img_student`(
//  `fid` int(10) unsigned NOT NULL AUTO_INCREMENT,
//  `foto` blob,
//  PRIMARY KEY (`fid`)
//)ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
if($test = 0){
        $dbhost = "localhost";              //имя сервера
        $username = "img_student";  //имя пользователя базы
        $dbpass = "";      // пароль базы
        $dbname = "db_an"; //наименование источника данных с описанием базы данных
}
        $operation = $_POST['operation'];
        $link = mysql_connect($dbhost, $username, $dbpass);    //связь с базой данных
        if (!$link)
            exit("Ошибка при подключении к БД");    //ошибка при подключении базы
        $rezult = mysql_select_db($dbname, $link);
        $tab_name = 'image';
        $tab_name = 'img_student';
        $zapros = "SELECT foto FROM image "; //запрос на поиск
if($test)        $zapros = "SELECT foto FROM ".$tab_name." "; //запрос на поиск
        $rezult = mysql_query($zapros);                                   //выполнение запроса
        if (!$rezult)
            exit(":" .__LINE__. " Ошибка при выполнении запроса" . mysql_error());
 
 
 
        switch ($operation) {                                                //проверка, какая кнопка была нажата
 
            case 'Загрузить фото':
 
                $foto = $_POST['image'];
//                    СОХРАНЕНИЕ ЗАГРУЖЕННОГО ФАЙЛА
                echo '<pre/>';
                echo print_r($_POST);
                echo print_r($_FILES);
/*
 * Array
(
    [image] => Array
        (
            [name] => 0new_.jpg
            [type] => image/jpeg
            [tmp_name] => Z:\tmp\phpFB4.tmp
            [error] => 0
            [size] => 9403
        )
 
)
 */
                if(!is_dir('img'))mkdir('img');// создаем директорию сохраняемых файлов
                $fname = $_FILES['image']['name'];
                $fsize = $_FILES['image']['size'];
                if(copy($_FILES['image']['tmp_name'] , 'img/'.$fname)){
                    $foto = 'img/'.$fname;
                    
                    $zapros1 = "INSERT INTO image SET   foto='$foto'"; //запрос на поиск
                    if($test) $zapros1 = "INSERT INTO ".$tab_name." SET   foto='$foto'"; //запрос на поиск
                    $rezult1 = mysql_query($zapros1);                                   //выполнение запроса
                    echo '<br/> загружен файл '.$fname;
                    echo '<br/> размер файла '.$fsize;                
                    echo '<br/> сохранен в директорию '.$foto;
                }else{echo '<br/> файл не сохранился line:'.__LINE__;}
//                    СОХРАНЕНИЕ ЗАГРУЖЕННОГО ФАЙЛА
 
                if (!$rezult1)
                    exit("line:" .__LINE__." Ошибка при выполнении запроса" . mysql_error());
                echo("<br/>Запись добавлена");
 
                break;
 
 
 
                break; // выход из оператора switch
        } //конец оператора switch
 
 
 
        $zapros1 = "SELECT foto FROM image "; //запрос на поиск
        if($test)$zapros1 = "SELECT foto FROM ".$tab_name." "; //запрос на поиск
        $rezult1 = mysql_query($zapros1);
        $i = 1;
        if($rezult1)
        while ($row = mysql_fetch_array($rezult1)) { //цикл чтения записей запроса
            $foto1[$i] = $row[foto];
 
            $maxnum = $i;
            $i++;
            echo("<br> $foto1[$i]<br>");
        }
 
 
        mysql_close($link); //закрытие базы данных
 
 
        for ($i = 1; $i < $maxnum + 1; $i++) {
            echo "<table>
<tr>
<td>
<td/>
<td>
 
<img src='$foto1[$i]' alt='' />
</td>
</tr>
</table>";
        }
 
        echo "<table>
<tr>
Изображение: <input type='file' name='image' />
<input type='submit' name='operation'  value='Загрузить фото' />
</td>
</tr>
</table>";
 
        echo("    <br>");
        ?>
 
    </form>
</body>
</HTML>
Добавлено через 2 минуты
у вас несколько ошибок,
основаная - это не правильно объявленная форма,
изза этого файл не передавался вообще.
нужно:
HTML5
1
<form enctype="multipart/form-data"  action="index.php" method="post" >
Добавлено через 4 минуты
здесь объявляется форма с указанием ее типа: enctype="multipart/form-data"
который говорит что в форме будет передаваться файл
переданный файл сохраняется в созданную папку img
в базу пишется путь к файлу
в теге img в поле src вписывается путь к файлу из базы
1
5 / 5 / 2
Регистрация: 20.01.2013
Сообщений: 66
27.05.2014, 18:48  [ТС] 19
Nick007, Спасибо большое. Из-за русских названий тоже не отображается изображение только что заметил.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 437
27.05.2014, 18:51 20
изза пробелов тоже не будет отображаться
попробуйте переименовывать файлы,
например дать одно имя на все файлы с добавлением индекса
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2014, 18:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывод необходимых данных из базы данных MySQL
Всем привет. Подскажите как проще всего реализовать вывод необходимых данных из бд, проблема в...

Вывод таблицы с информацией из базы данных MySQL
Здравствуйте, имеется таблица в базе данных с подобным содержанием, информацию из которой нужно...

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

Запрос из базы данных mysql на вывод части текста
Привет Всем. Есть таблица в БД id, name, text. В text помещён текст: '12 212 5 5842 84 88 42'...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.