Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.05.2015, 16:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Sn9,
Странные у вас однако запрос - суть вопроса темы, это обновление содержимого на клиенте в случае изменения значения на сервере, а запрос же просто делает выборку всех записей.
Ответить с цитированием
  #12 (permalink)  
Старый 07.05.2015, 17:01
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение
Sn9,
Странные у вас однако запрос - суть вопроса темы, это обновление содержимого на клиенте в случае изменения значения на сервере, а запрос же просто делает выборку всех записей.
Просто по мере ответов которые давались уже немного доходить начало.
Теперь просто при изменении картинки в БД всё остальное обновляет, а её - нет. Так что можно сказать что суть вопроса осталась актуальной
Ответить с цитированием
  #13 (permalink)  
Старый 07.05.2015, 19:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

header("Content-type: image/*"); - это не заголовок для изображения. При передаче такого заголовка браузер будет предлагать скачать неизвестный тип. Не зная истинного типа изображения, можно указывать тип как image/jpg.

Но у вас Ajax запрос, а не запрос браузера на получение изображения, и нужно получить бинарные данные, и таким образом как это вы делаете не получится. Это более сложный процесс. Но можно поступить проще - возвращать клиенту не $image['im'], base64_encode($image['im']), а на клиенте присваивать это значение src изображения, например:
$('<img src="data:image/jpg;base64,'+im+'" >').appendTo('body');

где im, это и есть возвращенное сервером изображение кодированное в base64.

Но если получать таким образом содержимое изображений, то в
<img src="run.php?id=2" alt="" width="200px"/><br>
на странице логики нет. Как и нет логики держать при таком запросе изображения в базе, перекладывая на плечи SQL работу, которую бы браузер выполнил сам.
Если BLOB данные изображений большие, то base64 это будет почти в три раза больший объем. Может стоит задуматься над тем, если ли необходимость грузить изображения в базу, так ли это критично в вашем случае?
Ответить с цитированием
  #14 (permalink)  
Старый 07.05.2015, 19:24
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение
header("Content-type: image/*"); - это не заголовок для изображения. При передаче такого заголовка браузер будет предлагать скачать неизвестный тип. Не зная истинного типа изображения, можно указывать тип как image/jpg.

Но у вас Ajax запрос, а не запрос браузера на получение изображения, и нужно получить бинарные данные, и таким образом как это вы делаете не получится. Это более сложный процесс. Но можно поступить проще - возвращать клиенту не $image['im'], base64_encode($image['im']), а на клиенте присваивать это значение src изображения, например:
$('<img src="data:image/jpg;base64,'+im+'" >').appendTo('body');

где im, это и есть возвращенное сервером изображение кодированное в base64.

Но если получать таким образом содержимое изображений, то в
<img src="run.php?id=2" alt="" width="200px"/><br>
на странице логики нет. Как и нет логики держать при таком запросе изображения в базе, перекладывая на плечи SQL работу, которую бы браузер выполнил сам.
Если BLOB данные изображений большие, то base64 это будет почти в три раза больший объем. Может стоит задуматься над тем, если ли необходимость грузить изображения в базу, так ли это критично в вашем случае?
Спасибо за такой обширный ответ
Подскажите тогда как реализовать если, к примеру, изображения будут храниться на сервере? Ведь опять же нужно будет использовать src, который ajax`ом не будет нормально обновлять?
Ответить с цитированием
  #15 (permalink)  
Старый 07.05.2015, 19:38
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение
Если BLOB данные изображений большие, то base64 это будет почти в три раза больший объем. Может стоит задуматься над тем, если ли необходимость грузить изображения в базу, так ли это критично в вашем случае?
Ну а если всё таки продолжить извращаться и нагружать сервер, то правильно ли я реализую?
Просто в JS вообще не соображаю, а задача стоит именно LONGBLOB выгружать
<?
        $query = "SELECT * FROM $tbl_name WHERE checked = '1'"; //вывод всех отмеченых камер
        $result = $result = mysql_query($query) or die(mysql_error()); ?>
        <? while ($show = mysql_fetch_array($result)): ?>
                    Камера номер: <?= $show['id'] ?><br>
                    Температура: <?= $show['temperature'] ?> C <br>
                    Источник изображения: <?= $show['host'] ?><br>
                    Формат изображения в пикселях: <?= $show['formatImage'] ?><br>
                    Время снятия изображения: <?= $show['timeRemove'] ?><br>
                    Время занесения снимка в базу в миллисекундах: <?= $show['timeRecordMillisec'] ?><br>
                    Время занесения снимка в базу в нормальном формате: <?= $show['timeRecord'] ?><br>

               <script>
                   $('<img src="data:image/jpg;base64,'+im+'" >').appendTo('body');
               </script>
                
        <? endwhile; ?>
Ответить с цитированием
  #16 (permalink)  
Старый 07.05.2015, 21:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<img src="run.php?id=2" alt="" width="200px"/>
По этому адресу php-скриптом и нужно отдавать содержимое файлов - получать из базы, передавать заголовок, ну и сам собственно вывод. Ajax для этого не нужен.

Даже LONGBLOB, не хило, и для чего?
Ответить с цитированием
  #17 (permalink)  
Старый 07.05.2015, 21:23
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение

Даже LONGBLOB, не хило, и для чего?
Ну если в двух словах, то есть сайт, связанный с БД, в котором находятся изображения из шахты(LONGBLOB), время разное(занесения в разных форматах)
Вот на этом сайте должны выводиться изображения без перезагрузки страницы и инфа.
Всё это уже как понятно обновляется в базе данных
Просто изначально была задача написать средствами PHP,CSS
Но как обычно бывает, во время работы новые условия (!обновление информации без перезагрузки!) добавляются, а сроки те же(
Ответить с цитированием
  #18 (permalink)  
Старый 07.05.2015, 22:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Я не спрашиваю о задаче, я спрашиваю зачем файлы хранить в базе, а не в каталоге, причину этого назвать можете? LONGBLOB это 2 в степени 32, это какие же изображения у вас в базе хранятся?
Ответить с цитированием
  #19 (permalink)  
Старый 07.05.2015, 22:18
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение
LONGBLOB это 2 в степени 32, это какие же изображения у вас в базе хранятся?
А разве поменяется метод решения в зависимости от BLOB или LONGBLOB?
Такую БД дали с такой и работаю
Ответить с цитированием
  #20 (permalink)  
Старый 07.05.2015, 22:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Размер имеет значение, это же насколько большие изображения, что требуется такой размер поля. Ну накачали вы в базу изображений, ну раздули ее в размерах, и что дальше?

Изображения в базе хранят в том случае, если в этом есть необходимость, например постоянно изменяющиеся. Но чтобы загонять в базу изображения больших размеров, ну так это какие причины для этого нужно иметь, даже и не представляю.

По уму, так выгрузите их из базы в каталоги, и отдавайте их браузеру по прямой ссылке. В базе же можно хранить только признак наличия изображения, комментарии к нему, размеры при необходимости. Имя изображения в каталоге связать и ID записи. Изменение изображения при этом, без перезагрузки страницы, но без изменения имени файла, это подстановка к имени файла случайного числа как параметра запроса, а в случае изменения имени указания нового имени.

И не грузите базу лишним, пользы от этого нет ни какой, кроме дополнительной нагрузки.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление select без перезагрузки страницы Devsanterr Javascript под браузер 1 01.09.2014 09:16
не вызывается функция при изменении option soft4you Общие вопросы Javascript 1 23.07.2014 17:41
mod_rewrite без перезагрузки light Общие вопросы Javascript 1 15.04.2014 13:59
переключение страниц без перезагрузки VEGA jQuery 13 07.03.2013 13:52
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06