-1

我想以与 Twitter 相同的方式在背景上显示图像(通过使用 CSS 重复),但问题是我从 MySQL 数据库中检索它,而 CSS 无法处理src背景上的标签。

如何从 MySQL 数据库中检索图像(我知道如何通过从数据库中检索来显示图像,但在这里我想以不同的方式显示它),即将图像显示为主体上的背景,并且图像应该像使用 CSSrepeat语句一样重复. 就像在 twitter.com 上一样。

我的代码在 PHP 和 MySQL 中。我需要获取此图像的 URL,因为该图像是从数据库中检索的。

4

2 回答 2

1

您可以分两步执行此操作。

创建一个 PHP 脚本,该脚本接受参数以通过唯一 ID 进行标识,该 ID 具有要显示的图像。该脚本将从数据库中提取图像并发送具有适当 mime 类型的代码,以便浏览器理解。这样,将一个类应用到容器(或 body 标签)并显示背景,如下所示:

.backgroundTile { background-image: url('/path/to/php-image-render-script.php?image_id=1212') !important; background-repeat: repeat; }

示例 PHP 脚本(来源- http://cookbooks.adobe.com/post_Display_an_image_stored_in_a_database_PHP -16637.html ):

<?php require_once('Connections/testConn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_getImage = "-1";
if (isset($_GET['image_id'])) {
  $colname_getImage = $_GET['image_id'];
}
mysql_select_db($database_testConn, $testConn);
$query_getImage = sprintf("SELECT mimetype, image FROM images WHERE image_id = %s", GetSQLValueString($colname_getImage, "int"));
$getImage = mysql_query($query_getImage, $testConn) or die(mysql_error());
$row_getImage = mysql_fetch_assoc($getImage);
$totalRows_getImage = mysql_num_rows($getImage);
header('Content-type: ' . $row_getImage['mimetype']);
echo $row_getImage['image'];
mysql_free_result($getImage);
?>
于 2013-01-01T09:41:52.630 回答
1

您不能重复<img src="#" />,因为您需要在 PHP 文档中使用 CSS,您可以这样做

<style>
body {
   background-image: url('<?php echo $whatever; ?>') !important;
   background-repeat: repeat;
}
</style>

你可以做的是

制作带有.php扩展名的样式表。

<link rel='stylesheet' type='text/css' href='css/stylesheet.php' />

在页面顶部提到这一点

<?php
    header("Content-type: text/css; charset: UTF-8");
?>

现在您可以相应地设置变量

<?php
    header("Content-type: text/css; charset: UTF-8");
    $background = "$imgsrc"; /* Retrieve your image here */

    /*Now simply use the $background variable for setting the body background */
?>
于 2013-01-01T09:36:27.877 回答