在php中显示图像和标签

时间:2012-03-09 20:00:49

标签: php

我正在检索一个包含title,isbn和image等属性的图书对象数组。当我希望仅使用for循环显示标签时,它显示所有条目。但是当我尝试显示图像时,它只显示一个。此外,当我尝试同时显示标题和图像时,它表示可以

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

5 个答案:

答案 0 :(得分:0)

尝试添加

ob_start()

在文件的开头

编辑:此外,只修改标题信息一次,在ob_start()

之后,只需在文件开始时调用标题函数一次

答案 1 :(得分:0)

只能在发送任何输出之前发送标头。您正在回显标题,然后尝试设置标题。

答案 2 :(得分:0)

“无法修改标题信息...”问题在这里:

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

您的PHP脚本正在输出HTML。您无法更改输出中间流的内容类型。相反,您应该输出指向图像位置的<img>标记。

基于评论数据的更新:

如果您需要将图像作为数据库中的blob提供,则需要创建单独的脚本来获取图像。首先修改此脚本以引用新脚本,方法是创建一个<img>标记,其src属性包含图像获取脚本的路径和图像ID:

<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()语句,就像您在原始脚本中使用的语句一样

  4. header()行后,只输出blob,您的图像就会显示出来。

答案 3 :(得分: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;

答案 4 :(得分:0)

如果你真的想要理解这个警告,并且希望将来能够更多地使用PHP,那么你应该开始学习HTTP protocol的工作原理。很有趣,你会在:)之后看得更清楚。

(这只是一般性建议,而不是您问题的确切答案)