PHP:具有变量名称的输入的$ _POST

时间:2015-07-09 22:39:09

标签: php

所以,我很难搞清楚这个。我使用Excel中的值填充选择框,并为选择框提供工作表的名称。

function populateDropDown($excelSheet) {
$objPHPExcel = PHPExcel_IOFactory::load($excelSheet, $num);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $worksheetTitle     = $worksheet->getTitle();
    $highestRow         = $worksheet->getHighestRow(); // e.g. 10
    $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $nrColumns = ord($highestColumn) - 64;
    echo '<select name= ' . $worksheetTitle . '>';
    for ($row = 1; $row <= $highestRow; ++ $row) {

        for ($col = 0; $col < $highestColumnIndex; ++ $col) {
            $cell = $worksheet->getCellByColumnAndRow($col, $row);
            if ($col == 0) {
                $id = $cell->getValue();
            } else if ($col == 1) {
                $val = $cell->getValue();
            }
        }
        echo '<option value=' . $id . '>';
        echo $val;
        echo '</option>';
    }
    echo '</select>';
}
return $worksheetTitle;
}

在此函数结束时,我返回标题,并将其存储在表单页面的变量中。

<?php $selectBox1 = populateDropDown("workbook1.xlsx"); ?>

提交表单时,如何获取此变量的数据?我没有工作就尝试了以下内容:

$var = $_POST[$selectBox1];
$var = $_POST['$selectBox1'];
$var = $selectBox1;

硬编码工作表名称有效:

$var = $_POST['Sheet1'];

所以,我很肯定这是变量的问题。我很抱歉,如果之前有人询问,我搜索了很长时间但没有发现任何有用的东西。谢谢你的帮助!

同样,为了澄清我的问题,当选择框的名称用变量命名时,如何使用$ _POST从选择框中获取数据?

编辑:添加了populateDropDown函数的全部内容

2 个答案:

答案 0 :(得分:1)

为什么不通过工作表标题发送隐藏值,为隐藏的输入提供您知道的名称,然后您可以从$ _POST数组中获取。

<input type="hidden" name="my-select-name" value="<?php echo $worksheetTitle;?>">

然后在发布表单后,在处理脚本中,您可以获取值并使用它来标识您的选择框。

$value = $_POST['my-select-name'];

$selectdata = $_POST[$value];

答案 1 :(得分:1)

您要做的是重新设置您的选择框的命名,在HTML中尝试将选择框值设置为数组:

<select name='[select][".$worksheetTitle."]'>
<option>...</option>
</select>

然后当你得到$_POST数据时,你可以通过[select]数组运行foreach,这将是一个1值的数组:

if (count($_POST['select']) > 0 ){
    foreach ($_POST['select'] as $key=>$value){
        $this_is_the_worksheet_name = $key;
        $this_is_the_worksheet_select_value = $value;
    }
}

这将使您可以访问这些值,这有点冗长,但您的问题似乎有所缩减,所以我已经做了很长一段时间。将选择选项放入数组的原因是foreach访问数组键(因此工作表名称)是微不足道的。