Gost12345
28.11.2016 - 11:56
Добрый день, есть txt файл
название|цена|количество|цвет|
роза|100р|50|красный|
пион|150р|20|красный|
роза|80р|60|желтый|
пион|100р|50|желтый|
Необходимо взять эти данные из файла и поместить в таблицы в БД. соответственно, таблица Роза с полями-цена, количество, цвет, таблица Пион с полями-цена, количество, цвет. Таблицы в базе уже есть, они пустые, просто занести туда данные.
Valick
28.11.2016 - 12:01
Выполняйте по пунктам:
1 Создать таблицу роза (готово)
2 Создать таблицу пион (готово)
3 Оторвать голову программисту (не затягивайте с этим пунктом)
_____________
Стимулятор ~yoomoney - 41001303250491
Valick
28.11.2016 - 12:14
2 таблицы должно быть
flowersf-id | f-name
1 Роза
2 Пион
3 Хризантема
4 ...
pricep-id | f-id | p-name | color | p-price | p-number
1 | 1 | азиатская | красный | 150 | 3000
_____________
Стимулятор ~yoomoney - 41001303250491
Gost12345
Считать файл в массив
сделать explode каждой строки
в процессе перебора создать массив для добавления данных в БД
Gost12345
28.11.2016 - 14:56
Вот код
$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
28.11.2016 - 15:33
Учитывая то, что не указан тип БД...
![wink.gif](http://phpforum.su/html/emoticons/wink.gif)
В Постгре делаем так.
1. Делаем 3 таблицы: цветы, цвета и таблица реальных цен (связь между первыми 2-мя таблицами).
2. Создаем вьюху, на чтение из этих таблиц.
3. Делаем триггер вставки в эту вьюху.
4. В триггере раскидываем данные. Если нету, например, красного цвета, то создаем его. Если есть, то читаем его айди. Аналогично с названием цветка.
5. Естественно, при выходе из триггера говорим, что ничего во вьюху писать не нужно...
6. Используем команду загрузки файла, прямо в эту вьюху, как в обычную таблицу.
7. Профит! Можно грузить хоть 100500 файлов, данные не будут дублироваться - если триггерная функция правильно написана.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
walerus
28.11.2016 - 21:13
Ребят у парня седина рано проявится с такими советами
так же интересно, а что будет если в файле будут и пустые строки, например:
Цитата |
название|цена|количество|цвет| роза|100р|50|красный| пион|150р|20|красный|
роза|80р|60|желтый| пион|100р|50|желтый|
роза|100р|150|красный| |
Для исключения "шапки" изучаем раздел "массивы".
Цитата |
Данные в таблицу не записываются |
А где коннект к базе?, где реквест к базе?
Gost12345
30.11.2016 - 08:44
В начале файла подключения к базе
"config.php"в котором прописано подключения, здесь все работает. Только ошибку теперь выдает
Notice: Undefined offset:1 ...
Чего то ему не нравиться в $srt[1] в Insert?
walerus
30.11.2016 - 15:15
Gost12345
Проверяй структуру базы, тип полей, сделай вывод массива $srt, что бы понять что там передается в инсерт.
sergeiss
30.11.2016 - 18:07
Цитата (Gost12345 @ 30.11.2016 - 08:44) |
Чего то ему не нравиться в $srt[1] в Insert? |
Гадаю на кофейной гуще: что-то ему не нравится
![smile.gif](http://phpforum.su/html/emoticons/smile.gif)
(кстати, без мягкого знака это слово пишется в данном случае).
А если хочешь более корректный ответ, то хотя бы покажи, что у тебя за файл такой, что там в нем.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)