2010-09-14 122 views
0

這是我的PHP腳本,顯示廣播電臺的時間表:顯示BLOB文件

<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> 

與美元符號的值代表我的數據庫,這是radiopresenters字段名稱。

我如何獲得這個作爲PHP腳本工作,並顯示數據庫中的值? 除了存儲爲BLOB格式的圖片字段以外,字段中的所有值均以TEXT格式存儲。

通話時間存儲在一個單獨的數據庫中,名爲radioschedule它具有所有4個字段ib,並且我打算通過一些關係手段將它們連接在一起。

讓上面顯示的最好方法是什麼,特別是BLOB部分?

回答

0

你問如何將這些值放入你的文件?

至於文字的人,你可以只使用

<?=$airtime?> 

,或者如果你的服務器安裝程序不支持短標籤只使用

<?php echo $airtime?> 

我只想做這個在線與你的PHP。

例子:

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

對於BLOB,我會建議不這樣做,只是存儲在服務器上的圖像,並在數據庫中存儲的圖像文件的名稱。但如果你打算這樣做,我認爲你可以做到這一點的唯一方法是通過一個單獨的腳本返回一個圖像文件。事情是這樣的:

<?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。將這兩個表連接在一起是一個問題 - 它會導致關係錯誤,這是由我在做關係數據庫之前得到的散列符號標記的? – whitstone86 2010-09-15 12:03:22

4

你想要做的是建立一個show_image.php腳本什麼,例

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

您可以將存儲爲blob的圖像寫入數據庫到文件中。然後,您可以使用網址作爲圖像源。

假設$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

這是不正確的緩存時,它每次運行,什麼是說圖像文件存在,你的代碼有點容易出錯。 – RobertPitt 2010-09-14 22:25:41

+0

的確 - 爲什麼我建議在我的答案中添加緩存。 – Gus 2010-09-14 22:38:01