如何显示MySQL数据库条目的摘录?

时间:2010-05-27 20:54:21

标签: php mysql database

我正在创建一个包含博客部分的网页,目前它在主页上显示整个帖子。我想设置它只显示条目的某个部分,即50个单词。然后,我希望能够设置它,以便在帖子下面有一个更多按钮,链接到帖子ID。我目前使用post.php?=#(#=无论帖子ID是什么)。

这是主页:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Blog Name</title> 
<link rel="stylesheet" href="css/style.css" type="text/css" /> 
<body>
    <div id="upper-bar">
    <div id="bar-content">

    <a href="#">Home</a>
    <a href="#">Archives</a>
    <a href="#">Contact</a>
    <a href="#">About</a>

    <a href="#"><img src="images/twitter.png" id="tweet"></a><a href="#"><img src="images/feed.png" id="feed"></a>
    </div>
    </div>

    <div id="clear">
    </div>


    <div class="main">
    <h1>Blog Name</h1>
    <div class="post-col">
    <?php
    mysql_connect ('localhost', 'root', 'root') ;
    mysql_select_db ('tmlblog');

    $sql = "SELECT * FROM php_blog ORDER BY timestamp DESC LIMIT 5";

    $result = mysql_query($sql) or print ("Can't select entries from table php_blog.<br />" . $sql . "<br />" . mysql_error());

    while($row = mysql_fetch_array($result)) {

        $date = date("l F d Y", $row['timestamp']);

        $title = stripslashes($row['title']);
        $entry = stripslashes($row['entry']);
        $id = $row['id'];

        ?>
         <div id='post-info'><?php echo "<p id='title'><strong><a href=\"post.php?id=". $id . "\">" . $title . "</a></strong></p>"; ?><br /></div>
               <div id="post">
               <?php echo $entry; ?>
               <!--<br /><br />
               Posted on <?php echo $date; ?> !-->
               </p>
               </div>


        </p>
    </div>    

        <?php
    }
    ?>
    </div>
     </div> 
</body> 
</html> 

4 个答案:

答案 0 :(得分:1)

一定是文字吗?很长或很短的单词可能会导致字符数量大不相同。也许你应该做一个字符计数。

如果是这样,您可以使用substr打印部分字符串(将50更改为您想要的任意数量的字符数):

<?php echo htmlspecialchars(substr($entry, 0, 50)) ?>... 
<a href="/post.php?id=<?php echo $id ?>">read more</a>

或者,您可以使用SELECT SUBSTRING

通过SQL选择子字符串

答案 1 :(得分:1)

SELECT SUBSTRING_INDEX(entry, ' ', 51) as entry FROM php_blog;

每个条目最多需要50个单词(假设单词用单个空格分隔)。

答案 2 :(得分:0)

$truncatedEntry = substr($entry, 0, 50) . '...';

// truncate with word-wrapping
$truncatedEntry = substr($entry, 0, strpos(wordwrap($entry, 50), "\n")) . ' ...';

答案 3 :(得分:0)

在您的主页上,查询您的博客文章:

$sql = "SELECT id, title, blog_timestamp, LEFT(blog_contents, 50) AS txt 
        FROM php_blog ORDER BY timestamp DESC LIMIT 5"; 

然后,在处理结果时,修剪到最近的单词并添加链接。