选择字段并将它们分组到php和mysql中的类别中

时间:2014-06-17 13:57:06

标签: php mysql

我有一张包含staff_id和科目的表格,我想根据他们的科目显示所有员工。

我的表 enter image description here

我想要的结果

Physics
  -001
  -004
  -006
Chemistry
  -002
  -009
Biology
  -003
  -008
Mathematics
  -005

我的代码

 $q = mysql_query("Select staff_id from my_table");
   while($row = mysql_fetch_array($q)){
      echo $subject .'</br>';

      echo $staff_id.'</br>';

    }

但是这并没有给出我想要的结果。 任何帮助?

5 个答案:

答案 0 :(得分:2)

您需要的是ORDER BY

将您的查询更改为:

SELECT STAFF_ID, SUBJECT FROM my_table ORDER BY SUBJECT, STAFF_ID

因此,您可以按正确的顺序获取记录,以便与他们合作。

答案 1 :(得分:1)

这样的东西?

$q = mysql_query("SELECT `staff_id`, `subject` FROM `my_table`;");
$data = array();
while($row = mysql_fetch_array($q)){
    $data[$row['subject']][] = '-'.$row['staff_id'];
}
print_r($data);

或者回显行

foreach($data as $heading => $rows){
    echo $heading.'<br>';
    foreach($rows as $row){
        echo $row.'<br>';
    }
}

答案 2 :(得分:0)

    $result=mysql_query("SELECT * from table GROUP BY subject");

    while($ext=mysql_fetch_object($result)) {
        $query=mysql_query(" SELECT * from table WHERE subject='".$ext->subject."'");
        echo $ext->subject;

        while($res=mysql_fetch_object($query)) {
            echo $res->staff_id;
        }    
    }

答案 3 :(得分:0)

您可以在下面编写如下代码:

$q = mysql_query("SELECT * FROM my_table ORDER BY SUBJECT, STAFF_ID");
while($row = mysql_fetch_array($q)){
 //Do staff
}

答案 4 :(得分:0)

以下代码应该有所帮助。您应该将每个主题拆分为查询中的单独数组。查询完成后,您应该遍历主题数组,然后遍历每个职员ID。

$subjects = array();
$q = mysql_query("Select staff_id from my_table");
    while($row = mysql_fetch_array($q)){
        if ($subjects[$row['SUBJECT']] == nil) {
            $subjects[$row['SUBJECT']] = array();
        }
        array_push($subjects[$row['SUBJECT']], $row['STAFF_ID']);
    }
foreach ($subjects as $key=>$value) {
    echo $key . '<br>;
    foreach ($vaue as &$staff) {
        echo $staff . '<br>';
    }
}