小组标题并在下面有数据。 SQL

时间:2011-12-05 19:23:03

标签: php mysql sql

你们中任何一个人都可以把我引向正确的方向。希望你们中的一些人会善良,而不是表现得像你们这个星球上最完美的人类。

这是我的数据库结构 http://snpr.cm/xx03vN.png

我想回显标题,然后在其下方显示相应的page_title。

e.g。

我的个人资料&帐户

  • 东西

东西

  • 页面标题

  • 另一页标题

请问有人帮我检索这些结果吗?谢谢。

2 个答案:

答案 0 :(得分:1)

IMO将链接到另一列中的page_id或者某个东西,它将保存所请求页面的页面ID。所以在这种情况下,所有三列都有一个page_id为1然后你的select语句将根据page_id进行选择,你的php代码将解密在哪里放置header / page_title。你可以考虑使用另一列page_location_id和一个顺序来保存它是否是标题,标题等,并且order by将保持精确显示该行的位置,因为你可以有多个标题和标题。那样你的代码就知道确切地放在哪里了。因为现在您选择的文本可能变得不可靠,如果您更改标题,您将需要确保所有更改。希望这能让你朝着正确的方向前进。

答案 1 :(得分:0)

这是一个解决方案。

<?php
/*
CREATE TABLE `pages` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
  `heading` varchar(128) NOT NULL,
  `page_title` varchar(128) NOT NULL,
  `page_body` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

INSERT INTO `pages` VALUES 
(1,'My Profile & Account','Something','and the body!'),
(2,'Something','The page title','The page body'),
(3,'Something','Another page title','another page body');

*/

$pages = array();

$dbh = new PDO('mysql:host=localhost;dbname=test', 'myuser', 'mypass');
$sth = $dbh->prepare('SELECT heading, page_title FROM pages');
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);                                                                                                                                       

// Group all page_tiles by heading
foreach($data as $record) {
    $pages[$record['heading']][] = $record['page_title'];
}

echo '<html><head><title>Page List</title></head><body>';

foreach($pages as $heading => $titles) {
    echo '<h1>' . htmlspecialchars($heading) . '</h1><ul>';

    foreach ($titles as $title) {
            echo '<li>' . htmlspecialchars($title) . '</li>';
    }   
    echo '</ul>';
}

echo '</body></html>';
?>