我面临一些关于从sql显示数据的问题。 我将我的数据存储到2个表:table student和table company。
表学生 {id,name,company_code,fac_staff_id} 表公司 {id,company_name,company_state}我正在尝试创建如下所示的表格。
国家A
公司A
B公司
B国
公司C
公司D
我尝试创建一个类似于上述结构的表,但只想根据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中很差。谢谢
答案 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>";
?>