Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

друпал - новые данные

1.8K
18 февраля 2012 года
Kama
153 / / 04.05.2006
Кто знает помогите пожалуйста, идиотизм какой-то...
Пытаюсь поместить запись новую в БД
Система Друпал, нормальный запрос работает...
Друпаловский отваливается, причем внятной ошибки я не получаю... говорит что на такой-то линии в таком-то файле ошибка...
Данные путаюсь загрузить с файла (кирилица)...
Пытался сам подставить кирилицу... все нормально грузит, а вот с файла не хочет, никак не пойму...

foreach($contents as $line) {
$data = split(',',$line, 2);
krumo(array($data[0]));
$id = db_insert('price_list')
->fields(
array(
'goods_name' => $data[0],
'price' => $data[1]
)
);
$id->execute();

}
6
19 февраля 2012 года
George
4.1K / / 05.01.2007
1. Оформьте код тэгами [ code ] и [ /code ] (без пробелов скобках).
2. Выдайте текст ошибки. (Еще есть смысл посмотреть в журнале самого друпала)

Запрос вроде верно делается, поэтому проблема либо в парсинге файла, либо, возможно, в структуре таблицы. Там два поля?

И вообще, что это Вы такое делаете?
1.8K
20 февраля 2012 года
Kama
153 / / 04.05.2006
Код:
foreach($contents as $line) {
$data = split(',',$line, 2);
krumo(array($data[0]));
$id = db_insert('price_list')
->fields(
array(
'goods_name' => $data[0],
'price' => $data[1]
)
);
$id->execute();
}


текст ошибки:
PDOException: в функции form_upload_price_list_submit() (строка 72 в файле /srv/www/site.ru/sites/all/modules/price_list_uploader/price_list_uploader.page.inc).

структура таблицы:
CREATE TABLE `price_list` (
`id` bigint(10) unsigned NOT NULL auto_increment,
`goods_name` varchar(500) NOT NULL,
`price` decimal(5,0) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`goods_name`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8

и главное, если самому подставить те же значения(значения массива $data) значения вместо $data[0 ]и $data[1] то запрос работает.

насчет логирования, я не нашел, друпал вообще логирует по умолчанию? или надо модуль прикреплять? В логах апача ничего нет по поводу этой ошибки
1.8K
20 февраля 2012 года
Kama
153 / / 04.05.2006
Цитата: George
И вообще, что это Вы такое делаете?



Загружаю данные прайс-листа

6
20 февраля 2012 года
George
4.1K / / 05.01.2007
Цитата: Kama
[quote=George;23978]И вообще, что это Вы такое делаете?



Загружаю данные прайс-листа[/quote]
Если загружать Вашим макаром, то проверьте, как парсится файл.

А вообще, я бы предложил модуль Feeds, прекрасная вещь для импорта чего угодно. Заводите тип содержимого "Запись в прайс-листе", у него можно сделать поле-ссылку на определенный продукт и поле-цену. А с помощью Feeds автоматизировать процесс загрузки прайс-листов из файла. Точно знаю, что можно из CSV, вроде как есть возможность поставить дополнительный модуль, чтобы Feeds хавал и xls.

1.8K
20 февраля 2012 года
Kama
153 / / 04.05.2006
Код:
...
$contents = file($_FILES['price_list_uploader']['tmp_name']);
...
foreach($contents as $line) {
        $data = split(',',$line, 2);
        krumo(array($data[0]));
        $id = db_insert('price_list')
            ->fields(
                array(
                    'goods_name' => array($data[0]),
                    'price' => $data[1]
                )
            );
            $id->execute();
               
    }


Вывожу на экран отпарсенную строку... итог: та же строка, копирую и подставляю эту строку вместо $data[0]. Все работает при этом. Пытался экранировать, тоже не катит, да и кто муже друпал сам экранирует вроде

насчет модуля спасибо посмотрю позже, но думаю раз на то пошло интересно было бы узнать суть проблеммы..
6
21 февраля 2012 года
George
4.1K / / 05.01.2007
http://xandeadx.ru/blog/drupal/384
1.8K
22 февраля 2012 года
Kama
153 / / 04.05.2006
спасибо George,
но суть проблеммы была не в запросе, а в кодировке...
пару минут потратил на поиск нужной кодировки, сейчас я сохраняю файл в формате CVS, видимо кодировка там другая...
вот сейчас перевел на другую прежде чем записывать данные в БД и все заработало
Это так, на всякий случай, кому-может понадобиться
iconv('Windows-1251', 'UTF-8//TRANSLIT', $data)
6
22 февраля 2012 года
George
4.1K / / 05.01.2007
Логично. А вообще, по друпалу я предпочитаю вопросы на drupal.ru и drupal.org задавать, там больше знающего народу.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог