[PHP] изменение dbf файла

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
avalon
рядовой
Сообщения: 41
Зарегистрирован: 2008-01-24 18:09:47
Откуда: Украина

[PHP] изменение dbf файла

Непрочитанное сообщение avalon » 2010-02-08 18:31:56

Здравствуйте. Столкнулся с такой проблемой: в винде создаётся dbf-файл, по фтп файл успешно перемещается на unix-машину. Там с помощью php он успешно правиться, результаты с помощью того же php отображаются корректно и успешно. Совершается обратный трансфер в винду. А вот с помощью разных просмотрщиков файл не открывается выдавая ошибку "Неверный размер записи или смещение". Эксель открывает как дбф, но результаты не корректные. Просмотр дбф-файла с помощью php скрипта на виндовой машине успешен и корректен. Вот код скрипта на изменение дбф:

Код: Выделить всё

$db_path = 'w:/home/localhost/www/base/file.DBF';
$db = dbase_open($db_path, 2);
$j = 1;
   if($db)
   {
      $row = dbase_get_record_with_names($db, $j);
      unset($row['deleted']);
      $row['DATA']  = date('Ymd');
      $row['CLOCK'] = date('His');
      $row = array_values($row);
      dbase_replace_record($db, $row, $j);
      dbase_close($db);
   }

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] изменение dbf файла

Непрочитанное сообщение zg » 2010-02-08 19:38:32

avalon писал(а):результаты с помощью того же php отображаются корректно и успешно.
и? в чём трабла?

avalon
рядовой
Сообщения: 41
Зарегистрирован: 2008-01-24 18:09:47
Откуда: Украина

Re: [PHP] изменение dbf файла

Непрочитанное сообщение avalon » 2010-02-09 9:12:02

Дело в том, что дбф-файл под виндой будет читаться не php-скриптом, а делфийской прогой. Я покоцаный дбф-ник ей ещё не подставлял, но всё таки не приятно когда выходишь за стандарты.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] изменение dbf файла

Непрочитанное сообщение zg » 2010-02-09 16:23:39

avalon писал(а):но всё таки не приятно когда выходишь за стандарты.
интересно за какие? :smile:

avalon
рядовой
Сообщения: 41
Зарегистрирован: 2008-01-24 18:09:47
Откуда: Украина

Re: [PHP] изменение dbf файла

Непрочитанное сообщение avalon » 2010-02-09 16:46:07

У меня версия php такая - PHP 5.2.6 with Suhosin-Patch 0.9.6.2 (cli) , собирал из портов. Сравнение файлов, один изменён в винде, другой во вряхе показало, что траблы в заголовке юниксового файла. Связанные с полями с типом дата, просмотрщик dbf собранный из портов, тоже отображает некорректно данные. Какие конкретно отличия?
В корректном файле открываемом что виндовым, что юниксовым просмотрищиком после объявления поля типа D идёт объявление длинны 08 00 00 00 00 00 00 00, а в юниксовом 00 00 00 00 00 00 00 00. Если в бинарном редакторе в юниксовом файле тоже поставить 08, то файл становиться корректным. Это проблема с версией или кривыми руками? Но насчёт кода изменения в дбф, брал за основу пример в доках. Если кто поможет, буду признателен.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] изменение dbf файла

Непрочитанное сообщение zg » 2010-02-09 17:34:40

avalon писал(а):Это проблема с версией или кривыми руками?
нет единого стандарта dbf. Его писали все кому не лень.
avalon писал(а):Если в бинарном редакторе в юниксовом файле тоже поставить 08, то файл становиться корректным.
лучше перейти на SQLite

avalon
рядовой
Сообщения: 41
Зарегистрирован: 2008-01-24 18:09:47
Откуда: Украина

Re: [PHP] изменение dbf файла (РЕШЕНО)

Непрочитанное сообщение avalon » 2010-02-10 16:22:02

Всё решилось само собой. Обновил порты, снёс php, поставил свежую версию и всё заработало. Сейчас у меня:

Код: Выделить всё

#php -v
PHP 5.2.12 with Suhosin-Patch 0.9.7 (cli) (built: Feb 10 2010 11:18:12) (DEBUG)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [PHP] изменение dbf файла

Непрочитанное сообщение zg » 2010-02-10 17:55:51

zg писал(а):лучше перейти на SQLite
имхо