私はこの件で一日中壁に頭をぶつけていました。それは私にとって苦労してきたので、それが本当に簡単ではないことを願っています! 誰かが私を助けてくれることを願って、私は一日中検索しました。
トレーニング キャンプのすべてのプレーヤーのフィットネス テストの結果を示す html テーブルがあります。それらをすべて名前とともに表示する方法を見つけました(別のmysqlテーブルから取得)。ここで、各テスト結果の横に、その特定のテスト結果に対するランク付けを追加したいと思います。これは、現在のコードからフィルタリング部分を除いたものです (これを解決する必要はないと思います)。
データベースクエリは以下です。コーチが見やすいように、すべてのディフェンス、すべてのフォワード、ゴールキーパーが一緒に表示されるように、テーブル内のプレーヤーをポジション別に並べ替えます。
//get the camp id for the coach logged in
$getcampid = "SELECT value FROM profile_values WHERE uid = '$user->uid'";
$campid = mysql_query ($getcampid);
$campidrow = mysql_fetch_array($campid);
$coachescamp = $campidrow[0];
$getplayerdata = mysql_query("SELECT * FROM content_type_test
INNER JOIN content_type_player ON content_type_test.field_player_uid=
content_type_player.field_uid
WHERE content_type_test.field_training_camp_nid='$coachescamp'
ORDER BY content_type_player.field_position_value") or die(mysql_error());
$left = true;
while($playerdata=mysql_fetch_array($getplayerdata))
{
echo "<td>", $playerdata['field_position_value'], "</td>";
echo "<td>", $playerdata['field_last_name_value'],", ",$playerdata['field_first_name_value'], "</td>";
echo "<td>", $playerdata['field_speed_value'], "</td>";
echo "<td>Show rank of players speed compared to other players in $getplayerdata query</td>";
echo "<td>", $playerdata['field_agility_value'], "</td>";
echo "<td>Show rank of players agility compared to other players in $getplayerdata query</td>";
echo"</tr>";
}
echo"</tbody></table>";
「プレーヤーのランクを表示...」と表示されている列に、プレーヤーの速度と敏捷性のランクを表示する必要があります。単純にするために含めなかったテーブルに、合計で 5 つのランクを表示する必要があります。この 2 つの方法を理解できれば、残りの 2 つについても実行できます。
注意: スピードと敏捷性は数値です。配列の最小の数字を 1 位にランク付けする必要があります。
これが私を殺しているのを助けてくれてありがとう。
編集 - - - - - - - - - - - - - - - - - - -
1つの結果のみを返すコードは次のとおりです
$getplayerdata = mysql_query("SELECT * FROM content_type_test
INNER JOIN content_type_player ON content_type_test.field_player_uid=
content_type_player.field_uid
WHERE content_type_test.field_training_camp_nid='$coachescamp'
ORDER BY content_type_player.field_position_value") or die(mysql_error());
$left = true;
while($playerdata=mysql_fetch_array($getplayerdata))
{
$arrayOfAllData = array();
while($playerdata=mysql_fetch_array($getplayerdata)){
$arrayOfAllData[$playerdata[ID]] = array(field_position_value =>$playerdata['field_position_value'],
field_last_name_value=>$playerdata['field_last_name_value'],
field_speed_value=>$playerdata['field_speed_value']);
}
$sql = mysql_query("SELECT @rownum:=@rownum+1 'rank', * FROM content_type_test, (SELECT @rownum:=0) r
INNER JOIN content_type_player ON content_type_test.field_player_uid=
content_type_player.field_uid
WHERE content_type_test.field_training_camp_nid='$coachescamp'
ORDER BY content_type_player.field_speed_value");
while($playerdata=mysql_fetch_array($sql)){
$arrayOfAllData[$playerdata[ID]]["field_speed_value"] = $playerdata['field_speed_value'];
}
foreach($arrayOfAllData as $player){
echo "<td>", $player['field_position_value'], "</td>";
echo "<td>", $player['field_last_name_value'],", ",$player['field_first_name_value'], "</td>";
echo "<td>", $player['field_speed_value'], "</td>";
echo "<td>*I dont know what to put here to display the rank*</td>";
echo"</tr>";
}
}
echo"</tbody></table>";
Print を実行すると、この配列のような 1 行が表示されます ( [] => Array ( [field_position_value] => Forward [field_last_name_value] => Tester [field_speed_value] => 4.504 ) )
また、1 つの列に記載されているように、ランクを表示するために何を入力すればよいかわかりません。