Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.01.2013, 08:31
Аспирант
Отправить личное сообщение для Axios Посмотреть профиль Найти все сообщения от Axios
 
Регистрация: 06.03.2011
Сообщений: 78

Парсинг CSV для калькулятора
Помогите плиз с парсингом

делал на php вот так

<?php
			@$file = fopen('price.csv', 'r') or die('Ошибка');
			flock($file, 1);
			echo '<table cellspacing="0" cellpadding="5" border="1" width="100%" id="MyTable">';
			echo "\n";
			while(!feof($file)) {
			$Mass = fgetcsv($file, 1024, ';');
			$j = count($Mass);
			if ($j != 1) {
			echo '<tr align="center">' . "\n";
			for ($k=0; $k<$j; $k++) { echo '<td><input type="text" value='. $Mass[$k] . "></td>\n";
			}
			echo "</tr>\n";
			}
			}
			echo '</table>';
			flock($file, 3); // 3 == LOCK_UN
			fclose($file);
?>


но потом не совсем удобно обращаться к содержимому ячейки, приходится вставлять input чтоб корректно получать значения ячеек, пользовался вот этим, например:

proj1 = MyTable.rows[1].cells[0].firstChild.value;


в итоге на странице появляется огромная таблица с input, которую приходится скрывать.

Что хотелось бы, известно общее количество строк и столбцов оно определено, примерно 40 столбцов и 70 строк, они имеют примерный вид и содержимое (разделю для понятности символом | ):

Код:
Курс General | 1 | 1 | 240 | 300 | 350 | 400 | и т. д. ...
Мне нужно получить несколько типов несколько типов массиво:

Массивы типа 1:

course1 = [Курс General, 1, 1, 240, 300, 350, 400 и т. д. ...]
course2 = [Курс Business, 1, 1, 400, 450, 650, 700 и т. д. ...]
... таких массивов будет по количеству строк, т.е. 70, по идее они должны как-то автоматически строится


Массивы типа 2 это массив из первого столбца

name1 = [Курс general, Курс Business, ... и т.д.]


Или лучше из php парсить в строку типа:

Курс General, 1, 1, 240, 300, 350, 400 и т. д. ...


а потом из нее получать массив?

Просто не хочется лишнего мусора на странице



Сразу отвечу на вопрос для чего это:

Менеджер заполняет определенным образом CSV со стоимостью школ и курсов (там очень сложная таблица с большим количеством параметров) а потом все это превращается в калькулятор стоимости курса
Ответить с цитированием
  #2 (permalink)  
Старый 15.01.2013, 11:10
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Axios
Помогите плиз с парсингом
Таки "с парсингом" чего именно?
Ответить с цитированием
  #3 (permalink)  
Старый 15.01.2013, 11:56
Аспирант
Отправить личное сообщение для Axios Посмотреть профиль Найти все сообщения от Axios
 
Регистрация: 06.03.2011
Сообщений: 78

Я хочу распарсить CSV без php, так как редактор режет php код и приходится изворачиваться фреймом
Ответить с цитированием
  #4 (permalink)  
Старый 15.01.2013, 13:11
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Axios
Я хочу распарсить CSV без php
JS не работает с файлами (в общем смысле)...
Ответить с цитированием
  #5 (permalink)  
Старый 15.01.2013, 13:12
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Axios
Менеджер заполняет определенным образом CSV
Вообще не понятно почему не используется какая-то база данных... Почему у тебя все в каких-то файлах?
Ответить с цитированием
  #6 (permalink)  
Старый 15.01.2013, 13:43
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Сообщение от ksa Посмотреть сообщение
Вообще не понятно почему не используется какая-то база данных... Почему у тебя все в каких-то файлах?
Ну не всегда они базы нужны, да еще по ТЗ захочет админку, а так отдал ему csv и пусть там раз в год цены меняет.

По сабжу. Массив можно получить напрямую, сначала забрав по строкам, потом распарсив по ограничителю (тчк-с-зпт)
Но есть одна неприятность, которая всё может усложнить, даже их три:
1. Переводы строк при подготовке csv никто не отменял, блондинка может нафтыкать, тогда строки собьются в кашу
2. и 3. Двоеточия и тчк-с-запятые в тексте - они экранируются, или экранируется вся ячейка - нельзя об этом забывать тоже.

Есть же какая-то в пыхе функция - сам разбирает, если правильно настроена локаль и кодировка /*могу наврать!*/
Ответить с цитированием
  #7 (permalink)  
Старый 15.01.2013, 14:32
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Serg_pnz
Но есть одна неприятность, которая всё может усложнить, даже их три
Вот потому-то лучше использовать БД.
Ответить с цитированием
  #8 (permalink)  
Старый 15.01.2013, 15:58
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Сообщение от ksa Посмотреть сообщение
Вот потому-то лучше использовать БД.
Вот поэтому я написал себе посимвольный парсер csv и мне по барабану криворукий "оформитель"))

Кстати, а не проще там, где в инпуте хранится значение просто ячейке давать номер по флагам? Ну как-то
<td flag="3_15">значение</td>
, что будет соответствовать третьему столбцу, 15 строке?
И вообще зачем нам эти инпуты? Пусть php сгенерит json, ява разберет и в путь.
Ответить с цитированием
  #9 (permalink)  
Старый 15.01.2013, 20:43
Аспирант
Отправить личное сообщение для Axios Посмотреть профиль Найти все сообщения от Axios
 
Регистрация: 06.03.2011
Сообщений: 78

Serj, может код скинуть присвоения флага и его обработку в дальнейшем.

Кстати, возникла проблемка. что если в поле стоит 2 слово или 3, то они обрезаются и остается только одно, первое
Ответить с цитированием
  #10 (permalink)  
Старый 15.01.2013, 21:36
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Axios,
я "пыхер", все делаю на jquery. И как бы
$('td').attr('flag', x+'_'y).html() // блин, простите, вечер удался....
рулит. Как-то так....

Короче, если есть массив, а таблица не нужна, то гоните всё в json, а там распарсивайте и обрабатывайте.

//Давайте не будем писать своих аккордионов, ибо! Есть у меня такой в жизни неудачный пример. сцк, работает, но зачеее-ем! когда библиотека под это уже заточена.

зы, куда без него?: да, на жквери! и мутулсе.

Последний раз редактировалось Serg_pnz, 16.01.2013 в 11:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Админка для калькулятора Antond Элементы интерфейса 1 19.11.2012 15:08
IDE для Java Script constant Библиотеки/Тулкиты/Фреймворки 0 27.09.2012 09:31
Модуль для web-to-print проекта Anton2507 Работа 0 29.07.2012 11:35
добавление стилей для множества элементов ??? Общие вопросы Javascript 7 14.06.2012 01:50