Отображение BLOB-файлов в PHP-скрипте

0

Это мой PHP script, который отображает расписание радиостанций:

    <div class="divider"></div>
    <div class="main" style="width:552px;">
        <img src="$image" width=115 height=60>
        <div class="time">$airtime</div>
        <div class="show"><h3><a href="$link><b>$presenter</b></a></h3>
            <p>$showdesc</p></div>
        <div class="footer"></div>
    </div>
    </div>
                <div class="footer"></div>
                <div class="bottom"></div>
            </div>

Значения со знаком доллара представляют имена полей в моей базе данных, которые являются радиоприемниками.

Как я могу заставить это работать как PHP скрипт и отображать значения из базы данных? Все значения в полях хранятся в формате TEXT, кроме поля изображение, которое хранится в формате BLOB.

Airtime хранится в отдельной базе данных под названием radioschedule, которая имеет все 4 поля ib, и я собираюсь связать их вместе с помощью некоторых реляционных средств.

Какой лучший способ заставить его отображать как выше, особенно часть BLOB?

Теги:
blob

3 ответа

4

Что вы хотите сделать, это настроить show_image.php script, Example

show_image.php

<?php
$id = (isset($_GET['blid']) && is_numeric($_GET['blid'])) (int)$_GET['blid'] : false;

if($id)
{
    if(false !==($res = mysql_query('SELECT blob_data FROM table WHERE blob_id = ' . $id))
    {
        $data = mysql_fetch_assoc($res);
        header("Content-type: image/jpg"); //Send the content Type here.
        print $data['blob_data'];
        exit;
    }
}
?>

Затем в ваших html файлах вы сделаете следующее.

<div class="divider"></div>
<div class="main" style="width:552px;">

    <img src="show_image.php?id=<?php echo (int)$id?>" width=115 height=60>

    <div class="time">$airtime</div>
    <div class="show">
        <h3><a href="$link><b>$presenter</b></a></h3>
        <p>$showdesc</p></div>
        <div class="footer"></div>
    </div>
</div>
<div class="footer"></div>
<div class="bottom"></div>

Что примерно так, как это делается, другой указатель - это когда вы выбираете свои данные на главной странице, вам не следует выбирать данные blob, так как это замедлит ваше приложение, а show_image.php может потребовать больше работы в качестве своих целей только

Мир.

2

Вы можете записать изображение, сохраненное в блоке в базу данных, в файл. Затем вы можете использовать URL-адрес в качестве источника изображения.

Предполагая, что $presenter не содержит в нем зарезервированных символов файла /url, а $image хранится как точный двоичный jpg (или png или gif и т.д.), вы можете сделать:

<?php
    if($fh = fopen("/webroot/images/{$presenter}.jpg", "wb")) {
        fwrite($fh, $image) ;
        fclose($fh) ;
    }
?>
<img src="/images/<? echo $presenter ; ?>.jpg" width="115" height="60">

Я бы предположил, что вы можете каким-то образом кэшировать файл, поэтому его не нужно записывать для каждой загрузки страницы.

  • 0
    Это не совсем кеширование, когда он запускается каждый раз, и, что сказать, файл изображения существует, ваш код несколько подвержен ошибкам.
  • 0
    Действительно - именно поэтому я рекомендовал добавить кеширование в своем ответе.
0

Вы спрашиваете, как поместить эти значения в ваш файл?

Что касается текстовых, вы можете просто использовать

<?=$airtime?> 

или если ваша настройка сервера не поддерживает короткие теги, просто используйте

<?php echo $airtime?>

Я бы просто сделал это с вашим php.

Пример:

<div class="time"><?=$airtime?></div>

Что касается BLOB, я бы посоветовал не делать этого и просто хранить изображение на вашем сервере и сохранять имя файла изображения в db. НО, если вы намерены это сделать, я думаю, что единственный способ сделать это - создать отдельный файл script, который возвращает файл изображения. Что-то вроде этого:

<?php 
// Do all your db stuff here, grab the blob file. Probably from a $_GET paramater
$image = $row['image'];
header("Content-type: image/jpeg"); // or gif, etc...
echo $image;
die();
?>

Затем в другом файле вы сделаете что-то вроде:

<img src="imagescript.php?person_id=<?=$person_id?>" width=115 height=60>
  • 0
    Я спрашиваю о том, как создать скрипт, который будет использоваться во включаемом файле, и использовать ifelse, если в моей базе данных ничего не выбрано. Соединение двух таблиц - это проблема. Будет ли это вызывать реляционную ошибку, отмеченную знаком хеша, который у меня был раньше при создании реляционных БД?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню