我在显示 sql 数据时遇到一些问题。 我将数据存储到两个表中:表学生和表公司。
表学生 { id、姓名、公司代码、fac_staff_id }
表公司 {id、公司名称、公司状态}
我正在尝试创建一个如下所示的表格。
状态A
A公司
- 学生1
- 学生2
B公司
- 学生3
- 学生 4
状态B
C公司
- 学生 5
D公司
- 学生 6
- 学生 7
- 学生 8
我尝试创建一个与上述结构类似的表,但只想根据公司状态对所有学生进行分类。输出仅显示一种状态并将所有学生置于该状态。
$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 仍然很差。谢谢
最佳答案
您应该加入语句以仅得到一个结果,其中每一行都类似于“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>";
?>
关于PHP和sql显示项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16622237/