2015-07-09 81 views
0

所以,我很難找出這個問題。我使用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

什麼是該選擇的

+0

'populateDropDown'顯然是我們在這裏沒有看到的一些框架 – 2015-07-09 22:47:49

+0

從我收集的'populateDropDown'是一個自定義的函數,前三行代碼是從這個函數中抽取的,我認爲你需要做更多的描述,你可以發佈完整的表單代碼嗎?我想你可能忘了將'form'提交方法'POST'。 – jeteon

回答

1

你爲什麼不也與工作表標題發送隱藏的價值,給隱藏的輸入,你是知道的名稱,然後你可以從$ _POST搶陣列。

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

然後在表單發佈之後,在您的處理腳本中,您可以獲取該值並將其用於識別您的選擇框。

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

$selectdata = $_POST[$value]; 
+0

謝謝,我認爲這是最簡單的方法。 – Kyle

+0

不用擔心,很高興我可以幫忙 – DJC

1

你想要做什麼是重塑你的選擇框的命名,在HTML嘗試使選擇框的值到一個數組:

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

然後,當你拿到$_POST數據,可以通過陣列運行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; 
    } 
} 

這將讓您使用的值,這是一點點LO嗯,但你的問題似乎是刪節,所以我工作了一段很長的路。將選擇選項放入數組的原因是,使用foreach訪問數組鍵(因此工作表名稱)很簡單。