Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP+Excel+MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как спаять их воедино?
mark2009
Отправлено: 14 Сентября, 2009 - 16:02:38
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




В общем описываю ситуацию..

Есть файл Excel - прайс лист. Структура файла всегда одинаковая. Требуется содержимое файла загнать в таблицу MySQL.
Пробовал сам файл сохранять в CSV, но то что я вижу в мускуле после импорта файла в phpmyadmin - явно не то Улыбка

Есть какой-то вариант через php поработать именно с XLS? Надо всего-то -

1) Открыть файл
2) Циклом прочитать содержимое и в этом же цикле формировать текст запроса

Подскажите, как лучше это сделать плиз )
 
 Top
EuGen Администратор
Отправлено: 14 Сентября, 2009 - 16:21:02
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




file()
+
explode()
+
sql


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
mark2009
Отправлено: 14 Сентября, 2009 - 16:41:35
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




EuGen пишет:
file()
+
explode()
+
sql


explode() на что? там просто текст в ячейках. Какой тогда разделитель использовать?

И вообще в результате выполнения вот такого кода:

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file("file.xls");
  3. echo $file;
  4.  


ничего не происходит. И это понятно - как, например, прочитать определённый лист в книге? Вполне логичен следующий результат:

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file("file.xls");
  3. echo $file;
  4. echo gettype($file);
  5.  


Результат - boolean.
 
 Top
Ch_chov
Отправлено: 14 Сентября, 2009 - 18:57:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
то что я вижу в мускуле после импорта файла в phpmyadmin - явно не то

Ищи проблему тут, phpmyadmin вполне корректно делает импорт из csv файлов. Попробуй обновить pma.

Цитата:
explode() на что? там просто текст в ячейках.

php не умеет работать с ячейками.



З.Ы. Для работы с csv файлами есть функция fgetcsv.
 
 Top
mark2009
Отправлено: 14 Сентября, 2009 - 19:10:37
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Ch_chov
У меня pma последней версии. Но всё дело в том, что я это делаю не для себя, а для заказчика. Ему будут поступать новые файлы и он уж точно не будет заморачиваться со всеми SQL запросами Улыбка т.е. требуется какое-то универсальное решение.
 
 Top
Ch_chov
Отправлено: 14 Сентября, 2009 - 19:36:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
требуется какое-то универсальное решение

Их полно. Ищи и пробуй.



http://www.php.su/articles/?cat=...les&page=045
 
 Top
mark2009
Отправлено: 14 Сентября, 2009 - 20:29:20
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Ch_chov
Спасибо за содержательную помощь Ха-ха
 
 Top
samulet
Отправлено: 19 Июля, 2011 - 23:27:13
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Помогите, пож с алгоритмом импорта данных в php.
Нужно загрузить не сразу в базу, а посредством проверок данных на их тип, соответсвие определенным условиям.

Существую какие-л. современные средства автоматизации процедуры?

Спасибо, заранее всем!
 
 Top
evgenijj
Отправлено: 19 Июля, 2011 - 23:45:29
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Сохранить таблицу MS Excel в формате CSV. Разделитель столбцов ; (точка с запятой), разделитель строк \n.
Цитата:
Столбцы разделяются точкой с запятой, а строки — знаком возврата каретки. Если ячейка содержит точку с запятой, ее содержимое берется в кавычки. Если ячейка содержит кавычку, кавычка удваивается.

Загрузка в таблицу из файла CSV
CODE (text):
скопировать код в буфер обмена
  1. LOAD DATA INFILE '/home/someuser/data.csv' INTO TABLE table_name
  2. FIELDS TERMINATED BY ';' ENCLOSED BY '"'
  3. LINES TERMINATED BY '\n';


Сохранение данных из таблицы в файл
CODE (text):
скопировать код в буфер обмена
  1. SELECT filed1, field2, field3 INTO OUTFILE '/home/someuser/data.csv'
  2. FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
  3. LINES TERMINATED BY '\n'
  4. FROM table_name;


Можно прочитать xls-файл средствами PHP и после проверки вставить запись в таблицу MySQL:
Чтение Excel-файлов средствами PHP
 
 Top
samulet
Отправлено: 20 Июля, 2011 - 07:27:24
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Спасибо, evgenijj!

Вариант с CSV файлом вряд ли подойдет в моем случае - пользователи кнопки пока нажимать учатся и любят систему за то, что она не сложней однокоассников ))
Попробую составить алгоритм и обкатать на CSV.

Алгоритм планирую следующий:
1. Загружаю все данные из файла во временную таблицу базы данных (нужно будет только с заголовками и форматами разобраться..);
2. Выбираю из временной таблицы нужную инфу;
3. Проверяю данные;
4. При возникновении несоответствия вывожу информацию и правильные варианты из живой базы;
5. Меняю неправильную инфу во временной таблице не правильную, скорректированую пользователем;
6. Пункты 3, 4, 5, пока все не будет ОК;
7. Сохраняю данные из временной таблицы в рабочую.

Так?
 
 Top
samulet
Отправлено: 24 Июля, 2011 - 20:30:33
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Не работает библиотека phpExcelReader
Подскажите, пожалуйста,что делаю не так!!!

Ошибка следующая:
The filename jxlrwtest.xls is not readable
Происходит, как я понимаю, здесь:

PHP:
скопировать код в буфер обмена
  1. // Читаем файл
  2.   $data = new Spreadsheet_Excel_Reader();
  3.   $data->setOutputEncoding('CP1251');
  4.   $data->read('jxlrwtest.xls');


Кстати, файл 'jxlrwtest.xls', который лежит в примерах - не открывается в Excell. Пробовал другие файлы - результат тот же.
Фраза "is not readable" из самой библиотеки, но в чем проблема, не пойму.

Спасибо.
 
 Top
Мелкий Супермодератор
Отправлено: 24 Июля, 2011 - 20:35:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Права проверьте, может ли php читать данный файл. В частности, is_readable


-----
PostgreSQL DBA
 
 Top
samulet
Отправлено: 24 Июля, 2011 - 21:30:01
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Спасибо, Мелкий!!!
Идейку правильную подкинул ;)
На Денвере не пашет - позже буду разбираться почему, на серваке работает (там же не винда ))
Разгребаю другую кучу ошибок!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB