首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历php中的复选框

问循环遍历php中的复选框
EN

Stack Overflow用户
提问于 2012-06-30 03:14:07
回答 4查看 1.9K关注 0票数 0

我有一个动态页面,它从Mysql获取一定数量的房间结果,并以复选框的形式将它们回显出来。因为我在每个结果中没有一个确定的数字,所以我不确定要选中多少个复选框。无论如何,下面是表单中的示例代码:

代码语言:javascript
复制
$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++;
    }

现在,当我提交表单时,我尝试使用一个函数来获得结果,但是我什么也得不到。下面是我接收数据的函数:

代码语言:javascript
复制
//Get all rooms
    $nn = 1;
    $retn = '';
    function roomGroup(){
    foreach ($_POST['room'.$nn] as $key => $value) {
        $retn .= $value.",";
        }
    $nn++;
    return $retn;
    }
$rooms = roomGroup();

我从$rooms变量中什么也得不到。我也尝试了这个函数:

代码语言:javascript
复制
    $nn = 1;
    $retn = '';
    function roomGroup(){
    while(isset($_POST['room'.$nn]))
    {
    $roomsn = $_POST['room'.$nn];
    $retn .= $roomsn.",";
    $nn++;
    }
    return $retn;
    }

如果你对我做错了什么给予帮助,我将不胜感激!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-30 03:23:03

你可以在$_POST数组上循环:

代码语言:javascript
复制
$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;
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-06-30 03:18:50

你正在以一种艰难的方式去做。=)

您可以使用HTML为您创建一个数组,方法是在输入元素名称的末尾添加括号。

代码语言:javascript
复制
while($ro = mysql_fetch_array($getRooms)){    
    $roomName = $ro['HotelRoom'];     
    echo '<input type="checkbox" name="room[]" value="'.$roomName.'" />'.$roomName.'<br />';    
} 

现在,在您的逻辑方面,您可以访问数组。房间复选框将作为一个数组在POST变量中传递。你需要检查一下,确保你至少通过了一些房间。如果你经过了房间,只需这样做:

代码语言:javascript
复制
implode( ", ", $_POST['rooms'] );

此外,如果对您更方便,还可以将name="room[]“设置为”name=[‘.$ro’‘HotelRoom’“。”如果你所有的酒店房间都是独一无二的。然后您可以将该值设置为酒店房间的id。然后,您可以像以前一样执行foreach循环,以保留键值对,而不是在逻辑方面进行内爆。

foreach( $_POST‘’room‘as $hotelRoom => $roomId ){

票数 1
EN

Stack Overflow用户

发布于 2012-06-30 03:21:22

你似乎和variables' scopes有问题。$retn是在函数外部和内部定义的,但是如果您想从函数内部访问外部数组,则必须使用$GLOBALS数组:

代码语言:javascript
复制
$GLOBALS['retn'] .= $roomsn.",";

而不是:

代码语言:javascript
复制
$retn .= $roomsn.",";

或者,实际上更好。只使用局部变量(在这种情况下,全局变量不是很好的做法)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11267663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档