无法在html表

时间:2017-03-15 21:02:19

标签: php mysql

所以我的问题是在MySqL表中我有值:" minas"和"主题"可能会加倍,但评论"价值会有所不同。如何在表格中显示具有相同"主题"的所有行?和" minas"值而不是最后一个?

另外,如果您对我的写作方式有任何进一步的评论,请随时纠正我

如果你在这里理解有困难,可以看一些照片:
http://imgur.com/gallery/Oa9Jc

这是我的代码(PHP和HTML组合)

<?php

include 'dbconn.php';

 if(isset($_POST['Submit'])) {

   $subject = trim(mysqli_real_escape_string($conn, $_POST['mathima']));
   $month = trim(mysqli_real_escape_string($conn, $_POST['minas']));

   $sql = "SELECT subject, month, comment FROM mathimata WHERE subject = '$subject' AND month = '$month'";

   $result = $conn->query($sql);

   $noresult = "Δεν έχει καταχωρηθεί το συγκεκριμένο μάθημα";

   if ($result->num_rows > 0) {
         // output data of each
         while($row = $result->fetch_assoc()) {
             $comment =  $row["comment"];
              }
            }
          }
  ?>
<!DOCTYPE html>
<html lang="el">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->

    <link rel="icon" href="../../favicon.ico">

    <title>E•Pagkrition</title>

    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    <!-- Custom styles for this template -->
    <link href="cover.css" rel="stylesheet" >

    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <link href="../assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
  </head>

    <body>
      <div class="container">
        <h2>Αποτελέσματα αναζήτησης</h2>
        <p>Εδώ είναι το μάθημα που επέλεξες</p>
        <table class="table">
          <thead>
            <tr>
              <th>Μάθημα</th>
              <th>Μήνας</th>
              <th>Περιγραφή</th>
            </tr>
          </thead>
          <tbody>
        <tr>
          <td><?php echo "$subject"; ?></td>
          <td><?php echo "$month"; ?></td>
          <td><?php if (isset($comment)) {
            echo $comment;
          } else {
            echo $noresult;
          }?></td>
        </tr>
      </tbody>
    </table>
  </div>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

您可以在循环外部初始化一个空数组,例如在循环中可以保存其中的所有项目。

if ($result->num_rows > 0) {
  // initialize your array here 
        $comments = [];
        // output data of each
        while($row = $result->fetch_assoc()) {
        $comments[] =  $row["comment"]; // save your values inside the array
    }
 }

在您的视图中,您可以遍历数组并回显值。

foreach($comments as $comment) {
 // echo your values here
  echo $comment
}

但我认为最好的答案是Xorifelse的答案。

答案 1 :(得分:0)

所以,这是你的情景,

您正在循环数据库结果,然后每次都将结果定义到同一个变量。

因此,不是将值存储在单个变量中,而是在每个迭代中附加它的值,您需要将它存储在这样的数组中:

if ($result->num_rows > 0) {
    // output data of each
    $comments = [];
    while($row = $result->fetch_assoc()) {
        $comments[] =  $row["comment"];
    }
}

然后在你的表中,迭代你的注释数组并构建你的html:

foreach ($comments as $comment) {
    $template = '';
    $template .= '<tr>';
    $template .= '<td>' . $subject . '</td>';
    $template .= '<td>' . $month . '</td></td>';
    if (isset($comment)) {
        $template .= $comment;
    } else {
        $template .= $noresult;
    }
    $template .= '</td></tr>';
    echo $template;
}

答案 2 :(得分:0)

直接将循环包含到html中就可以这样完成:

<tbody>
  <?php
    // you should execute your query here.
    if ($result->num_rows > 0){
      while($row = $result->fetch_assoc()){
        echo '<tr>';
        echo '<td>', $row['subject'], '</td>';
        echo '<td>', $row['month'],   '</td>';
        echo '<td>', $row['comment'], '</td>';
        echo '</tr>';
      }
    }
 ?>
</tbody>

这或多或少是一个工作示例,但如果有实际结果,您可能只想打印表格。这意味着您只应在if语句中打印html表。