Zacznę od opisania sytuacji, którą posiadam.
Na jednym kompie ( winxp) mam zrobiony serwer www (apache, mysql, php ), gdzie mi wszystko działa jak należy. Wykorzystywany na różne potrzeby.
Drugi sprzęt to typowy serwer IBM iSeries As/400, na którym działa głowny program.
Teraz chciałbym pobrać z serwera IBM pewne dane z bazy danych i wyświetlić je pod php.
Zrobiłem coś takiego. Na kompie gdzie jest serwer www w Administratorze danych ODBC ustawiłem połączenie z serwerem IBM.
Następnie stworzyłem plik w php z poniższym kodem, gdzie mam zapytanie do bazy.
<?php $user = "xxxxxxx"; $pass = "xxxxxxx"; $connect = odbc_connect("bank", $user, $pass); if ( ! $connect) ?> <table> <tr><td width="3%" align="center">Pracownia.</td> <td width="14%" align="center"><b>kod</b></td> <td width="10%" align="center"><b>Numer</b></td> <td width="10%" align="center"><b>magazyn</b></td> <td width="7%" align="center"><b>data</b></td> <td width="7%" align="center"><b>objetosc</b></td> <td width="6%" align="center"><b>jednostka</b></td></tr> <?php $query = " SELECT MAGPOJ.MAPJPO, MAGPOJ.MASRPK, MAGPOJ.MAPLIS, MAGPOJ.MADNNR, MAGPOJ.MADNDT, MAGPOJ.MAPJIL, MAGPOJ.MAPJIJ FROM DAWCY, MAGPOJ, ODDANIA, SLRPRE WHERE (MAGPOJ.MAPJOD=0 AND MAGPOJ.MAPLIS='Z1234' And MAGPOJ.MAPJPO=186 AND MAGPOJ.MADNDT Between 20111001 And 20120805) AND (MAGPOJ.MAPJDR=0) AND (MAGPOJ.MADNPK=oddnpk) AND (MAGPOJ.MADNNR=oddnnr) AND (ODDANIA.ODPLNR=DAplnr) AND (ODDANIA.ODDWNR=dadwnr) AND (DAWCY.DADWEX='K') AND (SLRPRE.SPSRPX In ('FFP','OSOCZ')) AND (MAGPOJ.MASRPK=SPSRPK) ORDER BY MAGPOJ.MAPJPO, MAGPOJ.MASRPK"; $result = odbc_do($connect, $query); $ilosc = odbc_num_rows($result); $obAmount=odbc_num_rows($result); for($x=0;$x<$obAmount;$x++) { while ($wynik = odbc_fetch_row($result)) { <td>'.$wynik['MAGPOJ.MAPJIJ'].'</td> <td align="center">'.$wynik['MAGPOJ.MASRPK'].'</td> <td align="center">'.$wynik['MAGPOJ.MAPJIL'].'</td> <td align="center"></td> <td align="center"></td> <td>'.$row['pracownik'].'</td></tr>'; } } odbc_close($connect); ?>
Połączenie z bazą zostaje nawiązane proawidłowo.
W pozycji "Ilosc wprowadzonych parametrów:" otrzymuję prawidłową ilość rekordów jaka powinna zostać pobrana z bazy serwera IBM np. 278
Tworzy mi się tabela z odpowiednią ilością wierszy np. 278
Problem polega na tym, że te wiersze są puste, tzn. poza liczbą porządkową w dalszej części wiersza nie ma nic.
Ale dane chyba zostają pobrane prawidłowo, skoro liczba rekordów jest prawidłowa?
Może jest jakiś problem w kodzie? ( to pierwsza moja taka "zabawa" z php i ibm)
Może trzeba coś dograć do php lub zmienić w php.ini?
Ma ktoś jakiś pomysł jak to zrobić by wyniki sie wyświetlały prawidłowo?
Pozdrawiam