Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поиск в файле
 
 автор: magic   (15.09.2010 в 22:00)   письмо автору
 
 

Не знаю куда прикрепить свой вопрос. Вопрос вроде про эксель , но можно и в пхп. Проблема. Есть файл CSV в нем идет номер по каталогу, потом количество и цена. Так вот не знаю как решить проблему, надо проверять если в нем одинаковые номера по каталогу и если есть, то удалять повторяющийся, но количество складывать, цена остается не изменой. Файл изначально поступает EXCEL-евским. Может в экселе как то макрос написать или все таки через пхп прогонять.

  Ответить  
 
 автор: sim5   (15.09.2010 в 22:17)   письмо автору
 
   для: magic   (15.09.2010 в 22:00)
 

А что можно сделать в Экселе? Ну объеденить ячейки с одинаковыми номерами, а разбор CSV в любом случае на сервере делать.

  Ответить  
 
 автор: magic   (15.09.2010 в 22:37)   письмо автору
 
   для: sim5   (15.09.2010 в 22:17)
 

Ну в начале он (файл) ексель. Потом уже я сохраняю в CSV. Эксель тоже мощная вещь. Поиск находит двойников, потом удаление, сложение количества. Как то думал автоматизировать. Типа макроса и всякое такое. Просто пхп не сильно будет нагружать сервер, файлы не маленькие, по 7000 - 10000 наименований, но в принципе вопрос не в этом, просто думал файл в екселе там и обрабатывать перед выкладыванием.

  Ответить  
 
 автор: sim5   (15.09.2010 в 22:54)   письмо автору
 
   для: magic   (15.09.2010 в 22:37)
 

При чем тут Эксель? Не он же вам на сервер делать будет все, а РНР-скрипт, а ему как-то пофигу, толи у вас 20 полей с дним номером, и нужно взять один из них, толи одно объдененное поле но с 20 другими значеними принадлежащее ему. Вы думаете выиграете что-то?
10000 записей, это не такая большая цифра.

  Ответить  
 
 автор: magic   (15.09.2010 в 23:09)   письмо автору
 
   для: sim5   (15.09.2010 в 22:54)
 

Я конечно извиняюсь, но Вы наверно не поняли что мне нужно. У меня есть админка на сайте, люди мне сливают свои прайсы и я их загружаю в БД. Они мне дают прайсы в экселе (ну нету у людей времени на конвертации), я их просто довожу до нужной кондиции и загружаю себе на сервер. Зачем мне в БД повторяющаяся запись. Тем более при поиске они вылазят все. У людей может разные поставки и все такое и поэтому повторяется товарная позиция, но мне это не надо. Просто номер сумма штук и цена. Там разница только в количестве. И вот что бы его привести в нормальный вид локально, мне надо его как то обработать. Вот я и спрашиваю как сделать?

P.S. Короче сам уже что то запутался. :-)

  Ответить  
 
 автор: sim5   (15.09.2010 в 23:26)   письмо автору
 
   для: magic   (15.09.2010 в 23:09)
 

А вы тогда от куда будете знать в Экселе, что записи повторяются? Ведь вам магут дать список в котором уже есть записи имеющиеся на сервере в базе, и как вы это локально проверите без доступа к самой базе? Все это решать надо на сервере.
А вот повторы в самом списке, то тут возможно и не понял. То есть имеется ввиду:
134 34 12.50
134 25 12.50
и должно получиться
134 59 12.50
?
Ну тогда безалаберные у вас клиенты, если они вносят одни и те же продукты в таблицу - как же они с ними работают, вот это куда интересней вопрос? Выгоднее их приучить к порядку, ведь это гораздо важнее для них, нежели для вас.
Но коли такие есть, то сложить в Эксель точно можно, а вот что касается найти в столбце одинаковые значения, и если есть, то сложить строки следующего столбца, присвоив результат первой его строке, затем удалить строки начиная со второй до конца повторяющихся... вот этого не знаю, можно ли такую функцию в Эксель сотворить. В РНР точно можно сделать. ;-)

  Ответить  
 
 автор: magic   (15.09.2010 в 23:41)   письмо автору
 
   для: sim5   (15.09.2010 в 23:26)
 

Таблица в БД уничтожается и заново заносятся данные. Поэтому какая там есть запись мне не важно. Повторы Вы поняли правильно. Просто прайсы выгружаются из 1С, там берутся остатки на складах от разных поставок, т.е. наличие, одна запчасть может прийти несколько раз, поэтому она может быть внесена по нескольким складам, мне это не надо, мне надо что бы она была в одной строке с общей суммой по количеству). Выгружается все в эксель и передается мне.

  Ответить  
 
 автор: sim5   (16.09.2010 в 00:08)   письмо автору
 
   для: magic   (15.09.2010 в 23:41)
 

Ну значи смотрите, можно ли такое сделать в Эксель.... На РНР нет проблем, а страшных функций и формул экселя я не знаю.

  Ответить  
 
 автор: magic   (16.09.2010 в 01:14)   письмо автору
 
   для: sim5   (16.09.2010 в 00:08)
 

Хорошо спасибо за помощь в этом. А как теперь организовать обработку этого файла при помощи PHP?

  Ответить  
 
 автор: sim5   (16.09.2010 в 02:01)   письмо автору
 
   для: magic   (16.09.2010 в 01:14)
 

fgetcsv и т.д...

  Ответить  
 
 автор: heed   (16.09.2010 в 13:48)   письмо автору
 
   для: magic   (16.09.2010 в 01:14)
 

можно вообще без php

c:\cvs.txt
1,2,3
2,3,4
3,4,5
4,5,6
5,6,7
1,2,9
2,3,9
3,4,10
4,5,11
5,6,12


sql

CREATE TABLE `SKLAD` (
`ID` smallint(6) PRIMARY KEY AUTO_INCREMENT,
`SKOKA` smallint(6),
`POCHEM` smallint(6)
) ENGINE=MyISAM;

LOAD DATA INFILE 'c:\\cvs.txt' REPLACE INTO TABLE SKLAD
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' ESCAPED BY '\\';

CREATE TABLE `TEMP_SKLAD` (
`ID` smallint(6),
`SKOKA` smallint(6),
`POCHEM` smallint(6)
) ENGINE=MyISAM;

LOAD DATA INFILE 'c:\\cvs.txt' REPLACE INTO TABLE TEMP_SKLAD
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' ESCAPED BY '\\';

SELECT * FROM SKLAD;
SELECT * FROM TEMP_SKLAD;


INSERT INTO SKLAD (ID, SKOKA, POCHEM) SELECT ID, SKOKA, POCHEM FROM TEMP_SKLAD
ON DUPLICATE KEY UPDATE SKOKA=(SKLAD.SKOKA + TEMP_SKLAD.SKOKA) ;

SELECT * FROM SKLAD;
SELECT * FROM TEMP_SKLAD;

DROP TABLE TEMP_SKLAD;

  Ответить  
 
 автор: magic   (16.09.2010 в 20:28)   письмо автору
 
   для: heed   (16.09.2010 в 13:48)
 

Спасибо, возьму на заметку. Подскажите что лучше обрабатывать файл через PHP или БД, что будет менее ресурсоемким? А можно как то так, только тришечки не так. Можно в место временной таблицы работать сразу с файлом.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования