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

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

然后我想把这些信息显示在一个标准的表格中,每个日期选择。因此,每个日期有多个用户,每个用户可以有多个答案。标题应该是
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/

10-14 12:57