PHP和sql显示项

标签 php mysql

我在显示 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/

相关文章:

javascript - Ajax 调用仅传递第一个元素的 id

php - Laravel 计数中的行数有很多关系

php - 如何在数据库中写入字符

python - 加快 Django 表单上传大型(500k obs)CSV 文件到 MySQL 数据库

PHP 删除前询问密码

php - PHP上传多张图片并将所有图片名称保存在mysql表的一行中

PHP 5 : What DAL are you using?

javascript - Mandrill 在模板中创建激活码

mysql - Perl 和 XPath : missing entries in database table

mysql - 为什么 MySQL 自动增量会在插入失败时增加?