2011-05-02 21 views
2

我在phpmyadmin中有一个存储'id'(auto inc),'title'和'date'的表。PHP数组中的数据库

我有一个网页,其中显示10个最新项目(我简单地按ID排序)。 在该页上我打印标题和日期。我的愿望是也显示已发布项目的编号,所以第一个发布的项目是1,第二个是2等。我不能简单地从数据库中打印ID,因为如果我删除一行,数字不是直的了。

我的想法是将所有的数据放在一个数组中,但我不知道最好的方法是做什么以及如何打印该项目编号。例如,当我想要显示第54个项目时,我可以轻松打印$ items [54] [id]或其他东西,它会显示数字54并显示我打印$ items [54] [title]的标题。

我不知道是否有简单的方法,加上数组总是从0开始,但我的项目必须在1

除了这个页面显示10个最新的项目启动,还有另外一个页面,它从URL中获取该项目的标题。我将如何搜索数组中的标题并以相同的方式显示数据,但仅限于请求的标题?

在此先感谢!

回答

1
"SELECT COUNT(id) as cnt FROM mytable"; 

您可以选择所有数据库条目的计数。

,然后将其分配给你的迭代

$i = $row['cnt']; // this will hold the ammount of records e.g. 21 

// other query 

while($row = mysql_fetch_assoc($result)) { 
echo $i; 

$i--; // this will decrement on every iteration 21, 20 , 19, and so on. 
} 
+0

适用于最新的10个项目,但如果我发布了30个项目会如何。它会显示项目21到30,对不对?所以它也必须显示每个发布项目的数量。另外请查看下面你的回答的评论,因为当我搜索一个特定的标题并从URL中获得它时,我仍然不知道这是我发布的第4或第88项。 – 45808 2011-05-02 12:38:41

+0

哦,你的意思是分页?我会为此添加一些示例。 – Headshota 2011-05-02 12:40:54

+0

没有不是分页:)。将其视为博客项目。在一页上,我展示了最新的10个博客文章。假设我的表格中有20个项目,我添加了另一个项目,它将是第21个发布的项目。对?因此,当我显示10个最新商品时,它会显示商品12到21.它必须在每个商品上显示该数字。即使我搜索第21项的标题,它也必须显示21. – 45808 2011-05-02 12:49:42

0

我不知道如何准确地打印出您的数据,但我认为那里有一个循环。只需设置一个计数器,每行增加一个并打印其值。

至于标题搜索,您必须运行WHERE title = '$title'条件的另一个查询,但要小心SQL injection

+0

但是,确切地说,但是这种方式我得到的数据,但我不知道它是什么样的张贴的项目。假设所要求的标题是我发布的第14个项目,那么脚本现在将如何成为第14个发布的标题? – 45808 2011-05-02 12:36:44

+0

哦,你只通过最后10项列表搜索?你可以使用相同的循环,但只打印'如果来自URL的DB == title的标题,同时保持计数器运行。对于大型查询来说不是最好的性能,但它应该可以用于10个项目。 – Vache 2011-05-02 12:42:18

1

第一关。我会在数据库中添加一个时间戳字段,然后按顺序排列,因为它感觉总体上更加可靠,并为您提供可能稍后便于使用的其他详细信息。

要创建多维数组我会做这样的事情:

$result = mysql_query(...);
$items = array();
while($item = mysql_fetch_assoc($result)) {
$items[] = $item;
}

现在$项目[12]例如会给你的项目编号13(因为它是0索引)。

最后,只选择具有特定标题的项目,我会用一个查询,其中包括一个WHERE子句,像

"SELECT ... FROM ... WHERE title = '".$title."'"

这是非常重要在使用前消毒这个变量尽管查询。

你可以在很多地方阅读关于MySQL的更多信息。一个快速的谷歌搜索给了我:http://www.tutorialspoint.com/mysql/index.htm

+0

当我打印数组的键时,它从0开始为我的第一个项目。我怎样才能从1开始?因为如果有人搜索第一个发布项目的标题,它也可能显示0而不是1. – 45808 2011-05-02 13:05:40

+0

您可以将1添加到它,对不对? – 2011-05-02 13:29:46

1

你应该在开始使用PHP编程之前学习PHP;)阅读并使用PHP手册和一些教程!

至于你的问题,这是一个简单的循环,你想要做的。作为例子的一种方式。

以任何你喜欢的方式从数据库中获取10个最后的项目,下面是一些代码,部分是伪代码。

$markup = ''; 

for ($i=1; $i<=count($items); $i++) 
{ 
    $markup .= 'Item ' . $i . ': ' . $items['date'] . ' - ' . $items['title']; 
    $markup .= '<a href="/path/to/postpage/id/' . $items['id'] . '">read more</a>'; 
    $markup .= PHP_EOL; 
} 

echo $markup;