【问题标题】:"Blog Post" show from Mysql Database wtih Image来自 Mysql 数据库的“博客文章”显示与图像
【发布时间】:2012-01-17 12:10:27
【问题描述】:

如何用图片显示我的所有“博客文章”?例子: mysql表:

post_id | user_id | subject | message | image | img_name.

在索引页面中显示我所有带有图像的帖子的 php 代码是什么?我使用了以下代码,但它不显示图像,它只显示数据。我想看到这样的东西:

图片 |消息在这里 图片 |消息在这里 图片 |消息在这里

我用了 3 页

  1. add_post.php(Html 表单)
  2. add_post_process.php(处理add_post.php)
  3. index.php(显示我的所有帖子)

add_post_process.php:

<?php
include "db.php";
@$file = addslashes($_FILES['image']['tmp_name']);
$lastid= mysql_insert_id();
@$img = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$img_name = addslashes($_FILES['image']['name']);
@$img_size = getimagesize($_FILES['image']['tmp_name']);
$upload_path = './blogpostimg/';
$post_id = addslashes($_POST['post_id']);
$user_id = addslashes($_POST['user_id']);
$subject = addslashes($_POST['subject']);
$message = addslashes($_POST['message']);
$cat_id = addslashes($_POST['cat_id']);
$cat_name = addslashes($_POST['cat_name']);
$comment_count = addslashes($_POST['comment_count']);
$ch_img = addslashes($_FILES['image']['name']);
$query = "SELECT img_name FROM blog_post WHERE img_name = '$ch_img';";
$result = mysql_query($query) or die (mysql_error());
if(isset($subject, $message))
{
  $errors = array();
  if(empty($subject) && empty($message) && empty($file))
  {
    $errors[] ='all field required';
  }
  else
  {
    if(empty($subject))
      $errors[] = 'Subejct requried';
    if (empty($message))
      $errors[] = 'message required';
    if(empty($file))
      $errors[] ="SORRY, you have to be upload a image";
    elseif($img_size == FALSE)
    {
      $errors[] ="That's not an image";
    }
    else
    {
      if(mysql_num_rows($result) != 0)
      $errors[] = " You have to change this image name, already exit in our database";
    }
  }
  if(!empty($errors))
  {
    foreach($errors as $error)
    {
      echo "<ul>";
      echo "<strong><font color=red><li>$error</li></font></strong><br/>";
      echo "</ul>";
    }
  }
  else
  {
    if(!move_uploaded_file($_FILES['image']['tmp_name'],$upload_path . $img_name))
    {
      die('File Not Uploading');
    }
    else
    {
      $lastid = mysql_insert_id();
      $query = mysql_query("INSERT INTO blog_post VALUES ('', '',   '$subject',
        '$img','$img_name','$message','$cat_id','$cat_name','',NOW() )");
      if($query)
        echo "Successfully uploaeded your post";
      else
      {
        echo "Something is wrong to Upload";
      }
    }
  }
}
?>

index.php

<?php
include "db/db.php";
$upload_path = "/secure/content/blogpostimg";
$sql= mysql_query("SELECT * FROM blog_post");
while ($rel = mysql_fetch_assoc($sql))
{
  $id = $rel['post_id'];
  $sub = $rel['subject'];
  $imgname = $rel['img_name'];
  $img = $rel ['image'];
  $msg = $rel['message'];
  $date = $rel['date'];
  echo "<h1>". "$sub" ."</h1>". "<br/>";
  echo "$imgname" ."<br/>";
  echo '<img src="$upload_path " />';
  echo "$msg" . "<br/>";
  echo "$date" . "<br/>";
  echo "<hr/>";
  echo "<br/>";
}
?>

mysql的表结构是

post_id(int)
User_id(int)
subject(varchar)
image(blob)
img_name(varchar)
message(text)

【问题讨论】:

标签: php mysql


【解决方案1】:

改变

echo '<img src="$upload_path " />';

echo '<img src="' . $upload_path . '/' . $img . '" />';

这应该可以解决问题..

我现在不知道它在性能方面是否重要.. 但是你为什么使用 blob 而不是 varchar.. 255 个字符的文件名应该足够了。

【讨论】:

  • btw.. 是路径 $upload_path = "/secure/content/blogpostimg";和 $upload_path = './blogpostimg/';相等
  • 嗯,Burrhus,它的显示是这样的 [·ÿI,è„¡qx:ØÃ ŸI¸÷m律?ò!YôzwýŧþÛgþAQèbn»úü¥i'ý©$9¯a¼Òvg ] 不' t 显示图像。我使用了两个列名,一个是“image(Blob)”,另一个是 img_name(varchar)。
  • 啊……抱歉……我的错误……必须转换 blob。 firebirdfaq.org/faq250 -- 如果可能的话,我会适当地将类型更改为 varchar
【解决方案2】:

在您的 index.php 中,您有 &lt;img src="$upload_path" /&gt;src 必须是您图片的 URL,而不是 $upload_path


我刚刚注意到您将图像本身存储在数据库中。如果您将其移动到可公开访问的目录,则无需执行此操作,例如/var/www/images/myimage.jpg

【讨论】:

  • 嗨,middus,感谢您的回复...我使用了此代码... echo '';但它没有显示。
  • 这可能是因为$upload_path 不是 URL,它是您计算机上的目录。因为$img 似乎是一个二进制 blob,而不是文件名。
  • 非常感谢 middus,它正在工作。但它显示的图像太多,所以我改变了我的查询..这是查询.....$sql= mysql_query("SELECT * FROM blog_post WHERE post_id = '$id' ORDER BY post_id DESC");但它显示空白页。 ?
  • 嘿,我终于解决了我的问题,谢谢,非常感谢“middus”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多