私は再び PHP の構造に苦労していますが、皆さんは私に多くの助けを与えてくれました。前もって感謝します。今、私は自分自身に新しい挑戦をしました。データベースに次のテーブルがあります。
id | htl_name | city_zone | price | given_date
------------------------------------------------------------------------
1 | Hotel Beach Inn | Cityzone1 | 10.00 | 2012-09-01
2 | Hotel Beach Inn | Cityzone1 | 10.00 | 2012-09-02
3 | Hotel Beach Inn | Cityzone1 | 10.00 | 2012-09-03
4 | Hotel Beach Inn | Cityzone1 | 11.00 | 2012-09-04
5 | Hotel Beach Inn | Cityzone1 | 11.00 | 2012-09-05
6 | Hotel City Inn | Cityzone1 | 15.00 | 2012-09-01
7 | Hotel City Inn | Cityzone1 | 15.00 | 2012-09-02
8 | Hotel City Inn | Cityzone1 | 16.00 | 2012-09-03
9 | Hotel City Inn | Cityzone1 | 16.00 | 2012-09-04
10 | Hotel City Inn | Cityzone1 | 16.00 | 2012-09-05
-------------------------------------------------------------------------
ユーザーがチェックイン日、チェックアウト日を入力して都市ゾーンを選択すると、スクリプトは PHP/MySQL 構造を使用して、必要な都市ゾーンと入力された期間内の日付をフィルタリングします。これまでのところうまく機能していますが、ユーザーが入力したとしましょう:
チェックイン: 2012-09-01
チェックアウト: 2012-09-05
シティゾーン: Cityzone1
出力は次のようになります。
結果1
ホテル: ビーチ イン
夜: 4
チェックイン: 2012-09-01
チェックアウト: 2012-09-05
合計料金: 42.00 --> 宿泊数は 2 泊目からカウントを開始するため、1 泊目の料金は除外されます
結果2
ホテル: シティ イン
夜: 4
チェックイン: 2012-09-01
チェックアウト: 2012-09-05
合計料金: 67.00 --> 宿泊数は 2 泊目からカウントを開始するため、1 泊目の料金は除外されます
これまでに次のスクリプトを実行しました。
//MySQL Select structure that apply filter on user's entered information
$filter1=mysql_query("SELECT * FROM......... ORDER BY htl_name, city_zone, given_date LIMIT 1");
$filtern=mysql_num_rows($filter1);
...
if($filtern>=1){
While($row=mysql_fetch_array($filter1){
$first_hotel_found=$row['htl_name'];
}
// New filter but listing everything within the date period
$new_filter=mysql_query("SELECT * FROM ........ORDER BY htl_name, city_zone, given_date");
$final_price=0;
$output="";
while($row=mysql_fetch_array($new_filter){
$htl_name=$row['htl_name'];
$price=$row['price'];
$final_price=$final_price+$price;
if($htl_name!==$first_hotel_found){
output .='Hotel:'.$htl_name.'<br/>';
... NO WORRIES WITH NUMBER OF NIGHTS AND CHECK-IN / CHECK-OUT DATES
output .='Total Rate:'.$final_price.'<br/>';
//after output the result go back clean up the $final_price and start adding again for the new Hotel
$final_price=0;
//$first_hotel_found assumes the actual $row
$first_hotel_found=$row['htl_name'];
}
} // End of the while
}else{
echo "There are no rates available for the information entered!";
}
}
.... HTML portion ....
<body>
<?php echo $output; ?>
</body>
</html>
問題は、出力に両方のホテルがリストされず、代わりに最後のホテルの名前と最初のホテルの合計料金がリストされることです。
ホテル: シティ イン
夜: 4
チェックイン: 2012-09-01
チェックアウト: 2012-09-05
合計料金: 42.00
プロジェクトを完了するための助けをいただければ幸いです。
どうもありがとうございました。