informace: ODBC, PHP a Excel

From: Viktor Matys (vmatys@iol.cz)
Date: 20. 01. 2000, 19:30 CET


Nasledujici reseni mi zabralo temer den prace. Pokud tento cas nekomu
usetrim, budu rad (a on asi taky :o)
Pro testovani databazovych funkci v PHP jsem potreboval vytvorit rychle a
lehce databazi, a to nejlepe v Excelu. Potiz s niz jsem se utkal byla ta, ze
po nastaveni ODBC spojeni v ovladacich panelech se mi databazi podarilo v
PHP otevrit (ODBC_Connect), ale dotaz do databaze (ODBC_Exec) hlasil, ze
nemuze najit zdroj dat pro dotaz. Domnival jsem se, ze timto zdrojem musi by
nazev prislusneho listu, ale chyba lavky.
Zdrojem dat je  p o j m e n o v a n a   o b l a s t  (v Excelu / menu:
Vlozit - nazev - definovat).

Jak udelat databazi v Excelu:
V prvnim radku se uvedou nazvy poli (na ty se pak odkazujeme v PHP funkci
ODBC_Result)
V dalsich radcich jsou potom jednotlive polozky databaze.
Oblast databaze oznacime mysi (vcetne prvniho radku) a oblast pojmenujeme
(viz vyse). Na tento nazev se pak odkazujeme v PHP funkci ODBC_Exec za
klauzuli FROM).
Pozor: Oznacena oblast by mela koncit poslednim vyplnenym radkem
tabulky-databaze. Pak bude i testovani konce dat v PHP fungovat spravne
(vysledek funkce ODBC_Fetch_Row - true/false). Pokud jako pojmenovanou
oblast vyberete cele sloupce (abyste po pridani ci ubrani radku v databazi
nemuseli priste oblast znovu oznacovat a tim si setrit praci), nezapomente v
PHP testovat konec dat (treba while $Udaj=="").

Aby ODBC spojeni vzniklo, musime je vytvorit v Ovladacich panelech - Zdroje
ODBC - Systemova DSN - Pridat. V seznamu vybrat "MS Excel Driver" (neni-li v
seznamu, je nutne ho doinstalovat z MS Office instal. media) a pokracovat
tlacitkem "dokoncit". V nasledne tabulce zadate "nazev zdroje dat" -
libovolne (na ten se pak budete odkazovat v PHP fci ODBC_Connect). A dale
tlacitkem "vybrat sesit" zadate cestu a nazev .xls souboru, v nemz mate
databazi vytvorenou). A je to !

Baj baj a PHP a J.Koskovi Zdar !

Viktor



This archive was generated by hypermail 2.1.2 : 03. 09. 2001, 22:37 CEST