簡體   English   中英

Codeigniter傳遞數據以查看並返回到控制器

[英]Codeigniter pass data to view and back to controller

我有一個有效的CSV上傳文件,它將數據彈出到數據庫中,然后打開一個包含數據表的視圖供用戶查看。

我想做的是在視圖上有一個按鈕,然后開始處理數據,並且僅處理添加的新數據。 如果表中有100條舊行,但是我在上傳時添加了50條新行,那么我只想處理它們。 聽起來很簡單,但我想不出一種方法將數據(要處理的行)傳遞回進行處理的新控制器。 數據位於一個數組(id的數組)中,並且作為變量放在url的末尾有太多內容,因為該數組最多可以包含400個條目

我認為做到這一點的唯一方法似乎太可怕了。 我可以使用json編碼將數組放入數據庫表的單個單元格中,並為此表行指定一個ID。 然后,我可以將ID從視圖傳遞到新控制器並檢索數組。 一定會有更好的辦法?

移動解析CSV的代碼,並將數組構建到其自己的函數中。 我們將說您正在創建一個_parse_csv()方法,該方法將接受$filename作為參數,然后讀取csv,處理數據並返回一個數組。 您可以使用var_export並將已處理的陣列寫入磁盤並以_parse_csv方法加載,而無需重新處理。

private function _parse_csv($filename) {
    // do some stuff with the uploaded csv here
    // return an array of data from the csv
    return $csv_array;
}

在csv上傳中調用此方法,並將上傳的文件名傳遞給它。

您的process data按鈕可以將$filename傳遞給控制器​​/方法,該控制器/方法會將CSV解析為一個數組以進行處理。

使用類屬性定義上傳文件夾。 處理時不傳遞上傳文件夾,僅傳遞文件名。

警告: 如討論這個選項是不安全的。 您將需要采取額外的預防措施,以確保用戶無法通過猜測filename參數來啟動csv處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM