У меня проблема с заполнением списком данных.
У меня есть таблица Пользователь со столбцами:
- usrIndex
- usrNickname
- usrFullname
- usrEmail
Мы связываем данные, включая объединения с другой таблицей (например, hrh ...), и мы рассчитываем частоту сердечных сокращений пользователя и их калорий, используя следующий код:
$totalPoints = 0;
$totalDuration = 0;
$totalCalories = 0;
$noOfParticipants = 0;
$includedUsers = 0;
$participants = "";
Основная программа
$query = "SELECT DISTINCT usrIndex,usrNickname";
$query .= " FROM hrheader hrh";
$query .= " INNER JOIN `user` usr ON hrh.hrhUsrIndex=usr.usrIndex";
$query .= " WHERE usrSIndex=$sIndex";
$query .= " AND hrhStart>'" . $start . "' AND hrhStart<'" . date("Y-m-d", strtotime($end . " +1 days")) . "'";
$query .= " ORDER BY usrNickname";
$gresult = mysql_query($query);
if ($gresult)
{
$noOfParticipants = mysql_num_rows($gresult);
$participants = "<table style='text-align:center;font-size:18px;width:980px;margin- top:16px;color:#231f20;'>";
$participants .= "<tr>";
$participants .= "<th>Nickname</th><th>Time (Hours & Mins)</th><th>Average Effort</th><th>Calories</th><th><img src='../images/mepslogo.png' /></th>";
$participants .= "</tr>";
Приведенный ниже код и диаграмма помогают четко понять вопрос:
while ($grow = mysql_fetch_array($gresult))
{
$query = "SELECT ROUND(AVG(hr/hrhMaxHR)*100) AS AverageEffort,ROUND(AVG(hr)) AS AverageHeartRate,ROUND(MAX(hr)) AS MaxHeartRate,";
$query .= " COUNT(DISTINCT hrhIndex) AS NumberOfMoves";
$query .= " FROM `hrheader` hrh INNER JOIN hr ON hrh.hrhIndex=hr.hrHrhIndex";
$query .= " WHERE hrhUsrIndex=" . $grow['usrIndex'] . " AND hr>0";
$query .= " AND hrReceivedTime>'" . $start . "' AND hrReceivedTime<'" . date("Y-m-d", strtotime($end . " +1 days")) . "'";
$result = mysql_query($query);
$pAverageEffort = 0;
$pAverageHeartRate = 0;
$pMaxHeartRate = 0;
$pNumberOfMoves = 0;
if ($result)
{
$row = mysql_fetch_array($result);
if ($row)
{
$pAverageEffort = $row['AverageEffort'] . "%";
$pAverageHeartRate = $row['AverageHeartRate'];
$pMaxHeartRate = $row['MaxHeartRate'];
$pNumberOfMoves = $row['NumberOfMoves'];
}
}
$query = "SELECT hr,hrReceivedTime,hrhMaxHR,hrhWeight,FLOOR(DATEDIFF(hrReceivedTime,usrDOB)/365) AS Age,usrGender";
$query .= " FROM hrheader hrh INNER JOIN hr ON hrh.hrhIndex=hr.hrHrhIndex";
$query .= " INNER JOIN `user` usr ON hrh.hrhUsrIndex=usr.usrIndex";
$query .= " WHERE hrhUsrIndex=" . $grow['usrIndex'] . " AND hr>0";
$query .= " AND hrReceivedTime>'" . $start . "' AND hrReceivedTime<'" . date("Y-m-d", strtotime($end . " +1 days")) . "'";
$query .= " ORDER BY hrReceivedTime";
//echo $query;
$result = mysql_query($query);
$lastReceived = false;
if ($result)
{
$t = 0;
$pDuration = 0;
$zone1 = 0;
$zone2 = 0;
$zone3 = 0;
$zone4 = 0;
$zone5 = 0;
$count = 0;
$pCalories = 0;
while ($row = mysql_fetch_array($result))
{
if ($lastReceived)
{
$t = TimeDifference($lastReceived, $row['hrReceivedTime']);
if ($t < 5)
{
if ($row['hr'] > 0)
{
if ($row['hr'] > $row['hrhMaxHR'] * 0.9)
{
$zone5 += $t;
}
elseif ($row['hr'] > $row['hrhMaxHR'] * 0.8)
{
$zone4 += $t;
}
elseif ($row['hr'] > $row['hrhMaxHR'] * 0.7)
{
$zone3 += $t;
}
elseif ($row['hr'] > $row['hrhMaxHR'] * 0.6)
{
$zone2 += $t;
}
else
{
$zone1 += $t;
}
$count++;
$pDuration += $t;
$pCalories += calculateCalPerMin($row['hr'], $row['hrhWeight'], $row['Age'], $row['usrGender']) * $t;
}
}
}
$lastReceived = $row['hrReceivedTime'];
}
$zone1 = floor($zone1);
$zone2 = floor($zone2);
$zone3 = floor($zone3);
$zone4 = floor($zone4);
$zone5 = floor($zone5);
$pPoints = 0;
$pPoints+=calculatePoints(1, $zone1);
$pPoints+=calculatePoints(2, $zone2);
$pPoints+=calculatePoints(3, $zone3);
$pPoints+=calculatePoints(4, $zone4);
$pPoints+=calculatePoints(5, $zone5);
$totalCalories+=$pCalories;
$totalPoints+=$pPoints;
$totalDuration+=$pDuration;
if (mysql_num_rows($result) > 0)
{
mysql_data_seek($result, 0);
$row = mysql_fetch_array($result);
$include = 1;
if (!empty($targetGroup))
{
if ($targetGroup != $row['usrGender'])
{
$include = 0;
}
}
if (!empty($targetNoOfSessions))
{
if ($targetNoOfSessions < $pNumberOfMoves)
{
$include = 0;
}
}
if (!empty($targetDuration))
{
$x = explode(":", $targetDuration);
$targetDuration = ($x[0] * 60) + $x[1];
if ($targetDuration < $pDuration)
{
$include = 0;
}
}
if (!empty($targetAveEffort))
{
if ($targetAveEffort > floor($pAverageEffort))
{
$include = 0;
}
}
if (!empty($targetTimeInZones))
{
$targetTimeInZones = intval($targetTimeInZones);
if (!empty($targetTimeInZones))
{
switch ($targetTimeInZones)
{
case 1:
if (empty($zone1))
$include = 0;
break;
case 2:
if (empty($zone2))
$include = 0;
break;
case 3:
if (empty($zone3))
$include = 0;
break;
case 4:
if (empty($zone4))
$include = 0;
break;
case 5:
if (empty($zone5))
$include = 0;
break;
}
}
}
if (!empty($targetCalories))
{
if ($targetCalories >= $pCalories)
{
$include = 0;
}
}
if (!empty($targetPoints))
{
$debug .= "$targetPoints - $pPoints --";
if ($targetPoints >= $pPoints)
{
$include = 0;
}
}
if ($include == 1)
{
$includedUsers+=1;
}
}
if ($include == 1)
{
$participants .= "<tr><td>" . $grow['usrNickname'] . "</td><td>" . FormatTime($pDuration) . "</td><td>$pAverageEffort</td><td>" . floor($pCalories) . "</td><td>$pPoints</td></tr>";
}
}
}
$participants .= "</table>";
и это HTML-код для основной программы (здесь мы определяем HTML-таблицу):
<div class="txt" style="margin-right:10px;margin-top:16px;font-size:18px;width:462px;float:right">
<div class="txtl"></div>
<div class="txtr"></div>
<span>% of group that achieved target</span>
<span id="spanPercentAchieved" style="color:black;float:right">-%</span>
</div>
<div class="txt" style="margin-left:10px;margin-top:16px;font-size:18px;width:462px">
<div class="txtl"></div>
<div class="txtr"></div>
<span>Number of users achieved target</span>
<span id="spanNumberAchieved" style="color:black;float:right">-</span>
</div>
<span id="spanParticipants">
<table style='text-align:center;font-size:18px;width:980px;margin-top:16px;color:#231f20;'>
<tr>
<th>Nickname</th>
<th>No of Sessions</th>
<th>Duration</th>
<th>Average Effort</th>
<th><img src='../images/mepslogo.png' /></th>
</tr>
</table>
</span>
Я указал запрос и привязал данные к html-таблице в "Основной программе"
Работает нормально с этим кодом ...... Но моя проблема
Я хочу установить поле со списком внутри html-таблицы в заголовке псевдонима в этом поле со списком параметров, например (псевдоним, полное имя, адрес электронной почты), когда пользователь выбирает эти параметры (полное имя, адрес электронной почты), они смогут видеть электронную почту пользователя и полное имя тех, чей ник сейчас отображается ..
Я хочу вот так:
![enter image description here](https://i.stack.imgur.com/VcnEh.png)
Если пользователь выбирает полное имя, вместо имени будет отображаться полное имя, а когда пользователь выбирает идентификатор электронной почты, вместо имени пользователя будет отображаться идентификатор электронной почты.
Этот выбор будет установлен в заголовке столбца таблицы.
Может кто-нибудь помочь с этим?
Может ли кто-нибудь помочь в этом ... этой теме.