Php 如何以正确的方式在表中显示wordpress数据库值?
我使用wordpress让人们注册一项任务。 一个普通岗位(即项目)有多个任务。 当用户想要注册task1时,他/她的usersname进入我数据库中名为task1的元键字段中的元表。多个用户可以注册同一任务 我设法显示了一个包含任务标题和所有注册人员的表格。但是我不想多次显示相同的标题和相同的任务名。有人能帮我吗 电流输出是这样的Php 如何以正确的方式在表中显示wordpress数据库值?,php,mysql,wordpress,duplicates,html-table,Php,Mysql,Wordpress,Duplicates,Html Table,我使用wordpress让人们注册一项任务。 一个普通岗位(即项目)有多个任务。 当用户想要注册task1时,他/她的usersname进入我数据库中名为task1的元键字段中的元表。多个用户可以注册同一任务 我设法显示了一个包含任务标题和所有注册人员的表格。但是我不想多次显示相同的标题和相同的任务名。有人能帮我吗 电流输出是这样的 Title Tasks Volunteers Project 1 Task 1 user3 Project 1 Task 1 user6
Title Tasks Volunteers
Project 1 Task 1 user3
Project 1 Task 1 user6
Project 1 Task 1 user5
Project 1 Task 2 user2
Project 1 Task 2 user9
Project 2 Task 1 user1
Project 2 Task 2 user8
Project 2 Task 2 user4
Title Tasks Volunteers
Project 1 Task 1 user3
user6
user5
Task 2 user2
user9
Project 2 Task 1 user1
Task 2 user8
user4
我希望它看起来像这样
Title Tasks Volunteers
Project 1 Task 1 user3
Project 1 Task 1 user6
Project 1 Task 1 user5
Project 1 Task 2 user2
Project 1 Task 2 user9
Project 2 Task 1 user1
Project 2 Task 2 user8
Project 2 Task 2 user4
Title Tasks Volunteers
Project 1 Task 1 user3
user6
user5
Task 2 user2
user9
Project 2 Task 1 user1
Task 2 user8
user4
这是我的密码。
我认为我在sql查询中使用了一个内部联接,因为我需要从两个表(wp_1_posts和wp_1_posteta)中获取值
您无法获得与SQL类似的结果。那些“洞”并不是你想要的东西 如前所述,在这种情况下,内部联接与外部联接并没有真正的区别。我通常使用左连接(一个外部连接)来连接文章和文章元数据 不过,我觉得你没事。这只取决于你如何显示结果。请记住,您需要
标题
和任务
列,以确定每个志愿者
的归属
你说的是同一件事,但你想象的却不同。对于最终用户来说,您忽略了一些重复,而这正是您在暗示的
您可以简单地将一个数组保留在跟踪已显示的任务和标题的一侧,然后在循环中,如果已显示,请确保将其设置为空字符串
例如:
$titles = array();
$tasks = array();
while($row = mysql_fetch_assoc($result)) {
// set the $post_title to the actual title or an empty string based on if it was already seen or not
$post_title = !in_array($row['post_title'], $titles) ? $row['post_title']:'';
// record that it has been seen
$titles[] = $row['post_title'];
// ...do the same for tasks and then the rest of your code as you had it
请记住,如果任务名称可以多次出现在每个标题部分下,则需要稍微调整该逻辑。在这种情况下,您可能希望保留带有title.task
组合的键控数组
无论如何,希望这能让您了解如何以一种相对简单的方式跟踪已经显示的内容,从而获得所需的输出
SQL不能总是返回完美的表格结果
如果您最终有许多任务,这也有点问题:
if ($meta_key == 'task1'){
$task_name = "Task 1";
}
else if ($meta_key == 'task2'){
$task_name = "Task 2";
}
您可以改为创建一个格式化程序帮助函数,该函数将使用PHP的ucwords()
或ucfirst()
函数,还可以使用字符串替换或更重一点的正则表达式来在数字和类似数字之间添加空格。我打赌10美元,你可以找到一些代码片段,可以帮助你使标题漂亮。这里的关键词是“人性化”。。。很多框架和代码片段通常都会有这样的帮助工具类和函数
您还可以使用某种类型的jQuery插件(或其他JavaScript工具),该插件可以处理表格数据,并可以按照您所追求的方式对其进行格式化。它甚至可能提供一些更高级的排序选项。然后,您就可以对表结果进行JSON编码,并以所需的格式获得所需的内容。如果不使用PHP进行任何格式设置,这可能是最接近开箱即用的SQL结果。您无法获得与SQL类似的结果。那些“洞”并不是你想要的东西 如前所述,在这种情况下,内部联接与外部联接并没有真正的区别。我通常使用左连接(一个外部连接)来连接文章和文章元数据 不过,我觉得你没事。这只取决于你如何显示结果。请记住,您需要
标题
和任务
列,以确定每个志愿者
的归属
你说的是同一件事,但你想象的却不同。对于最终用户来说,您忽略了一些重复,而这正是您在暗示的
您可以简单地将一个数组保留在跟踪已显示的任务和标题的一侧,然后在循环中,如果已显示,请确保将其设置为空字符串
例如:
$titles = array();
$tasks = array();
while($row = mysql_fetch_assoc($result)) {
// set the $post_title to the actual title or an empty string based on if it was already seen or not
$post_title = !in_array($row['post_title'], $titles) ? $row['post_title']:'';
// record that it has been seen
$titles[] = $row['post_title'];
// ...do the same for tasks and then the rest of your code as you had it
请记住,如果任务名称可以多次出现在每个标题部分下,则需要稍微调整该逻辑。在这种情况下,您可能希望保留带有title.task
组合的键控数组
无论如何,希望这能让您了解如何以一种相对简单的方式跟踪已经显示的内容,从而获得所需的输出
SQL不能总是返回完美的表格结果
如果您最终有许多任务,这也有点问题:
if ($meta_key == 'task1'){
$task_name = "Task 1";
}
else if ($meta_key == 'task2'){
$task_name = "Task 2";
}
您可以改为创建一个格式化程序帮助函数,该函数将使用PHP的ucwords()
或ucfirst()
函数,还可以使用字符串替换或更重一点的正则表达式来在数字和类似数字之间添加空格。我打赌10美元,你可以找到一些代码片段,可以帮助你使标题漂亮。这里的关键词是“人性化”。。。很多框架和代码片段通常都会有这样的帮助工具类和函数
您还可以使用某种类型的jQuery插件(或其他JavaScript工具),该插件可以处理表格数据,并可以按照您所追求的方式对其进行格式化。它甚至可能提供一些更高级的排序选项。然后,您就可以对表结果进行JSON编码,并以所需的格式获得所需的内容。这可能是在不使用PHP进行任何格式设置的情况下最接近开箱即用的SQL结果。我想你要找的是一个
外部联接
我想你要找的是一个外部联接