2012-03-09 32 views
-1

我正在檢索具有標題,isbn和圖像等屬性的書籍對象數組。當我希望僅使用for循環顯示標籤時,它將顯示所有條目。但是當我嘗試顯示圖像時,它只顯示一個圖像。另外,當我嘗試顯示標題和圖像時,它說可以在php中顯示圖像以及標籤

Warning: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/BookStore/BooksResult.php:14) in /Applications/XAMPP/xamppfiles/htdocs/BookStore/BooksResult.php on line 15

以下是代碼。

foreach($booksArr as &$book) 
{ 
    $content = $book->Image; 
    $title=$book->s_Title;     
    echo $title; 
    header('Content-type: image/jpg'); 
    { 
     echo $content; 
    } 
} 
+0

你'echo'內容到頁面後,您不能發送頭。 – 2012-03-09 20:03:08

+0

我認爲你正在接近這個錯誤。請向我們展示一個示例輸出和所需的輸出/ – 2012-03-09 20:03:29

+1

嘗試單獨輸出和圖像的請求:generated alt RumpRanger 2012-03-09 20:07:36

回答

0

「無法修改標題信息......」 問題是在這裏:

header('Content-type: image/jpg'); 

你的PHP腳本輸出HTML。您無法更改輸出中流的內容類型。相反,您應輸出指向圖像位置的<img>標記。

更新基於註釋數據:

如果您要爲您的圖片從數據庫斑點,你需要創建一個單獨的腳本來獲取圖像。首先修改這一個與包含路徑圖像取腳本和圖像ID的src屬性創建<img>標籤以引用新的腳本:與唯一標識字段數據

<img src="/path/to/your/new/script.php?id=<?php echo $row_id; ?>" /> 

替代$row_id在你的數據庫中預訂。

接下來,創建新的圖像抓取腳本。它將包含三個要素:

  1. 甲線路從GET請求得到id: $ ID = $ _GET [ 'ID'];

  2. 用於基於ID獲取圖像blob的SQL語句。 (請記住,淨化你的輸入!)

  3. 一個header()聲明就像你在你的原始腳本

使用header()線,只輸出一滴一前一後,你的圖像就會顯示出來。

+0

我在代碼中添加了echo' user1247412 2012-03-09 21:11:43

+0

看起來你試圖嵌套你的PHP語句,試試這個吧:'echo' 2012-03-09 21:13:53

+0

非常感謝George。 – user1247412 2012-03-09 21:16:06

0

嘗試增加

ob_start() 

在文件

編輯的beggining:同樣,只修改標題信息一次,只需調用頭功能一次在文件的beggining,之後ob_start()

+0

但是它不會將內容類型作爲整個數據的圖像嗎? – user1247412 2012-03-09 20:09:55

+0

是的,我認爲你想要的,通常當你想顯示一個圖像,你做一個單獨的PHP文件代表圖像,所以你可以做的事情,如 gosukiwi 2012-03-09 20:14:55

0

只能在發送任何輸出之前發送標頭。您正在回顯標題,然後嘗試設置標題。

+0

是的。如何做到這一點? – user1247412 2012-03-09 20:08:13

+0

你到底在做什麼? – 2012-03-09 20:11:42

+0

我正在嘗試顯示可用的書及其圖像。圖像在mysql中以blob存儲 – user1247412 2012-03-09 20:13:54

0

您正嘗試在一個請求中發送所有照片。 HTML不能像那樣工作。你需要做這樣的事情:

foreach($booksArr as &$book) { 
    $title=$book->s_Title;     
    echo $title; 
    echo '<img src="book_image.php?id=' . $book->id . '" alt="' . $title . '"/>'; 
} 

,然後處理書在一個單獨的要求上book_image.php,在那裏你會打印出相應的標題和內容,是這樣的:

$id = $_GET['id']; 
// get the book by id from db 
header('Content-type: image/jpg'); 
echo $book->Image; 
+0

對於HTML不能正常工作,您當然可以輸出multipl e圖像放在同一頁面上,而不需要將它們分隔成另一個請求。換句話說,你不需要單獨的文件來返回圖像。 – Tadeck 2012-03-09 20:10:55

+0

您可以通過執行一個數據URL在一個請求中完成所有操作,但這是一種先進的技術,它將帶寬增加了33%,顯然不是OP所要做的。這是我知道你可以在同一個請求中獲得HTML和圖像數據的唯一途徑。如果你知道另一個,請詳細說明。 – Amadan 2012-03-09 20:23:29

+0

OP所做的顯然是不正確的,但OP想要達到的目標仍然未知。數據URL有一些缺點,但它們適用於許多不同的事情。在這種情況下,您的解決方案有可能通過'n * 100%'增加請求的數量(其中'n'是圖像的數量,爲了清晰起見添加了百分比),對於數據庫調用也是如此。根據什麼更重要(數據庫調用次數和請求數量或用於表示圖像的傳輸量),解決方案是不同的。但是你的「_HTML不能像那樣工作」仍然不正確。 – Tadeck 2012-03-09 20:58:51

0

如果您真的想要了解此警告,並且您希望將來可以更多地使用PHP,那麼您應該開始瞭解HTTP protocol的工作原理。它的樂趣,你會看到更清楚後:)

(這只是一個一般的意見,而不是確切的回答你的問題)