echo выводит «0», а не таблицу

#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. На самом деле мне все равно. Это не так важно.