gpt4 book ai didi

php - 需要合并来自多个 MySql 表的信息以显示在 html 表中

转载 作者:行者123 更新时间:2023-11-29 05:34:14 25 4
gpt4 key购买 nike

我很难找到做某事的最佳方法。我在 mysql 中有三个表,这与我正在构建的健身房应用程序有关,一个用于肌肉锻炼,一个用于有氧运动,另一个用于存放用户每天每次锻炼的结果。每天都会根据 0 到 1 次有氧运动和 0 次创建锻炼 - 无论私有(private)教练决定多少次肌肉锻炼。在锻炼结束时,用户将每次锻炼的结果放入表格中并提交。结果只是一个文本字段。我有一个数据库,它为包含以下内容的每个单独结果创建一行:

username,exercise type (muscle,cardio),exercise name, exercise result, date

举个例子

John,muscle,bench press, 225lb max out, 2012-08-21
John,cardio,rowing,12 miles, 2012-08-21

然后我想获取此信息并根据所选日期将其显示在标准表格中。所以每个日期有多个用户,每个用户可以有多个答案。 header 将是

username,cardio, muscle 1, muscle 2 ect..(显示当天的数量)然后结果向下并填入表格。

除了进行数十次选择调用外,我还试图找出一种方法来执行此操作。我打算尝试创建某种排序或数组并使用它。有什么想法吗?

最佳答案

我会选择数组。问题在于调度肌肉/心脏结果。

要格式化为 HTML 并获取标题,假设我们首先有心脏,然后是肌肉。

因此您选择该日期的所有行,按用户名和有氧运动/肌肉排序。

然后:

$users = array();
$maxes = array('cardio' => 0, 'muscle' => 0);

foreach($row = ...)
{
list($user, $com, $name, $result) = $row;
if (!isset($users[$user]))
$userData = array('cardio' => array(), 'muscle' => array());
else
$userData = $users[$user];
$userData[$com][] = array($name, $result);
if (count($userData[$com]) > $maxes[$com])
$maxes[$com] = count($userData[$com]);
$users[$user] = $userData;
}

现在你有类似的东西:

'John': {
'cardio': [
[ 'rowing', '12 miles' ],
[ 'running', '2 miles' ],
],
'muscle': [ ]
},
'Jack': {
'cardio': [ ],
'muscle': [ 'bench', '300lbs' ],
}

为了将其格式化为 HTML,我们保存了任何用户的最大有氧运动量和最大肌肉量。因此,一个包含 1 + MaxC + MaxM 列的表将包含所有用户,并按顺序排列:

Name  Cardio 1    Cardio 2   Muscle 1

John Rowing Running -
12 miles 2 miles
Jack - - Bench
300lbs

并构建它:

// First the header
print "<tr>";
print "<th>Name</th>";
for ($i = 0; $i < $maxes['cardio']; $i++)
print "<th>Cardio " . ($i+1) . "</th>";
for ($i = 0; $i < $maxes['muscle']; $i++)
print "<th>Muscle ($i+1)</th>";
print "</tr>";

foreach($users as $user => $info)
{
print "<tr><td>$user</td>";
foreach(array('cardio','muscle') as $key)
{
$data = $info[$key];
for ($i = 0; $i < $maxes[$key]; $i++)
{
print "<td>";
if (isset($data[$i]))
{
list($name, $result) = $data[$i];
print "$name<br />$result";
}
else print '-';
print "</td>";
}
}
print "</tr>";
}

关于php - 需要合并来自多个 MySql 表的信息以显示在 html 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12060324/

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