分组标题并在下面提供数据.sql


Group headings and have data below. sql

你们谁能给我指个正确的方向?希望你们中的一些人能善良一点,不要表现得好像自己是这个星球上最完美的人。

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

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

我的个人资料&账户

  • 页面标题

  • 另一个页面标题

谁能帮我检索一下这些结果?谢谢你。

在我看来,这将是链接有另一列在那里的page_id或东西,将持有被请求的页面的页面id。因此,在这种情况下,所有三列的page_id都为1,然后您的select语句将根据page_id进行选择,您的php代码将破译在哪里放置header/page_title。您可以考虑拥有另一列page_location_id和一个order by,该order by将保留它是否为标题,标题等,并且order by将保留显示行的确切位置,因为您可以有多个标题和标题。这样你的代码就知道应该把什么放到哪里。因为现在你选择的文本可能会变得不可靠,如果你改变标题,你需要确保所有的改变。

这里有一个解决方案。

<?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>';
?>