重新显示一个echo和变量会弄乱我的表?

时间:2011-10-31 20:26:08

标签: php mysql database

我想要的是echo "<p>Average Mark: $average</p>";出现在表格上方而不是表格下方。如果我这样做,虽然问题在于它不会计算平均值,因为回声高于变量。但是如果我移动变量并且在整个表上方使用while循环(我需要while循环来从查询中选择$row[Mark]'字段,因为那是将被平均的字段),它会混乱表的结构。如何在不破坏表结构的情况下在表格上方显示$average, $total, $count等变量和echo "<p>Average Mark: $average</p>";

我试过了$("#record").html(<?php echo "Average Mark: $average"; ?>);但是我在这行上遇到了这个错误: 解析错误:语法错误,意外&#39;(&#39;,期待T_VARIABLE或&#39; $&#39;位于第135行的/web/stud/u0867587/Mobile_app/exam_grade_report.php

下面是当前代码,您可以在while循环中看到$count++; , $total += $row['Mark'];,在底部看到$ average变量和echo。

    <?php

        $result = mysql_query($query);
        mysql_close();

       $("#record").html(<?php echo "Average Mark: $average"; ?>);
     ?>
<div id="record">
    <table border='1'>
          <tr>
          <th>Session ID</th>
          <th>TeacherUsername</th>
          <th>Teacher Name</th>
          <th>Module Number</th>
          <th>Module Name</th>
          <th>Course ID</th>
          <th>Course Name</th>
          <th>Year</th>
          <th>Student Username</th>
          <th>Student Name</th>
          <th>Mark</th>
          <th>Grade</th>
          </tr>
          <?php
           $total = 0;
            $count = 0;
            while ($row = mysql_fetch_array($result)) {
            $count++;
              $total += $row['Mark'];
              echo "
          <tr>
          <td>{$row['SessionId']}</td>
          <td>{$row['TeacherUsername']}</td>
          <td>{$row['TeacherForename']} {$row['TeacherSurname']}</td>
          <td>{$row['ModuleId']}</td>
          <td>{$row['ModuleName']}</td>
          <td>{$row['CourseId']}</td>
          <td>{$row['CourseName']}</td>
          <td>{$row['Year']}</td>
          <td>{$row['StudentUsername']}</td>
          <td>{$row['StudentForename']} {$row['StudentSurname']}</td>
          <td>{$row['Mark']}</td>
          <td>{$row['Grade']}</td>
          </tr>";
            }
            ?>

            </table>
        </div>
        <?php
        $average = (int)($total/$count);
        echo "<p>Average Mark: $average</p>";
      ?>

4 个答案:

答案 0 :(得分:0)

好像是在混合javascriptphp

<?php

    $result = mysql_query($query);
    mysql_close();

   $("#record").html(<?php echo "Average Mark: $average"; ?>); // what is this??
 ?>

答案 1 :(得分:0)

如果您只是将所需内容放在<table>(或任何<tr>)内,但在任何<td>单元格之外,它将显示在表格上方。

答案 2 :(得分:0)

您可以做的是定义表格底部的表格标题。类似的东西:

<table>
    <tbody>
        <tr>
            <td>row1</td>
        </tr>
        <tr>
            <td>row2</td>
        </tr>
    </tbody>
     <thead>
        <tr>
            <th>Average: 20</th>
        </tr>
    </thead>
</table>

答案 3 :(得分:0)

添加另一个答案,因为我对旧的答案有了更好的想法。

在输出表格之前,请输入:

<?php ob_start(create_function('$a','global $average; return "Average Mark: ".$average.$a;)); ?>

表格完成后你定义了$average变量:

<?php ob_end_flush(); ?>