如何使用主键中的值获取数组的值

时间:2012-08-25 09:27:30

标签: php html

我正在使用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;
}

1 个答案:

答案 0 :(得分: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
}

PS:请不要将mysql_*函数用于新代码。它们已不再维护,社区已开始deprecation process。请参阅red box?相反,您应该了解prepared statements并使用PDOMySQLi。如果您无法决定,this article将有助于选择。如果您想学习,here is a good PDO tutorial