我有一个动态页面,它从Mysql获取一定数量的房间结果,并以复选框的形式将它们回显出来。因为我在每个结果中没有一个确定的数字,所以我不确定要选中多少个复选框。无论如何,下面是表单中的示例代码:
$rr = 1;
while($ro = mysql_fetch_array($getRooms)){
$roomName = $ro['HotelRoom'];
?>
<input type="checkbox" name="room<?php echo $rr ?>" value="<?php echo $roomName ?>" /><?php echo $roomName ?>
<?php
$rr++;
}现在,当我提交表单时,我尝试使用一个函数来获得结果,但是我什么也得不到。下面是我接收数据的函数:
//Get all rooms
$nn = 1;
$retn = '';
function roomGroup(){
foreach ($_POST['room'.$nn] as $key => $value) {
$retn .= $value.",";
}
$nn++;
return $retn;
}
$rooms = roomGroup();我从$rooms变量中什么也得不到。我也尝试了这个函数:
$nn = 1;
$retn = '';
function roomGroup(){
while(isset($_POST['room'.$nn]))
{
$roomsn = $_POST['room'.$nn];
$retn .= $roomsn.",";
$nn++;
}
return $retn;
}如果你对我做错了什么给予帮助,我将不胜感激!
发布于 2012-06-30 03:23:03
你可以在$_POST数组上循环:
$rooms = "";
$first = true;
foreach($_POST as $key => $value) {
if(strlen($key) >= 4 && substr($key,0,4) == "room") {
if($first) {
$rooms .= $value;
$first = false;
}
else
$rooms .= ",".$value;
}
}发布于 2012-06-30 03:18:50
你正在以一种艰难的方式去做。=)
您可以使用HTML为您创建一个数组,方法是在输入元素名称的末尾添加括号。
while($ro = mysql_fetch_array($getRooms)){
$roomName = $ro['HotelRoom'];
echo '<input type="checkbox" name="room[]" value="'.$roomName.'" />'.$roomName.'<br />';
} 现在,在您的逻辑方面,您可以访问数组。房间复选框将作为一个数组在POST变量中传递。你需要检查一下,确保你至少通过了一些房间。如果你经过了房间,只需这样做:
implode( ", ", $_POST['rooms'] );此外,如果对您更方便,还可以将name="room[]“设置为”name=[‘.$ro’‘HotelRoom’“。”如果你所有的酒店房间都是独一无二的。然后您可以将该值设置为酒店房间的id。然后,您可以像以前一样执行foreach循环,以保留键值对,而不是在逻辑方面进行内爆。
foreach( $_POST‘’room‘as $hotelRoom => $roomId ){
发布于 2012-06-30 03:21:22
你似乎和variables' scopes有问题。$retn是在函数外部和内部定义的,但是如果您想从函数内部访问外部数组,则必须使用$GLOBALS数组:
$GLOBALS['retn'] .= $roomsn.",";而不是:
$retn .= $roomsn.",";或者,实际上更好。只使用局部变量(在这种情况下,全局变量不是很好的做法)。
https://stackoverflow.com/questions/11267663
复制相似问题