【问题标题】:dynamically generate HTML table from MySQL从 MySQL 动态生成 HTML 表
【发布时间】:2014-10-12 00:38:33
【问题描述】:

我有三个mysql表科目、考试、考试信息

表格 - 主题

  1. 主题 ID
  2. 主题名称
  3. 科目考试

表格 - 检查

  1. 考试
  2. 考试

表格检查

  1. fname
  2. 名字
  3. 学生号
  4. 得分
  5. 主题ID

    在 subject.subjectExamid = 考试.examid

    开考试.subjectid = subject.subjectid

现在我想生成 HTML 表格,显示学生每篇论文针对主题获得的分数

结构表输出 每个科目分数的学生详细信息

编辑代码示例

<?php
  $examinid = 3;
  $subjects = mysqli_query(
      $con," 
          SELECT * FROM subjects
          WHERE examid = '$examinid'
          ORDER BY shortname ASC

  ");
  $content = mysqli_query(
      $con," 
          SELECT DISTINCT exam.idcandidate, exam.sex, exam.fname, exam.lname
          FROM examinations 
          AS exam
          INNER JOIN examinfo
          AS info
          ON exam.id_subject = info.idsubject
          WHERE info.idexam = '$examinid'         
  ");
?>
<div id="table_1">
  <table cellpadding="0" cellspacing="0" border="0">
      <tr>
          <td class="table1tr">#</td> 
            <td class="table1tr">Candidate</td>   
            <td class="table1tr">ID</td>  
            <td class="table1tr">Sex</td> 
          <?php
              // output subjects 
              while($subRow = mysqli_fetch_array($subjects)){
                  $arbv = strtoupper($subRow['shortname']);
                  $subjectname = ucwords(strtolower($subRow['subjectname']." - ".$subRow['subjectid'].""));
          ?>
          <td class="table1tr" title="<?php echo $subjectname; ?>">
              <?php echo $arbv; ?>
            </td>
          <?php   
              }
          ?>                  
            <td class="table1tr">Exam</td>
        </tr>
      <?php
          while($stdnt = mysqli_fetch_array($content)){
              $fullname = ucwords(strtolower("$stdnt[lname] $stdnt[fname]"));
              $studentid = str_replace(array('/', 'M', 'W', 'S', 'F', '-'), "",$stdnt['idcandidate']);
              if($sex = $stdnt['sex'] == Male){
                  $sex = M;
              }else{ $sex = F; }
              $id_subject = $stdnt['id_subject'];
              $x++;
              $zebra_1 = ($x%2)? 'TableZebra_1': 'TableZebra_2';
      ?>        
      <tr>
          <td class="<?Php echo $zebra_1; ?>"><?php echo $count++; ?></td>    
            <td class="<?Php echo $zebra_1; ?>"><?Php echo $fullname; ?></td> 
            <td class="<?Php echo $zebra_1; ?>"><?php echo $studentid; ?></td>    
            <td class="<?Php echo $zebra_1; ?>"><?php echo $sex; ?></td>
          <td class="<?Php echo $zebra_1; ?>">
            <!-- Problem is here how to output the subject grades $grade -->
            <!-- 
                My first unsuccessful approach  

                SELECT score
                FROM examinations AS test
                INNER JOIN examinfo AS testinfo ON testinfo.idsubject = test.id_subject
                WHERE testinfo.idexam
                IN (

                SELECT idexam
                FROM examinfo
                WHERE idexam = $examinid
                )
                AND test.id_subject = $id_subject AND test.idcandidate = '$studentid'

                Then output results - But this falls it shows one student subjects in one cell
            -->
            </td> 
            <td class="<?Php echo $zebra_1; ?>">Exam</td>
        </tr>        
          <?php   
              } // loop content
          ?>      

    </table>  
 </div>

【问题讨论】:

  • 我们不会为你神奇地编写代码......如果你想尝试并发布它,那么我很乐意帮助你解决代码中的错误......但 Stack Overflow 是不是为你的工作编写代码。你应该从一些研究开始Simple Google Search
  • john ruddell 检查编辑

标签: php html mysql


【解决方案1】:

如果你的解决方案不是 concat();你可以先

按照简单的步骤进行

1 loop $contents // to get info such as studentid
2 inside the loop of $contents loop $subjects // to get all subjects including subjectids
3 inside $subject loop, loop examinations table where studentid = '$studentid' AND subjectid = '$subjectid'
if step three return null echo empty cell otherwise echo cell with score

我没有时间对此进行测试,但您可以按照步骤操作,否则可以尝试谷歌搜索

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多