0

ページ上部の 1 つのテーブルにチーム メンバーとその情報のリストを表示し、それぞれの行の 1 つのセル内の値に基づいてチームに分割したいと考えています。

「メンバー」テーブルは次のようになります。

+------+------------------------+------------------+
| name | interests              | email            |
+------+------------------------+------------------+
| John | Golf, Hockey, Baseball | John@example.com |
| Fred | Hockey                 | Fred@example.com |
+------+------------------------+------------------+

これが私のコードの簡略版です:

$result = mysql_query("SELECT * FROM members");
while($row = mysql_fetch_array($result)){ 
echo "$row['name'] . $row['interests'] . $row['email']"
}

while($row = mysql_fetch_array($result)){
$sport = array($row['interests']);
if (in_array("Golf", $sport)) {
echo "$row['name'] . $row['email']"
}
if (in_array("Hockey", $sport)) {
echo "$row['name'] . $row['email']"
}
if (in_array("Baseball", $sport)) {
echo "$row['name'] . $row['email']"
}

ページを次のように表示するにはどうすればよいですか?:

全員

名前: ジョン
興味のあること: ゴルフ、ホッケー、野球
電子メール: john@example.com

名前: フレッド
趣味: ホッケー
メールアドレス: fred@example.com

チーム

ゴルファー:
ジョン - john@example.com

ホッケー選手:
ジョン - john@example.com
フレッド - fred@example.com

野球選手:
ジョン - john@example.com

4

4 に答える 4

0
// Fetch data
$db = new mysqli( 'localhost', 'root', '', 'test' );
$query = "SELECT * FROM members";
$result = $db->query( $query );

// Pre-create sorted arrays
$members = array();
$teams = array();
while ( $row = mysqli_fetch_row( $result ) ) {
    $members[] = $row;
    $tm = explode( ',', $row[1] );
    foreach( $tm as $game ) {
        $teams[trim($game)][] = $row[0] . ' - ' . $row[2];
    }
};

// Echo the result
echo '<h2>All members</h2>';
foreach( $members as $member ) {
    echo 'Name: '.$member[0].'<br/>';
    echo 'Interests: '.$member[1].'<br/>';
    echo 'E-mail: '.$member[2].'<br/><br/>';
}

echo '<h2>Teams</h2>';
foreach( $teams as $sport => $team ) {
    echo '<b>'.$sport.'</b></br>';
    foreach( $team as $player ) {
        echo $player . '</br>';
    }
    echo '<br />';
}

そして結果:

All members
Name: John
Interests: Golf, Hockey, Baseball
E-mail: John@example.com

Name: Fred
Interests: Hockey
E-mail: Fred@example.com

Teams
Golf
John - John@example.com

Hockey
John - John@example.com
Fred - Fred@example.com

Baseball
John - John@example.com
于 2013-01-30T11:28:46.627 に答える
0
<?php

$result = mysql_query("SELECT * FROM members");
while($row = mysql_fetch_array($result)){
    $members[] = $row; //bulid members array
    $member_teams = explode(',',$row['interests']); //get array of interests for row
    foreach ($member_teams as $team) { //cast name and emial to team list
       $teams[$team]['title'] = $team;
       $teams[$team]['members'][] = array('name'=>$row['name'],'email'=>$row['email']);
    }    
}



//bulid members list
if (!empty($members)) {
    echo 'All Members<br />';

    foreach ($members as $member) {
        echo 'Name: '. $member['name'];
        echo '<br /> Interests:'. $member['interests'];
        echo '<br /> Email: '. $member['email'];
    }

    echo '<hr>';
    echo '<br />Teams<br />';

    foreach ($teams as $team) {
        echo '<br />'.$team['title'];
        foreach ($team['members'] as $member) { //bulid list of team members
            echo '<br />'.$member['name']. ' - ' . $member['email'];
        }
    }

    // these are lists so i preffer <ul><li>
    // but <br /> is no problem for me


?>
于 2013-01-30T11:29:01.860 に答える
0

このコードはすべてのメンバーとチームを表示します

 $result = mysql_query("SELECT * FROM members");
 $members=array();
 while($row = mysql_fetch_array($result)){ 
     $members[]=$row;
 }
 echo "All Members:<br>\n";
 foreach($members as $row){
    echo "Name: ".$row['name'] ."<br>Interests: ". $row['interests']."<br>Email:". $row['email']."<br>\n";
 }
 echo "Teams:<br>\n";
 echo "Hockey Players:<br>\n";
 foreach($members as $row){
    if($row['interests']=="Hockey"){
        echo $row['name'] ."-". $row['email']."<br>\n";        
    }
 }
 echo "Golfers Players:<br>\n";
 foreach($members as $row){
    if($row['interests']=="Golfers"){
        echo $row['name'] ."-". $row['email']."<br>\n";        
    }
 }
 echo "Baseball Players:<br>\n";
 foreach($members as $row){
    if($row['interests']=="Baseball"){
        echo $row['name'] ."-". $row['email']."<br>\n";        
    }
 }
于 2013-01-30T11:29:02.480 に答える
0

これはテストされていませんが、すべてのメンバーにクエリを実行して関心を取得し、foreach ループを使用してその関心を持つ各メンバーを調べるなどのことを試すことができます。

$result = mysql_query("SELECT * FROM members");
while($row = mysql_fetch_array($result)){ 

$interests =  $row['interests'];

foreach($interests as $interest){
     echo $interest." Players";


      $result = mysql_query("SELECT * FROM members WHERE interests='$interest'");

       while($row = mysql_fetch_array($result)){ 
         $sport = array($row['interests']);
          if (in_array($interest, $sport)) {
             echo "$row['name'] . $row['email']"
          }
       }


   }
}
于 2013-01-30T11:25:44.900 に答える