2011-09-24 58 views
0

我正在制作一个人们可以发布帖子的页面。然后所有这些帖子都显示在24个单元格的表格中。我可以显示过去24个帖子没有问题,但现在我不知道如何显示之前的帖子组。我如何修复我的代码来做到这一点?其实,我有这样的:与mysql_fetch_assoc不合规划?

(我删除线,以方便阅读)

$sql = "SELECT 
    topics.topic_id, 
    topics.topic_subject 
ORDER BY 
    topics.topic_id DESC"; 

// ---check everything is fine---- // 

function retrieve_info($result) 
{ 
if($row = mysql_fetch_assoc($result)) 
    {echo $topic_if; echo $topic_subject; //and what I want in every cell 
    } 
} 

<table width="100%" height="751" > 
<tr><td><?php retrieve_info($result);?></td> 
    <td><?php retrieve_info($result);?></td> 
    <td><?php retrieve_info($result);?></td> 
    <td><?php retrieve_info($result);?></td></tr> 
<!-- repeat a few more times :-) --> 
</table> 

不过,我觉得,通过改变if语句之前,变量$行与一些会改变输出,但我仍然可以在屏幕上看到相同的数据。我应该怎么做才能显示下一组帖子? 谢谢!

回答

0

在某些情况下,当您有数百或数千条记录时,您希望对结果进行分页,而不是从表中选择所有记录。

要做到这一点,你每运行24一个查询记录,你的SQL会更喜欢这样的:

$sql = "SELECT 
    topics.topic_id, 
    topics.topic_subject 
ORDER BY 
    topics.topic_id DESC 
    LIMIT 0, 24 
"; 

,并在接下来的24,

LIMIT 24, 24 

然后

LIMIT 48, 24 

等等。

然后,您可以使用下一个/上一个按钮来点击哪个会刷新页面并显示下一个24,或者您将通过AJAX请求获得下一个结果,并通过DOM追加下一个24。

这表明必须采取稍微不同的方法,然后从每个表单元调用相同的函数。

更像是根据您所在的页码获取相关的24个结果,然后遍历结果数组并打印出其中包含值的表代码。根据循环的迭代器是否可以被4整除(看起来你的网格是4x6),你可以为新行打印新的标签,以及类似的东西。

在php和mysql中搜索分页以了解这一切如何融合在一起。

+0

这回答了我的下一个问题。是否有必要让所有的帖子信息只显示24?我要去找这个男孩,看看会出现什么。感谢Codercake !!! – cbarg

0
function retrieve_info($result) 
{ 
    while($row = mysql_fetch_assoc($result)) 
    { 
    $topic_id = htmlspecialchars($row['topic_id']); 
    $topic_subject = htmlspecialchars($row['topic_subject']); 
    echo '<td>'; 
    echo $topic_if; 
    echo $topic_subject; //and what I want in every cell 
    echo '</td>'; 
    } 
} 
+0

嗨Johan!我已经完成了所有工作。一切都在运行。但我该如何看待下一组帖子?比方说,如果我正在观看帖子125到101,我想从帖子100看到帖子76.我想我必须添加一个变量或以某种方式操纵指针。 – cbarg

+0

@cbarg,请参阅:http://www.php.net/manual/en/function.mysql-data-seek.php请注意,这是一个简单但速度较慢的方法,更快的方法是将内容提取一次并将其存储一个数组。 – Johan