[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Из txt в БД
Gost12345
Добрый день, есть txt файл
название|цена|количество|цвет|
роза|100р|50|красный|
пион|150р|20|красный|
роза|80р|60|желтый|
пион|100р|50|желтый|

Необходимо взять эти данные из файла и поместить в таблицы в БД. соответственно, таблица Роза с полями-цена, количество, цвет, таблица Пион с полями-цена, количество, цвет. Таблицы в базе уже есть, они пустые, просто занести туда данные.
Valick
Выполняйте по пунктам:
1 Создать таблицу роза (готово)
2 Создать таблицу пион (готово)
3 Оторвать голову программисту (не затягивайте с этим пунктом)

_____________
Стимулятор ~yoomoney - 41001303250491
Valick
2 таблицы должно быть
flowers
f-id | f-name
1 Роза
2 Пион
3 Хризантема
4 ...

price
p-id | f-id | p-name | color | p-price | p-number
1 | 1 | азиатская | красный | 150 | 3000

_____________
Стимулятор ~yoomoney - 41001303250491
Kusss
Gost12345
Считать файл в массив
сделать explode каждой строки
в процессе перебора создать массив для добавления данных в БД
Gost12345
Вот код
$file=file("data.txt");
$sql=Array();
$i=1;
foreach($file as $str)
{
$str=explode("|",$str);
$sql[]="INSERT INTO `Rosa`(id,name,price,count,color) VALUES('".$i."','".$str[0]."','".$str[1]."')";
$i++;
}
$sql=implode("<br>",$sql);
echo $sql;

Выводит
INSERT INTO `Rosa`(id,name,price,count,color) VALUES('1',название,цена,количество,цвет)
INSERT INTO `Rosa`(id,name,price,count,color) VALUES('2',роза,100,6,красный)
INSERT INTO `Rosa`(id,name,price,count,color) VALUES('3',пион,150,50,красный)
и т.д.
Данные в таблицу не записываются. И первую строку с шапкой мне не надо.
sergeiss
Учитывая то, что не указан тип БД... wink.gif

В Постгре делаем так.
1. Делаем 3 таблицы: цветы, цвета и таблица реальных цен (связь между первыми 2-мя таблицами).
2. Создаем вьюху, на чтение из этих таблиц.
3. Делаем триггер вставки в эту вьюху.
4. В триггере раскидываем данные. Если нету, например, красного цвета, то создаем его. Если есть, то читаем его айди. Аналогично с названием цветка.
5. Естественно, при выходе из триггера говорим, что ничего во вьюху писать не нужно...
6. Используем команду загрузки файла, прямо в эту вьюху, как в обычную таблицу.
7. Профит! Можно грузить хоть 100500 файлов, данные не будут дублироваться - если триггерная функция правильно написана.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
walerus
Ребят у парня седина рано проявится с такими советами laugh.gif

так же интересно, а что будет если в файле будут и пустые строки, например:
Цитата
название|цена|количество|цвет|
роза|100р|50|красный|
пион|150р|20|красный|

роза|80р|60|желтый|
пион|100р|50|желтый|

роза|100р|150|красный|
Для исключения "шапки" изучаем раздел "массивы".
Цитата
Данные в таблицу не записываются
А где коннект к базе?, где реквест к базе?
Gost12345
В начале файла подключения к базе
"config.php"в котором прописано подключения, здесь все работает. Только ошибку теперь выдает
Notice: Undefined offset:1 ...
Чего то ему не нравиться в $srt[1] в Insert?
walerus
Gost12345
Проверяй структуру базы, тип полей, сделай вывод массива $srt, что бы понять что там передается в инсерт.
sergeiss
Цитата (Gost12345 @ 30.11.2016 - 08:44)
Чего то ему не нравиться в $srt[1] в Insert?

Гадаю на кофейной гуще: что-то ему не нравится smile.gif (кстати, без мягкого знака это слово пишется в данном случае).
А если хочешь более корректный ответ, то хотя бы покажи, что у тебя за файл такой, что там в нем.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.