【问题标题】:HTML Form Select and Arrays, PHPHTML 表单选择和数组,PHP
【发布时间】:2013-10-25 16:55:02
【问题描述】:

我有一个包含多行和每行多个“选择”下拉菜单的表单。为简单起见,我在此示例中显示了 2x2,但实际上它可以达到 5x5。

在简化形式中,我的 HTML 表单如下所示:

<form action="aaa2.php" method="post" name="book">

<?php $roomNumber=101; ?> 
Normal Occupancy 
<select name="occupancy[101]"> 
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Extra Beds
<select name="extrabed[101]"> 
<option value="1">1</option>
<option value="2">2</option>
</select>
<br><br>
<?php $roomNumber=101; ?>
Normal Occupancy 
<select name="occupancy[102]"> 
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Extra Beds
<select name="extrabed[102]"> 
<option value="1">1</option>
<option value="2">2</option>
</select>
<br><br>

<input name="Submit" type="submit" value="submit">
</form>

在下一页,我可以轻松地显示第一个下拉菜单中的信息:

<?php 
$occupancy_array=$_POST['occupancy'];
foreach($occupancy_array as $roomNumber=>$occupancy) {
echo "Room ".$roomNumber.". Normal occupancy is ".$occupancy.".<br>";   
}
?>

当我尝试使用第二个下拉菜单中的信息时,我的问题就出现了。我已经走到这一步了

<?php 
$occupancy_array=$_POST['occupancy'];
$extrabed_array=$_POST['extrabed'];
foreach($occupancy_array as $roomNumber=>$occupancy) {
echo "Room ".$roomNumber.". Normal occupancy is ".$occupancy." and the room will take ".$extrabed." extra beds.<br>";   
}
?>

但显然我需要另一个 foreach 行用于第二个数组。我已经连续尝试过它,并且我已经尝试将它嵌套在第一个 foreach 中,但都不能正常工作。有没有一种方法可以将它们全部合并到一个 foreach 中?或者我应该怎么做?

【问题讨论】:

  • 你的意思是把occupancyextrabed结合在一起?
  • 是的。我需要能够为每个房间号构建包含入住率和加床信息的下一页。
  • 那么问题出在哪里?你不想有两个foreachs?
  • 我想我明白了。您可以使用$roomNumber 使用加床。 foreach 中的 $extrabed_array[$roomNumber] 之类的东西。

标签: php html arrays forms


【解决方案1】:

试试这个:

<?php 

$occupancy_array=$_POST['occupancy'];
$extrabed_array=$_POST['extrabed'];

foreach($occupancy_array as $roomNumber => $occupancy) {
    echo "Room $roomNumber. Normal occupancy is $occupancy and the room will take ".$extrabed_array[$roomNumber]." extra beds.<br>";   
}

你应该小心注入,因为任何用户都可以发送请求

occupancy[<script>...</script>] = <script>...</script>

【讨论】:

  • 感谢重新编码。那工作得很好。现在我将负责将这种逻辑放入真实的事物中。我同意你关于注射的观点,但这只是解决我的问题的一个非常简单的例子。我删掉了所有多余的东西。
  • @TrapezeArtist 是的,这只是一个通知,有足够多的人忘记了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
相关资源
最近更新 更多