1

room_extras テーブルの主キーを使用して、追加テキスト フィールドの一意の名前を作成しています。

次に例を示します。

<tr>
    <td><?php echo $extrasInfo['description'] ?></td>
    <td>
        <input type="text" name="extra[<?php echo $extrasInfo['re_id'] ?>]" id="qty" value="0" style="text-align: right" size="5" onKeyPress="return isNumberKey(event)" />
    </td>
    <td align="right"><?php echo number_format($extrasInfo['price'],2) ?></td>
</tr>

ご覧のとおり、このコードを使用して名前が生成されますextra[<?php echo $extrasInfo['re_id'] ?>]

html でのこの結果は次のとおりです。

<tr>
    <td colspan="3"><h3>Economy Room</h3></td>
</tr>
<tr>
    <td>Extra Person</td>
    <td><input type="text" name="extra[19]" id="qty" value="1" style="text-align: right" size="5" onKeyPress="return isNumberKey(event)"></td>
    <td align="right">560.00</td>
</tr>
<tr>
    <td>Breakfast for Extra Person</td>
    <td><input type="text" name="extra[20]" id="qty" value="1" style="text-align: right" size="5" onKeyPress="return isNumberKey(event)"></td>
    <td align="right">150.00</td>
</tr>
<tr>
    <td colspan="3"><h3>Deluxe</h3></td>
</tr>
<tr>
    <td>Extra Person</td>
    <td><input type="text" name="extra[1]" id="qty" value="0" style="text-align: right" size="5" onKeyPress="return isNumberKey(event)"></td>
    <td align="right">730.00</td>
</tr>
<tr>
    <td>Breakfast for Extra Person</td>
    <td><input type="text" name="extra[2]" id="qty" value="0" style="text-align: right" size="5" onKeyPress="return isNumberKey(event)"></td>
    <td align="right">269.00</td>
</tr>

re_idフィールドの値 (つまり)に応じて$extrasInfo['re_id']、配列は次のような異なるキーを返します。

extra[19]
extra[20]
extra[1]
extra[2]

だから私の質問は、「追加」の後に値を取得するにはどうすればよいですか? つまり、19、20、1、および 2 という数字です。

これが私が始めたものです:

$size = count($_POST['extra']);

$i = 0;
while ($i < $size) {
    $qty = $_POST['extra'][$i];
    $re_id = ????; //what should be the code here?

    $query = "$sql_extras="INSERT INTO `lf_bookings_extras`(`re_id`, `booking_number`, `price`, `qty`, `amount`) VALUES ('$re_id','$booking_number','$price','$qty','$amount')";";

    mysql_query($query) or die ("Error in query: $query");

    ++$i;
}
4

1 に答える 1

2

フォーム入力から配列に名前を付けないでくださいextra。そのようにして、その配列をループできます。

$re_id = $_POST['extra'][$i];

と HTML

<input type="text" name="extra[]" id="qty" value="1" style="text-align: right" size="5" onKeyPress="return isNumberKey(event)">

またはあなたが本当にそれをしたい場合

foreach($_POST['extra'] as $key => $val){
    $qty = $val;
    $re_id = $key;
    // $key will be the id passed from input
    // mysql insert
}

mysql_*PS:新しいコードに関数を使用しないでください。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが見えますか? 代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。決められない場合は、この記事を参考にしてください。学習したい場合は、ここに良い PDO チュートリアルがあります。

于 2012-08-25T09:35:37.810 に答える