我的问题是我有一个数据库,其值如下:\
|Entries|Name|
|12 |Bob |
|14 |Bob |
|15 |Bob |
|27 |Kevin|
|19 |Kevin|
|29 |Dale|
|18 |Dale|
|23 |Dale|
|13 |Dale|
我想在每个页面列出每个名称的条目时进行分页。所以会有一个bob的页面,然后下一页将有kevins,然后下一个将有dales。我知道我必须使用限制来实现这一目标,但我的问题是当名字(Bob,Kevin,Dale)都有不同数量的条目时,我将如何限制每个页面。
下面是我在页面中使用的一些php,我每页只需要12个条目,这可能会有所帮助,也可能没有帮助,我只想在这里添加它以防万一。
$limit = 12;
$pages = ceil($count/$limit);
//check to see if pages is smaller than
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default' => 1,
'min_range' => 1,
),
)));
$offset = ($page-1) * $limit;
$query = "SELECT `actual_quote`,`poster`,`formtype`,`id` FROM `data` WHERE `formtype` = 'Inspirational' LIMIT 13 OFFSET :offset";
$stmt = $db->prepare($query);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
答案 0 :(得分:0)
要显示页面,您只需选择不同的名称:
$query = "SELECT DISTINCT `Name` FROM `my_table` ORDER BY Name ASC";
$stmt = $db->prepare($query);
$stmt->execute();
$rows = $stmt->fetchAll();
for ($i = 1; $i <= count($rows); $i++) {
$row = $rows[$i - 1];
echo '<a href="?page=' . $i . '&name=' . $row['Name'] . '">Page ' . $i . ' (' . $row['Name'] . ')</a>';
}
在每个页面上,您可以使用name
参数仅获取该名称的结果。
答案 1 :(得分:0)
我只提供了一个示例策略。
首先,您需要在表格中GROUP BY
表达您的姓名。
SELECT name, COUNT(*) as cnt
FROM YourTable
GROUP BY name
通过此结果,您可以了解所需的页面/标签数量。您需要参考每个页面选项卡的名称。在每个页面选项卡上,您现在可以为每个名称选择匹配的条目:
您获得的第一张唱片包含姓名&#39; Kevin&#39;。然后,您可以执行此操作以选择条目:
SELECT column1, column2, ...
FROM YourTable
WHERE name = 'Kevin'
您需要为上面的基本查询获得的所有不同名称继续使用此方法。
我希望我能帮到你。
答案 2 :(得分:0)
使用DISTINCT
关键字,该关键字将返回没有重复项的条目。
SELECT DISTINCT column_name,column_name
FROM table_name;