所以,我很难搞清楚这个。我使用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函数的全部内容
答案 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
访问数组键(因此工作表名称)是微不足道的。