Не могу решить проблему php + mdb

motoroller

Новичок
Вообще стоит такая задача:
у меня много пользователей и грузят на сайт свои db .... ну естественно в mdb

Ну для анчала пытался решить проблему на windows, почитал мануалы и сделал


PHP:
 $conn = odbc_connect("db","","");
 $res = odbc_exec($conn, "SELECT * FROM `animals`"); 
 
	while($row = odbc_fetch_array($res) ) { 
		echo $row['n']."  ".iconv("cp1251","utf-8", $row['name']);
		print_r($row);
	}
Все отлично заработало ....
Но проблема есть и тут ... я хочу разработать интерфейс, где пользователь будет каждый грузить свою БД,
а тут получается что я в винде прописал путь к какой базе ту он и читает ...

Собстенно первый вопрос, можно ли обращаться к разным БД, при этом путь к БД указываем из php кода?

Вопрос второй надо тоже самое сделать из по unix, точнее у меня хостинг мастерхост, они мне предложили собрать собсвтенный интерпритарор

./configure --prefix=/home/uXXXXX/php \
--with-iodbc \
--with-mysql=/usr/local --enable-ftp --enable-dbase \
--with-gdbm --with-ndbm --with-iconv=/usr/local \
--with-gd=/usr/local --enable-gd-native-ttf=/usr/local \
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
--with-freetype-dir=/usr/local --with-ttf \
--with-zlib-dir=/usr --disable-posix \
--enable-force-cgi-redirect --enable-inline-optimization \
--without-pear --disable-debug
Собственно я взял с сайта стандартный конфиг и добавил --with-iodbc \
ну ничего из этого не вышло пошли ошибки ...
а я в этом деле не силен ...
Подскажите как быть, очень надо сделать
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Какие ошибки, зачем вообще грузить на сайт mdb?
 

motoroller

Новичок
Так ошибки при конфиге сейчас сообщу:
шаги что я делаю по ssh соединяюсь

./configure --prefix=/home/u177603/php \
--with-iodbc \
--with-mysql=/usr/local --enable-ftp --enable-dbase \
--with-gdbm --with-ndbm --with-iconv=/usr/local \
--with-gd=/usr/local --enable-gd-native-ttf=/usr/local \
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
--with-freetype-dir=/usr/local --with-ttf \
--with-zlib-dir=/usr --disable-posix \
--enable-force-cgi-redirect --enable-inline-optimization \
--without-pear --disable-debug

я взял стандартуню конфигурацию с сайта мастерхост (и от себя добавил --with-iodbc \)
тут вроде ошибок не выходит

потом делаю make

/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3748: error: 'rc' undeclared (first use in this function)
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3748: error: 'odbc_connection' has no member named 'hdbc'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3748: error: 'odbc_result' has no member named 'stmt'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3749: error: 'SQL_INVALID_HANDLE' undeclared (first use in this function)
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3755: error: 'SQL_ERROR' undeclared (first use in this function)
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3756: error: 'SQL_NULL_HSTMT' undeclared (first use in this function)
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3756: error: too many arguments to function 'odbc_sql_error'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3761: error: 'odbc_result' has no member named 'stmt'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3762: error: 'SQLSMALLINT' undeclared (first use in this function)
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3762: error: 'SQL_NTS' undeclared (first use in this function)
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3767: error: too many arguments to function 'odbc_sql_error'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3772: error: 'odbc_result' has no member named 'numparams'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3773: error: 'odbc_result' has no member named 'stmt'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3773: error: 'odbc_result' has no member named 'numcols'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3775: error: 'odbc_result' has no member named 'numcols'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3781: error: 'odbc_result' has no member named 'values'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3783: error: 'odbc_result' has no member named 'conn_ptr'
/home/u177603/src/php-5.3.9/ext/odbc/php_odbc.c:3784: error: 'odbc_result' has no member named 'fetched'
*** Error code 1
Ну и на этом все заканчивается

По поводу зачем mdb:
Данные пользователей храняться в mdb, и эти данные надо обязательно получить, по-другому никак.

Скажите реально такое: что пользователь загружает файл на сервер, после загрузки файла он считывается ? т.е БД у меня будут постоянно меняться.
 

motoroller

Новичок
Вообщем мне помогли на мастерхосте и собрали интерпритатор с iodbc.
Привожу часть phpinfo
odbc


ODBC Support

enabled



Active Persistent Links

0



Active Links

0



ODBC library

iodbc



ODBC_INCLUDE

-I/home/u177603/ODBC/include



ODBC_LFLAGS

-L/home/u177603/ODBC/lib



ODBC_LIBS

-liodbc





Directive

Local Value

Master Value



odbc.allow_persistent

On

On



odbc.check_persistent

On

On



odbc.default_cursortype

Static cursor

Static cursor



odbc.default_db

no value

no value



odbc.default_pw

no value

no value



odbc.default_user

no value

no value



odbc.defaultbinmode

return as is

return as is



odbc.defaultlrl

return up to 4096 bytes

return up to 4096 bytes



odbc.max_links

Unlimited

Unlimited



odbc.max_persistent

Unlimited

Unlimited
Вроде из конфига видно что odbc установлен))

На винде я делал коннект таким образом
PHP:
$base = $_SERVER['DOCUMENT_ROOT']."/db.mdb";
$conn = odbc_connect("DRIVER=Microsoft Access Driver (*.mdb); DBQ=$base;", "", "");
Ну а линкуксе такое не прокатывает .... скажите как подсоединиться?

У меня появляется ошибка:

Warning: odbc_connect() [function.odbc-connect]: SQL error: [iODBC][Driver Manager]Specified driver could not be loaded, SQL state IM003 in SQLConnect in /home/xxx/xxx.ru/www/index.php on line 13

В принципе понятно что он ругается что не может загрузить драйвер , это что ж получается odbc установлен, но нет еще драйвера для mdb файлов? или под unix надо каким-то другим образом прописывать DRIVER ?
 

tony2001

TeaM PHPClub
Я предлагаю сразу переключиться с всяких странных mdb на CSV или что-то, для чего не требуются мега-драйверы от MS.

А так - пускай на .m ставят это http://pecl.php.net/package/mdbtools
Оно, конечно, вряд ли соберется уже - экстеншен от бог знает какого года и вся документация в исходниках и примерах.
 

motoroller

Новичок
Нет возможности перейти на csv, задача именно считать данные на сервере из mdb.
Вообщем честно говоря я еле-еле уговорил собратить интерпритатор с iodbc .....
скажите что никакого выхода нет, получается что ли?

Да эти тулсы от 2007 года(
 

tony2001

TeaM PHPClub
Задача "на публичном* юниксовом** хостинге обрабатывать файлы строго виндового*** формата"?

* - на своём сервере можно поставить что угодно, на публичном - проблема.
** - на юниксовом хостинге обрабатывать файлы MS Office? это, как минимум, оригинально, не говоря уж о том, что геморройно.
*** - требование обрабатывать файлы MS Office - это вообще идиотизм, на мой взгляд. есть масса более распространённых и удобных форматов.
 

motoroller

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

motoroller

Новичок
Может быть вы подскажете как установить http://pecl.php.net/package/mdbtools
на данный момент, у меня есть возможность собрать собственный интерпритатор с поддержкой iodbc, насколько я понимаю разницы нет с unixODBC, всмысле я имею ввиду, что могу собратьи с unixODBC, подскажите как подключить mdbtools, это надо делать после компиляции php или вместе и куда какие файлы поместить ...
Я с удовольствием попробую сделать это раз выхода другого нет.
Просто было бы клиентов 5-10, то конечно я сам бы эти файлы брал и переделывал на винде.... локально.... но таких клтентов более 1000, просто я умру всем конвертить)
 

tony2001

TeaM PHPClub
как ставить экстеншены из PECL описано тут:
http://ru.php.net/manual/en/install.pecl.php
http://ru.php.net/manual/en/install.pecl.phpize.php

для сборки нужен пакет mdbtools-devel или mdbtools-dev, или как там он называется на той версии Unix/Linux, которая стоит у мастерхоста.
ODBC не нужен, PECL/mdbtools сам читает mdb-файлы с помощью либы mdbtools (какое, однако, оригинальное имя для либы..).
 

fixxxer

К.О.
Партнер клуба
Может просто взять виндовый хостинг исключительно под задачу конвертации файлов? Под такую задачу самый дешевый подойдет.
Насколько я понимаю, каким-нибудь vbscript-ом перегнать mdb в csv совершенно не проблема.
 

motoroller

Новичок
Готов даже уже взять виндовый ....
Правда vbscript я не знаю, а средствами php опять никак?
 

fixxxer

К.О.
Партнер клуба
Да можно и на php конечно через ODBC. Я уже не помню, я в последний раз встречался с подобными задачми лет 9 назад, тогда вбскриптом было проще и меньше писанины. :)

Но ваще конечно windows не самая лучшая платформа для запуска php. Если есть возможность я бы юзал виндовый хостинг только для конвертации и юниксовый для остального.
 

motoroller

Новичок
Да это и не так просто, все должно быть в одном интерфейсе а брать хостинг чтобы базы конвертить, тоже накладно, тем более базу надо конвертить один раз.
Да я сам намучился собрал я интерпритатор с ODBC (iODBC и unixODBC) думал ну все отлично, а он тут опаньки а драйвера то нет для БД....
как говорится а воз и ныне там
 

tony2001

TeaM PHPClub
В общем, если всё плохо, то я могу помочь - довести до ума PECL/mdbtools и саму libmdb по пути.
В конце концов, это всего-навсего C, так что ничего невозможного там нет.
Бюджет какой?
 

fixxxer

К.О.
Партнер клуба
Да это и не так просто, все должно быть в одном интерфейсе а брать хостинг чтобы базы конвертить, тоже накладно, тем более базу надо конвертить один раз.
Можно какой-нить облачный взять и стартовать по необходимости, будут сущие копейки.
 

motoroller

Новичок
Бюджет 20$, просто больше нет смысла платить, проще взять хостинг тогда уже, за эти бабки.
 

motoroller

Новичок
да и тут дело даже не в том чтобы что-то допиливать, все уже по сути есть все либы, я вот все вместе собрать не могу.... смог только сделать php с поддержкой odbc а вот как велючи туда mdbtools, я не знаю (
 
Сверху