Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
fidel42rus
24 / 24 / 7
Регистрация: 24.10.2015
Сообщений: 395
#1

Работа с csv файлами - PHP БД

30.01.2017, 19:53. Просмотров 435. Ответов 5
Метки нет (Все метки)

Всем добрый вечер, друзья. Пытаюсь сделать загрузку из csv файла в базу, но не могу пройти циклом обработку данных. Да и вообще если честно не совсем понял принцип работы скриптов. Все примеры которые я нашел обрабатывают файл на сервере, а мне нужно его загрузить через input type file. Может у кого естьбоевой отточеный скрипт для этого дела? Или кто то знает как это сделать и может написать готовый пример с загрузкой файла на сервер и разносили данных по базе. Битый час сижу над этим вопросом, то скрипт зациклился, то файл не видит.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2017, 19:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с csv файлами (PHP БД):

Работа с файлами - PHP БД
Ребят, как я могу через php добавлять файл в БД, но сам файл будет храниться в папке. Как его потом вытянуть с БД и сделать, что-бы можно...

Работа с dbf-файлами - PHP БД
Впервые работаю в php с DBF-файлами. И сразу же не идет... Подскажите,в чем может причина. Нужно ли прописивать для работы...

Работа с CSV файлами - PHP
Есть такая CSV таблица: Нужно с помощью неё получить ссылки такого вида: CSV файлы формата: "Название";Год;"Режисер" Можно...

Работа в CSV через PHP - PHP
Имеется csv файл. В нём таблица в несколько тысяч строк стобцы следующие: Договор,Группа счетов,Номер телефона,Дата звонка,Время...

Работа с файлами - PHP
Имеется скрипт загрузки файлов на сервер. Вопрос такой, как записать на сервер уже переименнованый файл. Тоесть например загружаю 1.jpg, а...

Работа с файлами - PHP
Вопрос больше общей философии, чем конкретный. Допустим есть сценарий который создает файлы и помещает их на сервер. Названия этих...

5
Виталюска
450 / 442 / 145
Регистрация: 26.09.2010
Сообщений: 2,218
30.01.2017, 19:55 #2
fidel42rus, так если у Вас есть пример рабочего скрипта, то просто допишите туда перед обработкой файла загрузку этого файла на сервер, а после обработки удалите его
1
fidel42rus
24 / 24 / 7
Регистрация: 24.10.2015
Сообщений: 395
31.01.2017, 04:41  [ТС] #3
так не получается... Я понимаю что нужно сделать, но никогда не работал с CSV файлами.
вот то что имею для обработки файла... я не могу посчитать даже кол-во строк... и полей
HTML5
1
2
3
4
<form id="loadForm" action="" enctype="multipart/form-data" method="post">
<label for="passed_file">File:</label>
<input type="file" id="passed_file" name="passed_file">
<input type="submit">
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php 
 
$f = fopen($_FILES['passed_file'], "rt") or die("Ошибка!");
for ($i=0; $data=fgetcsv($f,1000,";"); $i++) {
  $num = count($data);
  echo "<h3>Строка номер $i (полей: $num):</h3>";
  for ($c=0; $c<$num; $c++)
    print "[$c]: $data[$c]<br>";
}
fclose($f);
?>
HTML5
1
</form>
0
Виталюска
450 / 442 / 145
Регистрация: 26.09.2010
Сообщений: 2,218
31.01.2017, 11:41 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
fidel42rus, php код должен быть за пределами <form>...</form>
примерно так но на работу не проверял
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// тут делаем загрузку на сервер самая простая без каких либо проверок
// думаю с этим как небудь сами
 
$uploadfile = "http://www.cyberforum.ru/images/".$_FILES['somename']['name'];
move_uploaded_file($_FILES['somename']['tmp_name'], $uploadfile);
 
// далее подготовка и обработка csv
$table = 'table_name';      // Имя таблицы для импорта
$bd = mysqli_connect('localhost', 'username', 'password', 'bd_name');
        $afields = array("column1", "column2", "column3", "column4") ;      // Массив строк - имен полей таблицы
        $delim=',';     // Разделитель полей в CSV файле
        $enclosed='"';      // Кавычки для содержимого полей
        $escaped='\\';      // Ставится перед специальными символами
        $lineend='\\r\\n';      // Чем заканчивается строка в файле CSV
        $hasheader=FALSE;   // Пропускать ли заголовок CSV
 
    if($hasheader) $ignore = "IGNORE 1 LINES ";
    else $ignore = "";
    $q_import = 
    "LOAD DATA INFILE '".
        $_SERVER['DOCUMENT_ROOT'].$uploadfile."' INTO TABLE ".$table." ".
    "FIELDS TERMINATED BY '".$delim."' ENCLOSED BY '".$enclosed."' ".
    "    ESCAPED BY '".$escaped."' ".
    "LINES TERMINATED BY '".$lineend."' ".
    $ignore.
    "(".implode(',', $afields).")"
    ;
    mysqli_query($bd, $q_import);
1
fidel42rus
24 / 24 / 7
Регистрация: 24.10.2015
Сообщений: 395
31.01.2017, 19:03  [ТС] #5
Большущее спасибо, но я наверное настолько отстал от вас в освоении этого языка что не знаю как это дело связать с инпутом. В вашем коде поменял подключение к базе, заменил на свой отлаженный код.
<input type=file name=filecsv>
<input type=submit>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$filecsv=$_FILE['filecsv']
 
$uploadfile = "http://www.cyberforum.ru/images/".$_FILES['somename']['name'];
move_uploaded_file($_FILES['somename']['tmp_name'], $uploadfile);
 
// далее подготовка и обработка csv
$table = 'table_name';      // Имя таблицы для импорта
 include "param.php";
mysql_connect($server, $login, $password) or die("Ошибка соединения: " . mysql_error());
mysql_select_db($db);
        $afields = array("column1", "column2", "column3", "column4") ;      // Массив строк - имен полей таблицы
        $delim=',';     // Разделитель полей в CSV файле
        $enclosed='"';      // Кавычки для содержимого полей
        $escaped='\\';      // Ставится перед специальными символами
        $lineend='\\r\\n';      // Чем заканчивается строка в файле CSV
        $hasheader=FALSE;   // Пропускать ли заголовок CSV
 
    if($hasheader) $ignore = "IGNORE 1 LINES ";
    else $ignore = "";
    $q_import = 
    "LOAD DATA INFILE '".
        $_SERVER['DOCUMENT_ROOT'].$uploadfile."' INTO TABLE ".$table." ".
    "FIELDS TERMINATED BY '".$delim."' ENCLOSED BY '".$enclosed."' ".
    "    ESCAPED BY '".$escaped."' ".
    "LINES TERMINATED BY '".$lineend."' ".
    $ignore.
    "(".implode(',', $afields).")"
    ;
    mysql_query($db, $q_import);

mysqli такой же синтаксис как в mysql? я раньше не слышал про него.
Я не знаю как згрузить файл (( Можете пример подробный с input type=file привести?
0
Виталюска
450 / 442 / 145
Регистрация: 26.09.2010
Сообщений: 2,218
31.01.2017, 19:15 #6
fidel42rus, mysql устарел и уже не поддерживается на многих серверах,
Цитата Сообщение от fidel42rus Посмотреть сообщение
mysqli такой же синтаксис
примерно да

HTML5
1
2
3
4
<form id="loadForm" action="" enctype="multipart/form-data" method="post">
<input type="file" name="filecsv">
<input type="submit" name="load_file" value="Загрузить">
</form>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
$filecsv = $_FILES['filecsv']['name'];
move_uploaded_file($_FILES['filecsv']['tmp_name'], $filecsv);
 
// далее подготовка и обработка csv
$table = 'table_name';      // Имя таблицы для импорта
 include "param.php";
mysql_connect($server, $login, $password) or die("Ошибка соединения: " . mysql_error());
mysql_select_db($db);
        $afields = array("column1", "column2", "column3", "column4") ;      // Массив строк - имен полей таблицы
        $delim=',';     // Разделитель полей в CSV файле
        $enclosed='"';      // Кавычки для содержимого полей
        $escaped='\\';      // Ставится перед специальными символами
        $lineend='\\r\\n';      // Чем заканчивается строка в файле CSV
        $hasheader=FALSE;   // Пропускать ли заголовок CSV
 
    if($hasheader) $ignore = "IGNORE 1 LINES ";
    else $ignore = "";
    $q_import = 
    "LOAD DATA INFILE '".
        $_SERVER['DOCUMENT_ROOT'].$filecsv."' INTO TABLE ".$table." ".
    "FIELDS TERMINATED BY '".$delim."' ENCLOSED BY '".$enclosed."' ".
    "    ESCAPED BY '".$escaped."' ".
    "LINES TERMINATED BY '".$lineend."' ".
    $ignore.
    "(".implode(',', $afields).")"
    ;
    mysql_query($q_import);
0
31.01.2017, 19:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2017, 19:15
Привет! Вот еще темы с ответами:

Работа с текстовыми файлами - PHP
Подскажите вот есть файл (txt) в нем информация такого типа: имя возраст дата в примерах нашел: можно ли занести имя...

Работа с текстовыми файлами - PHP
В общем у меня на хостинге есть парочка текстовых файлов. Допустим они называются 1.txt 2.txt и т.д. Мне надо создать php файл который...

Работа с бинарными файлами - PHP
Доброго времени суток всем! Есть задача с помощью скрипта взять другой скрипт и сохранить его в виде бинарного файла, а затем другим...

Работа без баз с файлами - PHP БД
Меня интересует вот такой вопрос: возможно ли работать на сервере без подключения баз данных, используя вместо этого файлы, загружая через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru