#php #database
#php #База данных
Вопрос:
Посмотрите на код ниже:
<?php
$output = "
<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>
";
$total = 0;
$count = 0;
while ($row = mysql_fetch_array($result)) {
$count ;
$total = $row['Mark'];
$output = "
<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>";
}
$output = " </table>";
$average = (int)($total/$count);
echo "<p>Average Mark: $average</p>";
echo $output;
?>
По какой-то странной причине он не воспроизводит эхо $output
(которое находится в нижней части кода) должным образом. Предполагается, что он выводит таблицу, но вместо этого он отображает эхо 0
, почему он выводит 0
?
Ответ №1:
Вы объединяете стиль JavaScript. Вы хотите:
$output = '';
$output .= 'foobar';
Комментарии:
1. Это сработало, но по какой-то странной причине в нем говорится: Notice: Неопределенная переменная: вывод в /web/stud/u0867587/Mobile_app/exam_grade_report.php в строке 151. Это строка, в которой он имеет «; в конце выходной переменной. Почему он так говорит?
2. Потому что вы пытаетесь объединить переменную, которая еще не была установлена. Либо измените первый на
$output = 'foobar';
или, прежде всего, на весь ваш код, установите$output = '';
Ответ №2:
$output = " ..."
выполняет СЛОЖЕНИЕ, а не объединение. Вы добавляете строку к числу, поэтому PHP как можно лучше преобразует строку в число, что, вероятно, получается как 0
.
Попробуйте
$output .= "...";
вместо этого. Или, что еще лучше, используйте HEREDOC:
$output .= <<<EOL
...
EOL;
Ответ №3:
Using =
попытается добавить «значение» строки, а не объединить ее в PHP.
Используйте .=
вместо этого.
Комментарии:
1. Это сработало, но по какой-то странной причине в нем говорится: Notice: Неопределенная переменная: вывод в /web/stud/u0867587/Mobile_app/exam_grade_report.php в строке 151. Это строка, в которой он имеет «; в конце выходной переменной. Почему он так говорит?
Ответ №4:
Не используйте javascript, plus, но используйте точку php
$output .=
Но вы также $output
должны сначала определить перед использованием .=
.
итак, в результате:
<?php
$output = "";
$output .= "
<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>
";
$total = 0;
$count = 0;
while ($row = mysql_fetch_array($result)) {
$count ;
$total .= $row['Mark'];
$output .= "
<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>";
}
$output .= " </table>";
$average = (int)($total/$count);
echo "<p>Average Mark: $average</p>";
echo $output;
?>
Комментарии:
1. Ваш ответ был таким же, как и у всех остальных. Поиск галочек заставляет вас выглядеть глупо.
2. Это сработало, но по какой-то странной причине в нем говорится: Notice: Неопределенная переменная: вывод в /web/stud/u0867587/Mobile_app/exam_grade_report.php в строке 151. Это строка, в которой он имеет «; в конце выходной переменной. Почему он так говорит?
3. @AlienWebguy: у меня был единственный ответ с комментарием OP. Я удалил комментарий, который я опубликовал
4. @MayurPatel: определите $output перед использованием .= как показано
$output = "";
5. На самом деле мне все равно. Это не так важно.