2012-02-19 18 views
0

私はカートの配列からアイテムを保持するmysqlテーブルを持っています。 item_id、size、quantityの3つの行には2の注文IDがあります.3つの行には2の注文IDがあります。これらの項目の注文番号と名前を保持するordersという別のテーブルがあります、アドレスなど私は各注文番号とその注文番号に一致する項目を印刷することができるようにしたいが、注文番号を繰り返して3回印刷すると、とにかく注文番号を持つことができる:1これ以下のアイテム?は1つの注文番号とその番号に関連付けられたアイテムを印刷します

このクエリは、正しい情報をプリントアウトしたが受注3回

$sql = mysql_query("SELECT transactions.*, orders.orderid, orders.date 
FROM transactions 
LEFT JOIN orders 
ON transactions.orderid=orders.orderid 
WHERE orders.userid = '$userID'"); 
+0

にクエリが(あなたがここでは示されていない)結果セットをループするコードがありません...変更する必要はありません...あなたそのループコードにテストを入れ、実際に変更されたときにオーダーIDを表示する必要がある –

+0

オーダーIDが変更されたかどうかをチェックするif文をどのように書くことができますか? –

答えて

0

ビルFlyingFoXの例

$currentOrderId = 0; 
while ($row = mysql_fetch_assoc($sql)){ 
    if ($currentOrderId != $row["orderid"]){ 
     // put everything that shall only be written once here. 
     echo $row["orderid"]; 
     $currentOrderId = $row["orderid"]; 
    } 
    // put everything that shall be written for every row here. 
    echo $row["date"]; 
} 
+0

ありがとうございました!これはしばらく私を悩ませていて、完璧に働いています。 –

1

するmysql_queryは技術的には全く何も表示されない表示されます。それはあなたのデータベースからあなたのデータを照会するだけで、あなたが望むものと一緒にローカルにアクセスできるようにします。 実際に変更する必要があるのは、表示コードです。あなたが意図したとおりに動作するには、次のように見えます。

first = true; 
while ($row = mysql_fetch_assoc($sql)){ 
    if (first){ 
     // put everything that shall only be written once here. 
     echo $row["orderid"]; 
     first = false; 
    } 
    // put everything that shall be written for every row here. 
    echo $row["date"]; 
} 
+0

ありがとうございます、この後は次の注文番号が表示されませんが、ユーザーが3番と4番の2番の注文番号を持っている場合は3番です。 –

関連する問題