2012-11-25 95 views
0

我有一個表中PHP其中顯示MySQL查詢的結果。顯示信息當MySQL查詢的結果沒有價值

數據庫表item_em價格是在數據庫表hypermarket_em。有可用的大賣場提供的一些項目是不是在超市中可用的項目細節。因此,當我在表格中顯示價格時,我希望那些沒有價格的單元格爲N/A

所以我的問題是,我嘗試了自己的代碼來顯示信息時,數據庫表字段沒有value.But它不工作,我沒有得到任何錯誤也是如此。任何想法非常讚賞。謝謝。

這裏是我的代碼

$res = mysql_query("SELECT h_id FROM hypermarket_em") or die(mysql_error()); 
echo"<tbody><tr>"; 
while($row = mysql_fetch_array($res)) 
{ 
    $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error()); 
    while($drop_4 = mysql_fetch_array($result)) 
    { 
     echo"<th scope=row>".$drop_4['item_name']."</th>"; 
     $rslt = mysql_query("SELECT price FROM items_em WHERE item_name='".$drop_4['item_name']."' and h_id=".$row['h_id'])or die(mysql_error()); 
     if (mysql_num_rows($rslt) == 0) 
      echo"<td>N/A</td>"; 
     while($drop = mysql_fetch_array($rslt)) 
     { 
      echo"<td>".$drop['price']."</td>"; 
     } 
    } 
} 
echo"</tr></tbody>"; 
+0

嘗試獲得$資源的大小,類似這樣的:'尺寸($水庫)',如果爲零,意味着沒有結果。 – djakapm

+0

我得到錯誤說「大小」是不確定的.. :( – Wafa

+0

你能解釋一下什麼是X軸和Y軸是誰?他們做什麼對應列從hypermarket_em,Y = ITEM_NAME從items_em到? –

回答

0

因此,這裏是我的答案。

$res = mysql_query("SELECT DISTINCT h_id FROM hypermarket_em") or die(mysql_error()); 
echo"<tbody><tr>"; 
while($row = mysql_fetch_array($res)) 
{ 
    $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error()); 
    while($drop_4 = mysql_fetch_array($result)) 
    { 
      echo"<th scope=row>".$drop_4['item_name']."</th>"; 
      $rslt = mysql_query("SELECT price FROM items_em WHERE item_name='".$drop_4['item_name']."' and h_id=".$row['h_id'])or die(mysql_error()); 
     while($drop = mysql_fetch_array($rslt)) 
     { 
      echo"<td>".$drop['price']."</td>"; 
     } 
    } 
} 
$res = mysql_query("SELECT DISTINCT h_id FROM hypermarket_em") or die(mysql_error()); 
while($row = mysql_fetch_array($res)) 
{ 
    $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error()); 
    if(mysql_num_rows($result)<=0) 
     echo"<td>N/A</td>"; 
} 
echo"</tr></tbody>"; 

我不得不執行相同的查詢兩次,因爲我希望項目名稱和價格值的順序。所以我先打印商品名稱,然後只打印價格或「N/A」信息。

謝謝大家的幫助.. :)

0
$data = mysql_fetch_array($res); 
if (!empty($data)) { 
    while($row = mysql_fetch_array($res)) 
    { 
     $result = mysql_query("SELECT item_name FROM items_em WHERE h_id=".$row['h_id'])or die(mysql_error()); 
     while($drop_4 = mysql_fetch_array($result)) 
     { 
     echo"<th scope=row>".$drop_4['item_name']."</th>"; 
     $rslt = mysql_query("SELECT price FROM items_em WHERE item_name='".$drop_4['item_name']."' and h_id=".$row['h_id'])or die(mysql_error()); 
     if (mysql_num_rows($rslt) == 0) 
      echo"<td>N/A</td>"; 
     while($drop = mysql_fetch_array($rslt)) 
     { 
      echo"<td>".$drop['price']."</td>"; 
     } 
     } 
    } 
} else { 
    echo "<td>No record found</td>"; 
} 
+0

這並工作,但正在顯示的消息中錯誤的順序。 – Wafa

1

嘗試扭轉你的mysql_num_rows並檢查是否有>0 rows-

if (mysql_num_rows($rslt) > 0){ 
    while($drop = mysql_fetch_array($rslt)){ 
     echo"<td>".$drop['price']."</td>";} 
} 
else{ 
    echo"<td>N/A</td>";} 

編輯 -

我想你想要做的又是什麼樣的東西這 -

while($drop = mysql_fetch_array($rslt)){ 
    if ($drop['price'] == ''){ 
     echo"<td>N/A</td>";} 
    else{ 
     echo"<td>".$drop['price']."</td>";} 
+0

我想你的代碼,它顯示「N/A」一次。 – Wafa

+0

多少次它應該顯示? – Sean

+0

多次價格對於特定的大賣場項目不可 – Wafa

0

不能確定你想在這裏做什麼,但好像你可能希望簡化查詢也是如此。嘗試是這樣的:

SELECT 
    * 
FROM 
    hypermarket_em h 
    LEFT JOIN items_em i ON (h.h_id = i.h_id); 

使用這個查詢,你可以這樣做:

while($drop = mysql_fetch_array($rslt)){ 
    echo"<td>" . (empty($drop['price']) ? 'N/A' : $drop['price']) . "</td>"; 
}