[英]PHP/MySQL - while loop only showing latest entered record
我试图让while循环显示从表中选择的所有记录,并迭代封装在<div>中的结果。 我的查询正在运行,而一会儿正在显示某些内容……但仅显示最新记录。 我不知道为什么会这样,而且我对PHP还是很陌生,所以任何帮助都会很棒。
码:
<?php
//Connect to database and select table
$conn = mysql_connect("", "", "") or die(mysql_error());
mysql_select_db("substest", $conn) or die(mysql_error());
//Issue query
$get_features = "SELECT ID, Title, DateReceived, Synopsis FROM features ORDER BY ID";
$r_get_features = mysql_query($get_features) or die(mysql_error);
if(mysql_num_rows($r_get_features) < 1) {
$display_block = "<div class=\"inner\"><h2>Nothing to display</h2></div>";
}
else {
while($feat_array = mysql_fetch_array($r_get_features)) {
$feat_id = $feat_array["ID"];
$feat_title = stripslashes($feat_array["Title"]);
$feat_dater = stripslashes($feat_array["DateReceived"]);
$feat_synopsis = stripslashes($feat_array["Synopsis"]);
$display_block = "<div class=\"inner\">";
$display_block .= "<h2>".$feat_title."</h2>";
$display_block .= "<label for \"id\">ID:</label>";
$display_block .= "<span class=\"formresult\" id=\"id\">".$feat_id."</span><br />";
$display_block .= "<label for=\"title\">Title:</label>";
$display_block .= "<span class=\"formresult\" id=\"title\">".$feat_title."</span><br />";
$display_block .= "<label for=\"datereceived\">Date Received:</label>";
$display_block .= "<span class=\"formresult\" id=\"datereceived\">".$feat_dater."</span><br />";
$display_block .= "<label for=\"synopsis\">Synopsis:</label>";
$display_block .= "<span class=\"formresult\" id=\"synopsis\">".$feat_synopsis."</span><br />";
$display_block .= "</div>";
}
}
?>
<html>
<head>
<title>Galway Film Fleadh - View Submitted Feature Films</title>
<link href="css/submissions.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div class="inner">
<h1>Galway Film Fleadh - View Submitted Films</h1>
</div>
<?php
print $display_block;
?>
</div>
</body>
</html>
您将为每次循环迭代覆盖$display_block
:
$display_block = "<div class=\"inner\">";
在循环之前定义它,然后将上面的行更改为此:
$display_block .= "<div class=\"inner\">";
替换这条线
$display_block = "<div class=\"inner\">";
通过
$display_block .= "<div class=\"inner\">";
以来
$display_block = "<div class=\"inner\">";
在循环内部,因此在while循环中进行每次迭代后,div都会实例化..
您需要保留旧值,因此必须将其串联起来...替换为
$display_block .= "<div class=\"inner\">";
$display_block = "<div class=\"inner\">";
在while循环中,因此每次迭代都会得到一个新值,并且不保存前一个值。
尝试将您的时间更改为:
while($feat_array = mysql_fetch_array($r_get_features, MYSQLI_ASSOC)) {
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.