0

预警:我不擅长 CSS。

您好,我正在制作一个小留言板,其中显示 3 个最近的帖子。我还希望用户选择在一个屏幕上显示多少个帖子,比如 5 个或 10 个帖子。

目前我有它,以便所有帖子都以这种方式打印出来:

while ($i < $d){
// $d is entered by the user to determine how many posts are to be displayed.
    if ($i == $id_Max){
        echo "Reached last known post.";
        break;
    }

    $query2 = $con->prepare(
    "SELECT postName, postPath FROM " . $table .
    " WHERE id=(SELECT MAX(id-".$i.") FROM " . $table . ")"
    );
    $query2->execute();
    $result2 = $query2->fetch();
    $path = $result2["postPath"];
    $file = file_get_contents($path);

    echo "<article class = 'entry'>";

    echo "<section id = 'entryTitle'>";
    echo $result2["postName"] . "<br />";
    echo "</section>";

    echo $file;
    echo "<br />";

    echo "</article>";

    $i++;
}

因此,打印的每个帖子都有entry. 有了这个我给每个帖子一个边框,但我想让它们之间有大约 5px 的空间。我设置了它们position: relativetop: 5px但它只对最顶部的条目生效,并将它们全部从页面顶部向下移动 5px。

本质上,我希望在全球范围内进行一些工作,而不必为每个可能的帖子写出一些东西。#entry1, #entry2...

我并不是真的在寻找如何做这个特定的事情,而是更多我可以从中学到的东西,以应用于未来的事情。

谢谢, - 迈克尔米切尔

(如果我不清楚,请告诉我,我会尝试更好地解释。)

4

2 回答 2

0

我看到这里有几件事出错了。

首先,元素之间的间距通常用边距处理:

/* all .entry elements */
.entry { margin-top: 10px }
/* all but the first .entry elements */
.entry + .entry { margin-top: 10px }

其次,看起来您在不需要时向数据库发出多个请求。您想要的查询如下所示:

SELECT postName, postPath FROM tablename ORDER BY date_added DESC LIMIT ?

这将为您提供可以迭代的顶级条目的列表,并且比发出多个请求要快得多如果您希望返回的条目数是可配置的,请绝对确保您正在清理/转义该值。

于 2012-09-27T23:39:26.930 回答
0

'top' css 属性通常只适用于绝对位置的元素。您将希望入门类具有:

margin-bottom:5px;

或者

margin-top:5px;

我认为您也不需要该position:relative属性来执行此操作。

于 2012-09-27T23:34:43.430 回答