#php #mysql #database
#php #mysql #База данных
Вопрос:
Я хочу echo "<p>Average Mark: $average</p>";
, чтобы они отображались над таблицей, а не под таблицей. Если я сделаю это, проблема в том, что он не будет вычислять среднее значение, поскольку echo находится выше переменной. Но если я перемещу переменную и вместе с ней цикл while над всей таблицей (мне нужен цикл while для выбора $row[Mark]'
поля из запроса, поскольку это поле, которое будет усредняться), это испортит структуру таблицы. Как я могу отобразить переменные $average, $total, $count
etc и echo "<p>Average Mark: $average</p>";
над таблицей, не нарушая структуру таблицы?
Я пытался $("#record").html(<?php echo "Average Mark: $average"; ?>);
, но я получаю эту ошибку в этой строке: Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный ‘(‘, ожидающий T_VARIABLE или ‘$’ в /web/stud/u0867587/Mobile_app/exam_grade_report.php в строке 135
Ниже приведен текущий код, и вы можете увидеть $count ; , $total = $row['Mark'];
в цикле while и переменную $ 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>";
?>
Ответ №1:
Похоже, вы смешиваете javascript
с php
:
<?php
$result = mysql_query($query);
mysql_close();
$("#record").html(<?php echo "Average Mark: $average"; ?>); // what is this??
?>
Комментарии:
1. Кто-то сказал мне попробовать это, не знаю, что это значит
Ответ №2:
Если вы просто поместите нужный материал внутри <table>
(или любого <tr>
), но вне любых <td>
ячеек, он появится над таблицей.
Комментарии:
1. Я не думаю, что валидаторам W3C понравится такое решение.
2. Верно. Хорошо, я добавлю лучший ответ: p
Ответ №3:
Что вы можете сделать, так это определить заголовки таблиц внизу таблицы. Что-то вроде:
<table>
<tbody>
<tr>
<td>row1</td>
</tr>
<tr>
<td>row2</td>
</tr>
</tbody>
<thead>
<tr>
<th>Average: 20</th>
</tr>
</thead>
</table>
Ответ №4:
Добавляю еще один ответ, потому что у меня была идея получше моей старой.
Перед выводом таблицы поместите:
<?php ob_start(create_function('$a','global $average; return "Average Mark: ".$average.$a;)); ?>
И после того, как таблица будет готова, и вы определили свою $average
переменную:
<?php ob_end_flush(); ?>