javascript - 如何在 View 之间来回维护代码点火器php中的文件读取指针?

标签 javascript php jquery codeigniter file-upload

我有一个 Code Igniter Controller ,它读取上传的记录文件(excel、csv、tsv、xml 等)并将每一行作为记录写入数据库。作为文件中第一列的记录 ID 应该是唯一的。如果它已经存在于数据库中,那么在读取文件时我应该发出警报,并且根据用户的响应我将覆盖或跳过该记录并继续处理其他记录。

但是一旦我抛出警报并到达 View ,我就失去了对 Controller 的控制并且我不知道让文件指针保持滴答作响以便在收到用户的响应后我可以继续读取。

是否有解决此问题的方法,或者我们是否有其他替代方法?

最佳答案

假设我有一个这样的文件:

Roll, Name, Age, Subject
1, Praveen, 25, Cloud Computing
2, Sri Ram, 25, Cloud Computing
3, Dhiwa, 23, Computer Science
4, Vennila, 25, Cloud Computing
5, Arun, 22, Computer Science

作为 CSV 文件,我会使用 PHP 的内置函数读取它 str_getcsv以这种方式读取文件:

$csv = array_map('str_getcsv', file('data.csv'));

我会通过解析数组的第一个值来获取记录的 Roll 的集合,它是唯一条目的集合,这样我会得到如下内容:

Array (
  1,
  2,
  3,
  4,
  5
)

最后我假设数据库已经具有类似的结构,例如:

+--------+------+-----+---------+
| UserId | Name | Age | Subject |
+--------+------+-----+---------+

因此,现在我将使用 SQL 的 GROUP_CONCAT 函数将所有 UserId 组合在一起并按如下方式获取:

$UserIdsFromDB = get_first_row_value("SELECT GROUP_CONCAT(`UserId`) FROM `Users`");

我会把它作为一个数组来解析,并以这种方式在 $UserIdsFromDB 中得到结果:

Array (
  5,
  17,
  22,
  23,
  55,
  56
  57
)

我可以轻松使用 PHP 的内置函数 array_intersect找到那些重复的值,这给了我:

Array (
  5
)

使用简单的 AJAX 调用,我会询问是否需要替换 5 用户或所有用户,这样:

get_user_name(5)                  // Gets the name of the user with ID 5.
count($Array_Intersect_Result)    // Gets the number of matching users.

我希望这能让您有所了解。让我知道进展如何。

关于javascript - 如何在 View 之间来回维护代码点火器php中的文件读取指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884396/

相关文章:

javascript - 如何在 WebdriverIO 中点击 CTRL+M (Control + M)

Javascript(使用 Phaser)错误显示游戏颜色 - 括号

javascript - 无法切换向左滑动 div

javascript - jsFiddle 中的空白 element.style.width 属性

javascript - PhantomJS 页面转储脚本问题

javascript - 如何在弹出窗口中发送选定的下拉值

php - 是否可以使用 Behat/Mink 从 HTML 表中获取值

PHP - 在 mysqli 查询中使用数组

javascript - for 循环和动画,不能使用变量,因为由于关闭而改变

jquery - 更新 meteor 模板后运行函数