0

MySQLクエリの結果を表示するPHPのテーブルがあります。

データベース テーブルitem_emには、データベース テーブル hypermarket_em で入手可能なハイパーマーケットで入手可能なアイテムの価格詳細があります。ハイパーマーケットで入手できないアイテムがいくつかあります。したがって、表に価格を表示するときに、価格のないセルをN/Aとして表示します。

だから私の問題は、データベーステーブルフィールドに値がないときにメッセージを表示するコードを自分で試したことです.しかし、それは機能せず、エラーも発生しません. どんなアイデアでも大歓迎です。ありがとうございました。

これが私のコードです

$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>";
4

4 に答える 4

1

あなたを逆にしてみて、行mysql_num_rowsがあるかどうかを確認してください->0

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>";}
于 2012-11-25T09:03:21.957 に答える
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>";
}
于 2012-11-25T08:55:19.827 に答える
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>";

注文に商品名と価格値が必要なため、同じクエリを 2 回実行する必要がありました。そのため、最初に商品名を印刷し、次に価格または「N/A」メッセージのみを印刷します。

皆様のご協力ありがとうございます。:)

于 2012-11-27T06:38:37.853 に答える
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>";
}
于 2012-11-25T09:07:14.787 に答える