У меня есть приложение, в котором я хочу, чтобы пользователь мог загружать список контактов через CSV и сохранять их в базе данных. Я пытался настроить Библиотека codeigniter CSV Брэда Стинсона, но до сих пор у меня были проблемы ... Когда я нажимаю на загрузку, CSV просто исчезает и никуда не денется, без каких-либо ошибок ..
Если бы кто-нибудь мог сообщить мне, на правильном ли я пути или просто не в себе, я был бы очень признателен.
Вот мой контроллер Csv_import.php
public function load_data() {
$result = $this->csv_import_model->select();
$output = 'contacttable';
$count = 0;
if ($result->num_rows() > 0)
{
foreach ($result->result() as $row)
{
$count = $count + 1;
$output .= '
<tr>
<td>'.$count.'</td>
<td>'.$row->fullname.'</td>
<td>'.$row->email'.</td>
<td>'.$row->country'.</td>
<td>'.$row->gender'.</td>
</tr>';
}
}
else {
$output .='<p>Data not available</p>';
}
$output .= '</table></div>';
echo $output;
}
public function import()
{
$file_data = $this->csvimport->get_array($_FILES["csv_file"]
["tmp_name"]);
foreach($file_data as $row)
{
$data[] = array (
'fullname' => $row["fullname"],
'email' => $row["email"],
'country' =>$row["country"],
'gender' =>$row["gender"]
);
}
$this->csv_import_model->insert($data);
}
моя модель Csv_Import_model.php
class Csv_import_model extends CI_model
{
function select()
{
$this->db->order_by('idcontacts', 'DESC');
$query = $this->db->get('contacts');
return $query;
}
function insert($data)
{
$this->db->insert_batch('contacts', $data);
}
}
Мой вид на панели управления
<form method = "post" id = "import_csv" enctype = "multipart/form-data">
<div class = "form-group">
<label>Select CSV File</label>
<input type = "file" name = "csv_file" id = "csv_file" required accept = ".csv" />
</div>
<button type = "submit" name = "import_csv" class = "btn btn-info"
id = "import_csv_btn">Import CSV</button>
</form>
<br>
<div id = "imported_csv_data"></div>






Как указано в Github-страница bradstinson / csv-import:
CSV Import [DEPRECATED]
CSV Import is a Codeigniter spark which makes it easy to import a CSV file into an associative array.
NOTE: I've not used this code in about 3 years, and will no longer offer any type of support. However, feel free to use this code at your own risk.
Поэтому я настоятельно не рекомендую использовать устаревшую библиотеку для вашего приложения.
Обратите внимание, что вам не нужно искать библиотеку CSV, посвященную CodeIgniter. Внутри CI можно загрузить любую библиотеку PHP. Это предпочтительно делается через Автозагрузка композитора.
При быстром поиске я могу порекомендовать:
Знаете ли вы, что в PHP есть собственная функция (fgetcsv) для анализа файла CSV? У него есть недостатки (не соблюдаются строки в кавычках или многострочный CSV), но он может работать в вашем случае.
parsecsv / parsecsv-for-php, который реализует RFC 4180 (стандарт CSV) и выглядит активно поддерживаемым. Его можно загрузить с помощью Composer.
Вот пример использования fgetcsv:
if (($handle = fopen("myfile.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// Process with $data
}
fclose($handle);
}
Вот пример использования parsecsv:
$csv = new ParseCsv\Csv();
$csv->delimiter = ",";
$csv->parse('my-file.csv');
foreach($csv->data as $row) {
// Process using $row
}
Как это выглядит? :)
я смог заставить его работать, используя этот github.com/jadirullah/Codeigniter-Impor-Csv-to-Mysql
... Который внутренне использует fgetcsv. Может быть, добавьте эту ссылку в качестве ответа, чтобы она могла помочь другим людям :)
Я смог заставить это работать, следуя репозиторию git в этом ссылка на сайт
Спасибо, я посмотрю на эти