所以我的问题是在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>
答案 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表。