0

我在显示来自 sql 的数据时遇到了一些问题。我将数据存储到 2 个表中:表学生和表公司。

表学生 { id, name, company_code, fac_staff_id }

表公司 {id, company_name, company_state}

我正在尝试创建一个如下所示的表格。

  • 状态 A

    • A公司

      • 学生 1
      • 学生 2
    • B公司

      • 学生 3
      • 学生 4
  • 状态 B

    • C公司

      • 学生 5
    • D公司

      • 学生 6
      • 学生 7
      • 学生 8

我尝试创建一个类似于上述结构的表,但只想根据那里的 company_state 对所有学生进行分类。输出仅显示一个状态并将所有学生置于该状态。

          $querysel = "SELECT DISTINCT c.company_state,s.fac_staff_id FROM tblcompany 
           c, tblstudent s WHERE c.id = s.company_code " ;
          $resultsel = mysql_query($querysel, $connection);
          $querystdsel = "SELECT s.name,c.company_state  FROM tblcompany c,
           tblstudent s WHERE c.id = s.company_code " ;
          $resultstdsel = mysql_query($querystdsel, $connection);

    while($rowsel =mysql_fetch_array($resultsel)){

    if ($rowsel['fac_staff_id'] == NULL){

    echo $rowsel['company_state'];

    while($rowstdsel =mysql_fetch_array($resultstdsel)){

    if($rowstdsel['company_state']=$rowsel['company_state']){

      echo $rowstdsel['name']; 

    }

    }

    }
      }       

希望有人能告诉我创建一个像上面这样的表的方法或任何替代方法,因为我在 php 和 mysql 方面仍然很差。谢谢你

4

1 回答 1

0

您应该加入您的语句以获得只有一个结果,其中每一行看起来像这样,“order by company_state, company_name”

state | company | student
A  | A  | student1
A  | A | student2
A  | B | student3
....

然后在您的 php 中使用列表来获取您的结构。像这样:只是写下来,没有漂亮、干净、功能性的代码!

<?php

$rows = mysqli_fetch_array($result);

echo "<ul>";

$lastcompany = "";
$laststate = "";

foreach($rows as $row)
{
  if(($laststate == "") or ($laststate != $row['state']))
  {
    // New Item on mainlist: states

    if($laststate != $row['state'])
    { // close previous lists (students, companies)
      echo "</ul></ul></li>";
    }

    echo "<li>".$row['state'];    
  }


  if(($lastcompany == "") or ($lastcompany != $row['company']))
  {
    // New Item on mainlist: companies

    if($lastcompany != $row['company'])
    { // close previous (students) list
      echo "</ul></li>";
    }

    echo "<li>".$row['company'];    
  }

  // New student entry
   echo "<li>".$row['company']."</li>";


  // Redmine company and state for next iteration
  $lastcompany = $row['company'];
  $laststate = $row['state'];
}


// After all close all lists
echo "</ul></ul></ul>";

?>
于 2013-05-18T09:11:13.673 回答