Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从同一个表运行两个查询_Php_Mysql_Arrays - Fatal编程技术网

在php中从同一个表运行两个查询

在php中从同一个表运行两个查询,php,mysql,arrays,Php,Mysql,Arrays,我希望在页面顶部的一个表中显示团队成员及其信息的列表,然后根据其各自行上一个单元格内的值将他们分成团队 “成员”表如下所示: +------+------------------------+------------------+ | name | interests | email | +------+------------------------+------------------+ | John | Golf, Hockey, Baseb

我希望在页面顶部的一个表中显示团队成员及其信息的列表,然后根据其各自行上一个单元格内的值将他们分成团队

“成员”表如下所示:

+------+------------------------+------------------+
| 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

这是未经测试的,但您可以尝试查询所有成员以获取兴趣,然后使用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']"
          }
       }


   }
}

此代码显示所有成员和团队

 $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";        
    }
 }
$result=mysql\u查询(“从成员中选择*);
$members=array();
而($row=mysql\u fetch\u数组($result)){
$members[]=$row;
}
回显“所有成员:
\n”; foreach($row成员){ echo“Name:.$row['Name']。”
兴趣:.$row['Interests']。
电子邮件:.$row['Email']。“
\n”; } echo“团队:
\n”; echo“曲棍球运动员:
\n”; foreach($row成员){ 如果($row['interests']=“曲棍球”){ echo$row['name']。“-”$row['email']。“
\n”; } } echo“高尔夫球员:
\n”; foreach($row成员){ 如果($row['interests']==“高尔夫球手”){ echo$row['name']。“-”$row['email']。“
\n”; } } 回声“棒球运动员:
\n”; foreach($row成员){ 如果($row['interests']==“ball”){ echo$row['name']。“-”$row['email']。“
\n”; } }
编辑以将兴趣作为一个数组包含,因为可能有多个兴趣
SELECT*FROM members WHERE interest='$interest'
您认为在搜索
棒球时会返回什么?可能您必须在SELECT查询中使用group by name和email。这仅在“兴趣”列。例如,如果($row['interests']==“Hockey”){将产生Fred-Fred@example.com但是如果($row['interests']==“basketball”){什么也不返回这个工作。它是分四步工作的,首先是所有成员,然后是曲棍球,然后是高尔夫球手,最后是棒球。如果是棒球,最后一步就是展示它
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
<?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


?>
 $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";        
    }
 }