1

Wordpressを操作し、その関数を使用して2つのカスタムテーブルでデータベースをクエリします。「ツリー/グループ化」形式でデータを出力しようとしています。例:

Team Name One
- Player Name One
- Player Name Two
- Player Name Three
- Etc...

Team Name Two
- Player Name one
- Player Name Two
- Player Name Three
- Etc...

結果をこのように表示するために何が必要かわかりません。これが私が持っているテーブルを結合する1つのクエリです...

global $wpdb;
$user_id = '1';
$teamlist = $wpdb->get_results( $wpdb->prepare( 
"
SELECT
fv_teams.team_id AS team_teamid,
fv_players.player_id,
fv_teams.team_name AS teamname,
fv_players.player_fname AS fname,
fv_players.player_lname AS lname,
fv_players.player_team AS team,
fv_players.player_position AS position
FROM
fv_teams
INNER JOIN fv_players ON fv_teams.team_id = fv_players.team_id
WHERE
fv_teams.user_id = %d
",
$user_id
), OBJECT );

私は確かに次のことをして結果を得ることができます...

foreach ( $teamlist as $teamrow ) 
{
echo 'Team: ' .  $teamrow->teamname . '<br />';
echo 'Player ID: ' .  $teamrow->fname . '<br />';
}

ただし、チーム名は結果に次のように重複します。

Team Name One
- Player One
Team Name One
- Player Two
Team Name One
- Player Three
- Etc...

そこにネストされたループを追加する必要があることはかなり確信していますが、必要なコーディングについてはよくわかりません。

どんな考えや方向性も、これで髪のかなりの部分を失ったばかりの人にとって非常に役立ちます。; )。

4

2 に答える 2

3

自分の質問に答えるエチケットについてはよくわかりませんが、ループ内に2番目のクエリをネストすることで、必要なものを取得できました。

$teamlist = $wpdb->get_results( $wpdb->prepare( 
"SELECT *
 FROM fv_teams
 WHERE user_id = '1'
",
$user_id
), OBJECT );


foreach ( $teamlist as $teamrow ) 
{
$get_team_id = $teamrow->team_id;
echo  '<hr>';
echo '<h2>' . $teamrow->team_name . '</h2>';
$playerlist = $wpdb->get_results( $wpdb->prepare( 
    "SELECT *
     FROM fv_players 
     WHERE team_id = %d
    ",
    $get_team_id
), OBJECT );


    echo '<ul>';
    foreach ( $playerlist as $playerrow ) 
    {
        echo '<li>Player Name: ' .  $playerrow->player_fname . '</li>';
    }
    echo '</ul>';   
}

クリーンアップが必要ですが、私にとってはうまくいきます。

于 2012-06-25T19:37:37.003 に答える
0

Group byteamid にが必要です。

例: http://www.techonthenet.com/sql/group_by.php

編集するには、2 つのループを記述する必要があります。

<?php 
 // in plain language
 if(TeamName has another value)
  display name;
   if (playername has another value)
    display playername;
   end if
 end if
 ?>
于 2012-06-25T19:06:10.860 に答える