Чем лучше отображать картинки из BLOB поля

191
16 марта 2018, 14:40

В общем в данный момент на чистом php читаются данные из базы данных и генерируется html страничка с таблицей. В таблице есть BLOB поле с картинкой для каждой строки, она будет отображаться в всплывающей подсказке при движении мыши над таблицей и на каждой строке меняться. Естественно все грузить не вариант думаю, надо подгружать по мере надобности? С помощью чего это лучше осуществить? (я так понимаю просто html тут уже не хватит, может ли с этим справится js или какие технологии используются для таких динамических целей?) И к таблице хотелось бы сделать, в будующем, фильтр по всем полям...

PS: Поправьте вопрос, я не знаю как сформулировать его точнее

Answer 1

Пишете какой-то такой скрипт

// image.php
function process(): bool {
  $id = $_GET['id'] ?? '';
  if (!is_numeric($id))
    return false;
  $sql = <<<'SQL'
    SELECT
      ph.`photo`,
      typ.`name`
    FROM
      `photos` ph
      LEFT JOIN `mime_types` typ ON (
        ph.`mime_type_id` = typ.`id`
      )
    WHERE
      ph.`id` = ?
SQL
    ;
  }
  $db = new db();
  $stmt = $db->prepare($sql);
  $stmt->bind_param('i', $id);
  $photo = '';
  $mime = '';
  $stmt->bind_result($photo, $mime);
  $stmt->execute();
  if (!$stmt->fetch())
    return false;
  header('Cache-Control: public');
  header(sprintf('Content-type: %s', $mime));
  header('Content-Transfer-Encoding: binary');
  header('Content-Length: ' . strlen($photo));
  echo $photo;
  return true;
}
if (!process()) 
  header($_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request');

При движении мышей показываете

<img src="image.php?id=XXX" />

где вместо XXX id нужной Вам картинки.

Само собой показываете не сразу при движении мыши, а с задержкой, на тот случай, если пользователь передумает и уберет мышь

READ ALSO
Хэширование паролей в MySQL

Хэширование паролей в MySQL

Всем привет!Имеется база данных MySQLВ ней хранится пароль, захешированный через password_hash

162
Как прочитать и вывести каждую строку из файла? C++

Как прочитать и вывести каждую строку из файла? C++

Как прочитать и вывести каждую строку из файла? Имеется такой код:

202
C++, консольное приложение, защита от неправильного ввода

C++, консольное приложение, защита от неправильного ввода

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

224