收集来自多个复选框行$ _POSTs [英] Collect $_POSTs from multiple checkbox rows

查看:101
本文介绍了收集来自多个复选框行$ _POSTs的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有复选框的多行,每一个特定ID,正在使用的foreach 循环显示的方式。

你如何抓住从类似的东西 $ _ POST 信息?我想是这样的莫名其妙 $ _ POST [] [] ,就像一个子阵列,但我不能弄清楚如何设置它:

 的foreach($ stakholderArray为$ currentEntry){
    打印< TR类='$的bgcolor'>中;
    打印< TD类='左'> $ currentEntry [有机< / TD>中;    如果($ currentEntry ['dataFound']){
        //如果数据被发现的当前利益相关者,显示它
        打印($ currentEntry ['合作伙伴'])? '< TD><输入类型=复选框检查=选中/>< / TD>' :'< TD><输入类型=复选框/>< / TD>';
        打印($ currentEntry ['协议'])? '< TD><输入类型=复选框检查=选中/>< / TD>' :'< TD><输入类型=复选框/>< / TD>';
        打印($ currentEntry ['火车'])? '< TD><输入类型=复选框检查=选中/>< / TD>' :'< TD><输入类型=复选框/>< / TD>';
        打印($ currentEntry ['迎接'])? '< TD><输入类型=复选框检查=选中/>< / TD>' :'< TD><输入类型=复选框/>< / TD>';
    }
    其他{//else...no利益相关数据,显示空列
        打印< TD><输入类型=复选框/>< / TD>< TD><输入类型=复选框/>< / TD>< TD><输入类型=复选框/>< / TD>< TD><输入类型=复选框/>< / TD>< TD><输入类型=复选框/>< / TD>中;
        打印< / TR>中;
    } ## ##标题


解决方案

这有点相关的问题之前,我回答:<一href=\"http://stackoverflow.com/questions/9073690/is-it-possible-to-post-an-array-from-an-html-form-without-javascript/9073794#9073794\">Is它可以张贴从HTML表单数组没有JavaScript的


  • 包裹于一个形式

  • 给他们一个阵列的名字

  • 他们提交时最终成为在后一个数组

相关项目应该是这样的:名称=项目[集合名称] [收藏名称] [] - 注意有关该组的第一个指标(为了便于位置),和空索引中该组的意思,有一个阵列(而不是单个值)。所以你的复选框:

 &LT;输入类型=复选框NAME =答案[设置1] []值=苹果/&GT; //想象检查
&LT;输入类型=复选框NAME =答案[设置1] []值=橙色/&GT; //想象检查
&LT;输入类型=复选框NAME =答案[设置1] []值=葡萄/&GT;
&LT;输入类型=复选框NAME =答案[设置2] []VALUE =飞机/&GT; //想象检查
&LT;输入类型=复选框NAME =答案[设置2] []VALUE =火车/&GT; //想象检查
&LT;输入类型=复选框NAME =答案[设置2] []VALUE =船/&GT;
&LT;输入类型=复选框NAME =答案[独奏]VALUE =野猪/&GT; //单一类型的价值。注意,没有[]到底

结束了这样的要求阵列中(如说POST):

  $ _ POST [] =数组(
    '答案'=&GT;阵列(
        集1'=&GT;阵列('苹果','橙'),//选中的项目将不包括
        SET2'=&GT;阵列('飞机','火车'),//选中的项目将不包括
        '单飞'=&GT; '公猪'
    )
);


 &LT;表&gt;
    ?&LT; PHP的foreach($ stakeholderArray为$利益相关者):&GT;
    &所述; TR&GT;    &LT; PHP        //声明所以无论这些存在的数据
        $伙伴='';
        $协议='';
        $火车='';
        $满足='';        //如果我们有数据,因此纪念盒
        如果($利益相关者['dataFound']){            $检查='检查=选中';            //标记为检查或空白
            $伙伴=($利益相关者['合作伙伴'])? $检查:'';
            $协议=($利益相关者['协议'])? $检查:'';
            $列车=($利益相关者['火车'])? $检查:'';
            $满足=($利益相关者['迎接'])? $检查:'';        }
    ?&GT;       &LT; TD&GT;&LT;输入值=伙伴NAME =股份[&LT; = $利益相关者&GT;] [伴侣]类型=复选框&LT;?= $伙伴&GT; /&GT;&LT; / TD&GT;
       &LT; TD&GT;&LT;输入值='协议'NAME =股份[&LT; = $利益相关者&GT;] [协议]类型=复选框&LT;?= $协议&GT; /&GT;&LT; / TD&GT;
       &LT; TD&GT;&LT;输入值='火车'NAME =股份[&LT; = $利益相关者&GT;] [火车]类型=复选框&LT; = $训练&GT?; /&GT;&LT; / TD&GT;
       &LT; TD&GT;&LT;输入值='相遇'NAME =股份[&LT; = $利益相关者&GT;] [满足]类型=复选框&LT; = $满足​​&GT?; /&GT;&LT; / TD&GT;    &LT; / TR&GT;
    &LT; PHP endforeach; ?&GT;
&LT; /表&gt;

他们应该结束这样的:

  $ _ POST [] =数组(
    stakeholder1'=&GT;阵列(
        合作伙伴= GT; '伙伴',
        '协议'= GT; '协议',
        '火车'=&GT; '培养',
        '满足'=&GT; '遇到'
    )
    stakeholder2'=&GT;阵列(
        合作伙伴= GT; '伙伴',
        '协议'= GT; '协议',
        '火车'=&GT; '培养',
        '满足'=&GT; '遇到'
    )
);

I have a form with multiple rows of checkboxes, each with a specific id, that are being displayed using a foreach loop.

How do you grab the $_POST info from something like that? I think it is like this somehow $_POST[][], like a sub-array, but I cant figure out how to set it up:

foreach($stakholderArray as $currentEntry) {
    print "<tr class='$bgcolor'>";
    print "<td class='left'>$currentEntry[org]</td>";

    if($currentEntry['dataFound']) {  
        //if data was found for current stakeholder, display it
        print ($currentEntry['Partner']) ? '<td><input type ="checkbox" checked ="checked" /></td>' : '<td><input type ="checkbox"  /></td>';
        print ($currentEntry['Agreement']) ? '<td><input type ="checkbox" checked ="checked" /></td>' : '<td><input type ="checkbox"  /></td>';
        print ($currentEntry['Train']) ? '<td><input type ="checkbox" checked ="checked" /></td>'  : '<td><input type ="checkbox"  /></td>';
        print ($currentEntry['Meet'])  ? '<td><input type ="checkbox" checked ="checked" /></td>' : '<td><input type ="checkbox"  /></td>';
    }
    else {  //else...no stakeholder data, display empty columns
        print "<td><input type ='checkbox'/></td><td><input type ='checkbox'/></td><td><input type ='checkbox'/></td><td><input type ='checkbox'/></td><td><input type ='checkbox'/></td>";
        print "</tr>";
    }## Heading ##

解决方案

it's somewhat related to a question i answered before: Is it possible to POST an array from an HTML form without javascript

  • encase them in a form
  • give them an "array" name
  • they end up as an array during post when submitted

related items should have like this: name="item[collection name][collection name][]" - note the first indices pertaining the set (for easy location), and the empty index meaning in that set, there's an array (instead of single value). so for your check boxes:

<input type="checkbox" name="answers[set1][]" value="apple" />   //imagine checked
<input type="checkbox" name="answers[set1][]" value="orange" />  //imagine checked
<input type="checkbox" name="answers[set1][]" value="grape" />
<input type="checkbox" name="answers[set2][]" value="airplane" />   //imagine checked
<input type="checkbox" name="answers[set2][]" value="train" />  //imagine checked
<input type="checkbox" name="answers[set2][]" value="boat" />
<input type="checkbox" name="answers[solo]" value="boar" /> //single type value. note that there is no [] in the end

end up like this in the request array (like say POST):

$_POST[] = array(
    'answers' => array(
        'set1' => array('apple','orange'),   //unchecked items won't be included
        'set2' => array('airplane','train'), //unchecked items won't be included
        'solo' => 'boar'
    )
);


<table>
    <?php foreach($stakeholderArray as $stakeholder): ?>
    <tr>

    <?php 

        //declare so these exist regardless of data
        $partner   = '';
        $agreement = '';
        $train     = '';
        $meet      = '';

        //if we have data, mark the boxes accordingly
        if($stakeholder['dataFound']){

            $checked = 'checked ="checked"';

            //mark as checked or blank
            $partner   = ($stakeholder['Partner'])   ? $checked: '';
            $agreement = ($stakeholder['Agreement']) ? $checked: '';
            $train     = ($stakeholder['Train'])     ? $checked: '';
            $meet      = ($stakeholder['Meet'])      ? $checked: '';

        }
    ?>

       <td><input value='partner' name="stake[<?= $stakeholder ?>][partner]" type ="checkbox" <?= $partner ?> /></td>
       <td><input value='agreement' name="stake[<?= $stakeholder ?>][agreement]" type ="checkbox" <?= $agreement ?> /></td>
       <td><input value='train' name="stake[<?= $stakeholder ?>][train]" type ="checkbox" <?= $train ?> /></td>
       <td><input value='meet' name="stake[<?= $stakeholder ?>][meet]" type ="checkbox" <?= $meet ?> /></td>

    </tr>
    <?php endforeach; ?>
</table>

they should end up like:

$_POST[] = array(
    'stakeholder1' => array(
        'partner'=> 'partner',
        'agreement'=> 'agreement',
        'train'=> 'train',
        'meet'=> 'meet'
    ),
    'stakeholder2' => array(
        'partner'=> 'partner',
        'agreement'=> 'agreement',
        'train'=> 'train',
        'meet'=> 'meet'
    ),
);

这篇关于收集来自多个复选框行$ _POSTs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆