gpt4 book ai didi

php - 从数据库中提取数据,其中每个数组保存列名称类别及其子信息

转载 作者:行者123 更新时间:2023-11-29 13:27:00 26 4
gpt4 key购买 nike

我正在尝试创建一个 Accordion 菜单,其中每个 Accordion 菜单都会根据下面的数据库示例中的类别列来拉动锻炼的常规; Accordian menu that the db informations manually put

我的 PDO::db 设计是这样的;

ID标题描述类别主题标签视频见过发布日期

如何按类别从数据库中提取信息,以便在 View 文件的 foreach 中使用它。我希望我能把我的问题说得足够清楚。

提前致谢。

最佳答案

您可以按类别然后按名称排序(确保您有关于类别、名称的索引)您的查询将是:

SELECT * FROM `workouts` ORDER BY category, name

然后,当您迭代时,检查类别是否更改,如果更改,则关闭子列表并打开一个首先显示类别的新列表。

另一个稍微简洁的解决方案是迭代两次,使用第一个循环按类别对关联数组进行排序:

$sth = $dbh->prepare("SELECT * FROM workouts");
$sth->execute();

$workouts = array();
/* First Loop */
while(($result = $sth->fetch(PDO::FETCH_ASSOC)) !== FALSE) {
$workouts[$result['category']][] = $result;
}

现在您可以使用键作为类别来循环 $workouts。

foreach($workouts as $category => $workoutsByCategory) {
//display category and start subset
foreach($workoutsByCategory as $workout) {
//display workout
}
}

使用第二个表来保存类别名称并使用锻炼表中该表的 ID 进行连接会更干净。然后您可以使用 join 获取结果。您可能想研究关系数据库设计和 Normalization

示例(未测试)表格布局:

table "workouts"
id | category_id | title | description | hashtags | video | seen | date_published
table "categories"
id | title

然后您可以使用以下方式获取结果:

SELECT workouts.*, categories.title as category_title FROM workouts LEFT JOIN categories ON (category.id = workouts.category_id)

这将使更改类别名称以及其他进步变得更加容易......但我想您会读到这一点。

关于php - 从数据库中提取数据,其中每个数组保存列名称类别及其子信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19999622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com