2013-03-28 71 views
0

我試圖讓while循環顯示從表中選擇的所有記錄,並迭代封裝在< div>中的結果。我的查詢正在工作,並且正在顯示一些內容......但只有最新的記錄。我無法弄清楚爲什麼會這樣,而且我對PHP很陌生,所以任何幫助都會很棒。PHP/MySQL - while循環只顯示最近輸入的記錄

代碼:

<?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> 

回答

4

你覆蓋$display_block每個循環迭代:

$display_block = "<div class=\"inner\">"; 

循環之前將其定義,然後將上面的行更改爲:

$display_block .= "<div class=\"inner\">"; 
+0

我知道這將是一個小的東西....謝謝! –

0

試着改變你的一段時間:

while($feat_array = mysql_fetch_array($r_get_features, MYSQLI_ASSOC)) { 
... 
3

通過

$display_block .= "<div class=\"inner\">"; 
1
$display_block = "<div class=\"inner\">"; 

替換該行

$display_block = "<div class=\"inner\">"; 

是while循環裏面,所以每次迭代一次得到一個新值,不保持前一。

2

因爲

$display_block = "<div class=\"inner\">"; 

是循環 在內部循環,同時在div被instanstiated每次迭代後左右....

您需要保留舊的值,所以你必須來連接它。 .. 取代它

$display_block .= "<div class=\"inner\">";