Это мой 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?
Что вы хотите сделать, это настроить 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 может потребовать больше работы в качестве своих целей только
Мир.
Вы можете записать изображение, сохраненное в блоке в базу данных, в файл. Затем вы можете использовать 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">
Я бы предположил, что вы можете каким-то образом кэшировать файл, поэтому его не нужно записывать для каждой загрузки страницы.
Вы спрашиваете, как поместить эти значения в ваш файл?
Что касается текстовых, вы можете просто использовать
<?=$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>