使用php或CodeIgniter替换CSV文件中的现有数据

时间:2014-03-10 08:14:48

标签: php codeigniter csv

如果php中的a write end of file w write beginning of file <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Datacast_ctr extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('csvreader'); $this->load->helper('csv'); } public function index() { $this->load->library('csvreader'); $filePath = 'C:\xampp\htdocs\Datacast\bin\pdw_table.csv'; $data['csvData'] = $this->csvreader->parse_file($filePath); $this->load->view('datacast_view', $data); } function write_csv() { $R1 = $this->input->post('val1'); $R2 = $this->input->post('val2'); $R3 = $this->input->post('val3'); $H1 = $this->input->post('valh1'); $R4 = $this->input->post('val4'); $R5 = $this->input->post('val5'); $H2 = $this->input->post('valh2'); $H3= $this->input->post('valh3'); $R6 = $this->input->post('val6'); $R7 = $this->input->post('val7'); $R8 = $this->input->post('val8'); $R9 = $this->input->post('val9'); $R10 = $this->input->post('val10'); $R11 = $this->input->post('val11'); $R12 = $this->input->post('val12'); $R13 = $this->input->post('val13'); $H4 = $this->input->post('valh4'); $R14 = $this->input->post('val14'); $R15 = $this->input->post('val15'); $R16 = $this->input->post('val16'); $data = $R1.",".$R2.",".$R3.",".$H1.",".$R4.",".$R5.",".$H2.",".$H3.",".$R6.",".$R7.",".$R8.",".$R9.",".$R10.",".$R11.",".$R12.",".$R13.",".$H4.",".$R14.",".$R15.",".$R16; $list = array($data); $file = fopen("./bin/pdw_table.csv","a"); foreach ($list as $line) { fputcsv($file,explode(',',$line)); } fclose($file); redirect('datacast_ctr'); } } <head> <title> Datacast </title> <!-- css stylesheets --> <link href="<?php echo base_url();?>source/css/bootstrap.css" rel="stylesheet" media="screen"> <link href="<?php echo base_url();?>source/css/style.css" rel="stylesheet" media="screen"> <!-- jQuery --> <script src="http://code.jquery.com/jquery.js"></script> <script src="<?php echo base_url();?>source/js/bootstrap.min.js"></script> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript" src="functions.js"></script> <link href="<?php echo base_url(); ?>plugins/jquery_ui/jquery-ui.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="<?php echo base_url(); ?>plugins/jquery_ui/jquery-1.9.1.js"></script> <script type="text/javascript" src="<?php echo base_url(); ?>plugins/jquery_ui/jquery-ui.js"></script> <script> $(function() { $('#btnAdd').click(function() { $('.td1').toggle('show'); }); }); function submit() { document.getElementById('add1').submit(); return true; } function edit_submit() { document.getElementById('edit1').submit(); return true; } $(document).ready(function(){ $('.btnEdit').editable(); }); </script> </head> <body> <br/><br/><br/> <div class="row-fluid offset9"> <div class="container"> <div class="row"> <div id="navigation-menus"> <div id="btnAdd" name="btnAdd" class="span1" style="cursor: pointer;"> <div class="menu-add">Add</div> </div> </div> </div> </div> </div> <div id="div1" class="row-fluid"> <div class="span12"> <table class="table table-hover table-striped table-bordered" id="table-data"> <thead> <tr> <th>Field 1</th> <th>Field 2</th> <th>Field 3</th> <th>Field 4</th> <th>Field 5</th> <th>Field 6</th> <th>Field 7</th> <th>Field 8</th> <th>Field 9</th> <th>Field 10</th> <th>Field 11</th> <th>Field 12</th> <th>Field 13</th> <th>Field 14</th> <th>Field 15</th> <th>Field 16</th> </tr> </thead> <tbody> <?php foreach($csvData as $field) { ?> <tr> <td><?php echo $field['Field 1']; ?></td> <td><?php echo $field['Field 2']; ?></td> <td><?php echo $field['Field 3']; ?></td> <td><?php echo $field['Field 4']; ?></td> <td><?php echo $field['Field 5']; ?></td> <td><?php echo $field['Field 6']; ?></td> <td><?php echo $field['Field 7']; ?></td> <td><?php echo $field['Field 8']; ?></td> <td><?php echo $field['Field 9']; ?></td> <td><?php echo $field['Field 10']; ?></td> <td><?php echo $field['Field 11']; ?></td> <td><?php echo $field['Field 12']; ?></td> <td><?php echo $field['Field 13']; ?></td> <td><?php echo $field['Field 14']; ?></td> <td><?php echo $field['Field 15']; ?></td> <td><?php echo $field['Field 16']; ?></td> <td><a class="btnEdit" onclick="edit();" style="cursor: pointer;">Edit</a> <a style="cursor: pointer;" class="btnDelete">Delete</a></td> </tr> <?php }?> <form method="post" name="add1" id="add1" action="<?php echo base_url();?>index.php/datacast_ctr/write_csv" autocomplete="off"> <tr class="td1" id="td1" > <td><input type="text" name="val1" id="val1"/></td> <td><input type="text" name="val2" id="val2"/></td> <td><input type="text" name="val3" id="val3"/></td> <td style="display: none;"><input type="hidden" name="valh1" id="valh1"/></td> <td><input type="text" name="val4" id="val4"/></td> <td><input type="text" name="val5" id="val5"/></td> <td style="display: none;"><input type="hidden" name="valh2" id="valh2"/></td> <td style="display: none;"><input type="hidden" name="valh3" id="valh3"/></td> <td><input type="text" name="val6" id="val6"/></td> <td><input type="text" name="val7" id="val7"/></td> <td><input type="text" name="val8" id="val8"/></td> <td><input type="text" name="val9" id="val9"/></td> <td><input type="text" name="val10" id="val10"/></td> <td><input type="text" name="val11" id="val11"/></td> <td><input type="text" name="val12" id="val12"/></td> <td><input type="text" name="val13" id="val13"/></td> <td style="display: none;"><input type="hidden" name="valh4" id="valh4"/></td> <td><input type="text" name="val14" id="val14"/></td> <td><input type="text" name="val15" id="val15"/> </td> <td><input type="text" name="val16" id="val16"/></td> <td><a onclick="submit();" style="cursor: pointer;">Save</a></td> </tr> </form> </tbody> </table> </div> </div> <div class="row-fluid"> <div class="span12"></div> </div> </body>

如果我想编辑csv文件中的现有数据并且数据的位置在中间行,该怎么办?我应该使用什么来更新现有数据或进行编辑?

下面是我在控制器和视图中的代码。我现在需要知道的是将自动更新为CSV文件的编辑和删除。提前感谢您的帮助:)

CONTROLLER

{{1}}

查看

{{1}}

1 个答案:

答案 0 :(得分:0)

这是使用file_get_contentsfile_put_contents的一个非常简单的示例。它不应该与大型csv文件一起使用,仅用于描述可能的方法:

$csvData = file_get_contents($filename);
$csv = explode("\n", $csvData);
$newData = array();
foreach($csv as $rowData) {
    $row = explode(";", $rowData);
    //change your data here
    $newData[] = implode(";", $row);
}
$newData = implode("\n", $newData);
file_put_contents($filename, $newData);

如果要解析大型csv文件,可以查看提供的示例here