두 개의 테이블이 있습니다. 하나의 표에는 이름 및 순위와 같은 플레이어 정보가 포함됩니다. 다른 테이블에는 게임 대체 정보가 들어 있습니다.MySQL 결과를 평평하게하는 방법
출력은 다음과 같아야합니다
Rank| Player Name | Period 1 position | Period 2 Position| Period 3 Position |
플레이어 표 샘플
|ID| Name | Rank |
|1 | Fred | 10 |
|2 | Dan | 12 |
|3 | Mike | 15 |
포지션 테이블 샘플
|ID| Game_ID | Player_ID | Period | Position |
|1 | 12 | 1 | 1 | Striker Right|
|2 | 12 | 1 | 2 | Mid Center |
|3 | 12 | 2 | 1 | Striker Left |
다음
MySQL을
에서 그것을 얻을 수있는 코드가나는 반환 된 데이터 집합을 변환하는 다양한 방법을 시도했다. 나중에 데이터에
$players_sql = "SELECT position.id as position_id,
player.rank,
player.first_name,
position.period,
position.position
FROM player
INNER JOIN position
on player.id = position.player_id
ORDER BY player.rank, position.period;";
if ($result = $mysqli->query($players_sql)) {
// printf("Select returned %d rows.\n", mysqli_num_rows($result));
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
$subs[$row["position_id"]] = [
"rank" => $row["rank"],
"first_name" => $row["first_name"],
"period" => $row["period"],
"position" => $row["position"]
];
}
mysqli_free_result($result);
}
// collapse players This works
foreach ($subs as $sub) {
$players_by_rank[$sub["rank"]] = $sub["first_name"];
}
데이터는 사용자가 제출 할 수있는 형태로 표시됩니다. 아래 코드는 위의 코드와 일치하지 않습니다. 아래 코드는 데이터베이스에서 가져 오지 않은 미리 채워진 데이터로 정적으로 정의 된 배열을 사용했습니다. 출력물을 시각화 할 수있는 방법을 제공합니다. 아래 코드 예제에서는 총 4 개의 기간과 마지막에 요약 열이 있습니다. 이 데이터를 평평하게하는 쉬운 방법이 있어야합니다!
<?php
for ($sub = 1; $sub < $sub_info . length; $sub++) {
?>
<tr>
<td><?php echo $sub_info[sub] ?></td>
<td><input type = "text"
name = "p<?php echo $player; ?>"
value = "<?php echo $names[$player - 1]; ?>"
id = "p<?php echo $player; ?>" ></td>
<?php
for ($period = 1; $period < $periods + 1; $period++) {
?>
<td>
<div class="form-group">
<select onchange="calTotals(<?php echo $player . ',' . $period; ?>)"
id="<?php echo "p{$player}p{$period}"; ?>"
name="<?php echo "p{$player}p{$period}"; ?>">
<?php
$output = "";
for ($i = 0; $i < $players_on_field + 1; $i++) {
$output = "<option";
if ($i == 0) {
$output .= ' selected';
}
$output .= ">$i</option>";
echo $output;
}
?>
</select>
</div>
</td>
<?php } ?> <!-- Periods -->
<td><!-- total periods in game using JavaScript -->
<input type="text"
name="<?php echo "periods{$player}"; ?>"
id="<?php echo "periods{$player}"; ?>">
</td>
</tr>
<?php } ?> <!-- players -->
당신이 거의 다라고 생각을 연결하는
join
를 사용할 수 있습니다. $ 기간은 어디에 정의되어 있습니까? – Strawberry