2

問題が発生しました。mysqlに挿入する編集ページを追加しようとしているフォームがあります。1つのテーブルからすべての部屋を取得しているので、別のテーブルでそれらが「チェック」されているかどうかを確認する必要があります。

Table 1 (HotelRooms):
ID | HotelRoom | Hid
---------------------
1  | Standard  | 20
2  | Deluxe    | 20
2  | Basic     | 20

Table 2 (HotelPromos)
ID | Promo | Rooms | Hid
-------------------------
1  | 10%   | deluxe, standard | 20

今、私のフォームでは、最初にHid20のホテルに属するすべての部屋を見つける必要があります。そのための私の選択ステートメントは次のとおりです。

<?php 
$getRooms = mysql_query("SELECT HotelRoom FROM HotelRooms WHERE HotelId = '$hid'") or die(mysql_error());
$rr = 1;
$numRooms = mysql_num_rows($getRooms);
if($numRooms == 0){
    echo "Lo sentimos pero no hay habitaciones registrados para este hotel. Favor de agregar habitacion para poder agregar una promocion.";
    }
while($ro = mysql_fetch_array($getRooms)){
    $roomName = $ro['HotelRoom'];
    ?>
    <input type="checkbox" name="room<?php echo $rr ?>" /><?php echo $roomName ?>
    <?php
    $rr++;
    }
?>

HotelPromosテーブルをチェックして、Rooms列の下にあるかどうかを確認し、checked = "checked"を追加する方法を知っている人はいますか?

どんな助けでも大いに感謝されるでしょう!!!

4

2 に答える 2

1

BasicのIDは実際には2ではなく3であり、これはタイプミスだと思います。

まず、HotelPromosでは、名前(Deluxe、Standard)ではなく、部屋ID(1、2)を使用する必要があります。

次に、データベースの正規化の一部である「第一正規形」に準拠するために、HotelPromosを2つのテーブルに分割する必要があります。

はい、これは設計が少し難しく、コードを変更する必要がありますが、複雑なクエリを作成するのがはるかに簡単になります。

PromoCodes
ID | Promo
----------
1  | 10%

HotelPromos
RoomID | PromoID
----------------
1      | 1
2      | 1

これで、ホテルIDに一致するすべての部屋を取得できます

SELECT HotelRooms.ID, HotelRooms.HotelRoom as Name, HotelPromos.PromoID
    FROM HotelRooms
    LEFT JOIN HotelPromos
        ON HotelRooms.ID = HotelPromos.RoomID
    WHERE HotelId = '$hid'

つまり、プロモーションの有無に関係なく、ホテル20のすべてのLEFT JOIN部屋が欲しいということです。PromoIDは、プロモーションコードのIDか、使用可能なコードがない場合のいずれかになります。これを使用して、チェックボックスをオンにするかどうかを決定できます。NULL

while( $ro = mysql_fetch_assoc($getRooms) ){
    $roomName = $ro['Name'];
?>
<input type="checkbox" name="room<?= $rr ?>" <?php if( $ro['PromoID'] ) { echo 'checked="checked" '; } ?>/><?php echo $roomName ?>
<?php
    $rr++;
}

$ro['ID']そして最後に、新しい変数の代わりに使用する必要があると思います$rr

于 2012-06-30T00:46:54.040 に答える
0

テーブルスキーマについてはわかりませんが、次のようになります。次に、idが設定されているかどうかを確認します。PS、あなたの入力をエスケープしてください!

SELECT HotelRoom, hp.id
FROM HotelRooms AS hr
LEFT OUTER JOIN HotelPromos AS hp ON hp.hid=hr.id
WHERE HotelId = '$hid'"
于 2012-06-29T20:27:05.477 に答える