2

私は2つのテーブルを持っています:

部屋
room_id>>>room_name

フットマッサージ1回
2 フェイスマッサージ
3 背中のマッサージ

注文room_id
>>>start_date>>>>>>>end_date>>>>>>>>price

1 2012.09.10 2012.09.11 100
1 2012.09.11 2012.09.13 200
2 2012.11.11 2012.11.13 100
3 2012.12.11 2012.12.13 500

私はこのような結果を出力したい:

部屋番号 1:

2012.09.10 2012.09.11 100
2012.09.11 2012.09.13 200

部屋番号 2:

2012.11.11 2012.11.13 100

部屋番号 3:

2012.12.11 2012.12.13 500

コード:

$query_spa = "SELECT 
rooms.room_id,
rooms.room_name,
orders.start_date,
orders.end_date,
orders.price
FROM rooms
INNER JOIN orders
ON
 rooms.room_id =orders.room_id";

 $spa = mysql_query($query_spa, $localhost) or die(mysql_error());
 $results = array();
 while($line = mysql_fetch_array($spa, MYSQL_ASSOC)){
$results[] = $line;
  }


  $groups = array();
 foreach($results as $item)
 $groups[$item['room_id']][] = $item;
  foreach($groups as $value => $items)
      echo 'room number ' . $value . ' : ' ;
for ($i=0; $i< count($items);$i++)
{
echo $items[$i]['start_date'] ;
echo $items[$i]['end_date'] ;
echo $items[$i]['price'] ;
}

出力:

部屋番号 1: 部屋番号 2: 部屋番号 3: 2012.12.11 2012.12.13 500

4

1 に答える 1

4

これを試してください:

$groups = array();
foreach($results as $item)
    $groups[$item['room_id']][] = $item;

foreach($groups as $value => $items)
{
    echo 'room number ' . $value . ' : ' ;
    foreach ($items as $item)
    {
        echo $item['start_date'] ;
        echo $item['end_date'] ;
        echo $item['price'] ;
    }
}

単純な foreach を使用してサブアイテムをループできます。ただし、取得ステップでグループの並べ替えを行う方が適切です。

while($line = mysql_fetch_array($spa, MYSQL_ASSOC)){
    $groups[$line['room_id']][] = $line;
}

したがって、フェッチした直後にソートされた結果が得られました。

于 2012-09-12T08:15:35.600 に答える