PHP和sql显示项目

时间:2013-05-18 08:34:01

标签: php mysql

我面临一些关于从sql显示数据的问题。 我将我的数据存储到2个表:table student和table company。

表学生 {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中很差。谢谢

1 个答案:

答案 0 :(得分: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>";

?>