2016-04-20 3 views
0

Я занимаюсь созданием системы обзора института, и я только что завершил вставку обзоров в базу данных. Однако я исправлю, как отображать пользователю все отзывы, относящиеся к конкретному институту. Ниже мой код для получения информации о рассмотрении вместе с именем человека, который оставил свой отзыв:Распечатайте все обзоры, хранящиеся в базе данных

$get_review_query = "SELECT * FROM reviews WHERE institute_id = {$id}"; 
$result = mysqli_query($connection, $get_review_query); 
if(!$result) { 
    die("Database query failed."); 
}              
$count = mysqli_num_rows($result); 
if($count == 0) { 
    $output = "There're no reviews for this institute."; 
} else { 
    while($row = mysqli_fetch_assoc($result)) { 
     $review_contents = $row['content']; 
     $institute_id = $row['institute_id']; 
     $student_id = $row['student_id']; 
     $date = $row['created_on']; 

     $query_student_name = "SELECT f_name, l_name FROM students 
           WHERE student_id = {$student_id}"; 
     $result1 = mysqli_query($connection, $query_student_name); 
     if(!$result1) { 
      die("Database query failed."); 
     } else { 
      $row1 = mysqli_fetch_assoc($result1); 
      $student_f_name = $row1['f_name']; 
      $student_l_name = $row1['l_name']; 
     } 
    } 
} 

Теперь я хочу, чтобы отобразить отзывы где-то на странице:

<!-- display reviews --> 
     <fieldset> 
     <legend>Reviews for <?php echo $name; ?></legend> 
      <br> 
      <?php 
      foreach($row as $value) { 
       ?> 
      <legend><?php echo $student_f_name . " ". $student_l_name; ?> said:</legend> 
      <div id = "items" class=""> 
       <?php echo $review_contents; ?> 
      </div> 
      <br> 
      <div> 
       <?php echo $date; ?> 
      </div> 
      <?php } ?> 
     </fieldset> 

выше foreach loop не работает. Вероятно, это создает бесконечный цикл. Я попытался использовать цикл for с числом count как максимальным счетчиком, но это тоже не работает. Пожалуйста, предложите цикл for, который печатает все отзывы из базы данных.

+0

Второй цикл не работает, потому что после того, как вы прочитали все результаты, '$ row' является' NULL' и вы не сохранили отдельные результаты любого массива. В первом цикле добавьте результаты в другой массив (или просто выведите их на лету) и покажите эти результаты. – drew010

+0

@ drew010 все еще не может понять. Не могли бы вы дать подробный ответ? – snow

+1

Вы должны получать и хранить данные в массиве. в вашем 'while ($ row = mysqli_fetch_assoc ($ result))' loop напишите что-то вроде '$ myData [] = $ row', а затем сделайте цикл foreach для' $ myData' –

ответ

0

попробовать это

$get_review_query = "SELECT * FROM reviews WHERE institute_id = {$id}"; 
$result = mysqli_query($connection, $get_review_query); 
if(!$result) { 
    die("Database query failed."); 
}              

    $reviews = array(); 
    $count = mysqli_num_rows($result); 
    if($count == 0) { 
     $output = "There're no reviews for this institute."; 
    } else { 
     while($row = mysqli_fetch_assoc($result)) { 
      $query_student_name = "SELECT f_name, l_name FROM students 
            WHERE student_id = {$student_id}"; 
      $result1 = mysqli_query($connection, $query_student_name); 
      if(!$result1) { 
       die("Database query failed."); 
      } else { 
       $row1 = mysqli_fetch_assoc($result1); 
       $row['f_name'] = $row1['f_name']; 
       $row['l_name'] = $row1['l_name']; 
      } 

      $reviews[] = $row; 
     } 
    } 

    if($reviews){ 
    ?> 
     <fieldset> 
      <legend>Reviews for <?php echo $name; ?></legend> 
       <br> 
       <?php 
       foreach($reviews as $review) { 
        ?> 
       <legend><?php echo $review['f_name'] . " ". $review['l_name']; ?> said:</legend> 
       <div id = "items" class=""> 
        <?php echo $review['content']; ?> 
       </div> 
       <br> 
       <div> 
        <?php echo $review['created_on']; ?> 
       </div> 
       <?php } ?> 
      </fieldset> 
    <?php 
    } 
+0

попробовал это. Проблема в том, что только один просмотр отображается n раз. (n - количество отзывов в таблице) – snow

+0

Сколько отзывов в конкретном идентификаторе института указано в вашем коде? – user5200704

+0

есть 3 отзыва от 3 разных пользователей для одного из тестовых случаев. на выходе отображается последний обзор 3 раза – snow