Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Firebird+php] problem z wyświetlaniem danych
Machine
post 17.11.2004, 13:35:12
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.11.2004

Ostrzeżenie: (0%)
-----


Witam!
Tworzę aplikację bazodanową. Używam Firebirda 1.5 jako bazę danych i php jako język aplikacji. Kod:

  1. <?php
  2.  function ibase_num_rows($zapytanie)
  3.  {
  4.  $i = 0;
  5.  
  6.  while (ibase_fetch_row($zapytanie))
  7.  {
  8. $i++;
  9.  }
  10.  
  11.  return $i;
  12.  }
  13.  
  14.  
  15.  $host = '127.0.0.1:E:/TEST.FDB';
  16.  $username = 'SYSDBA';
  17.  $password = 'masterkey';
  18.  
  19.  @ $connection = ibase_connect($host, $username, $password,'WIN1251');
  20.  
  21.  $zapytanie = 'select * from KLIENCI';
  22.  $wynik = ibase_query($connection, $zapytanie);
  23.  $ile = ibase_num_rows($wynik);
  24.  
  25.  echo '<strong>Klienci</strong><br>';
  26.  
  27.  for ($i=0; $i< $ile; $i++)
  28.  {
  29. $wiersz= ibase_fetch_object($wynik);
  30. echo '<p><strong>'.($i+1).'. Klient, Klient_ID: ';
  31. echo $wiersz->KLIENT_ID;
  32. echo '</strong><br />Nazwisko: ';
  33. echo $wiersz->NAZWISKO;
  34. echo '<br />Imie: ';
  35. echo $wiersz->IMIE;
  36. echo '<br />Nazwa ';
  37. echo $wiersz->NAZWA;
  38. echo '<br />Adres: ';
  39. echo $wiersz->ADRES;
  40. echo '</p>';
  41.  }
  42. ibase_close ($connection);
  43. ?>


Problem polega na tym, że wynik tego wygląda tak:

Klienci

1. Klient, Klient_ID:
Nazwisko:
Imie:
Nazwa
Adres:

2. Klient, Klient_ID:
Nazwisko:
Imie:
Nazwa
Adres:

Tabelę utowrzyłem tak:
CREATE TABLE KLIENCI (
KLIENT_ID INTEGER,
NAZWISKO CHAR(25) NOT NULL,
IMIE CHAR(20) NOT NULL,
NAZWA CHAR(30) NOT NULL,
ADRES CHAR(30) NOT NULL
);

i ręcznie powpisywałem trochę rekordów.
Dlaczego nie wyświetlają mi się dane z tabeli? Firebird chodzi, php obsługuje ibase/firebird. Połączenie z bazą działa, jedynie nie potrafię wyciągnąć danych z tabeli i je wyświetlić. Może ktoś mi pomóc?
Go to the top of the page
+Quote Post
UNIKAT
post 17.11.2004, 14:19:05
Post #2





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 13.11.2003
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Problem polega na tym że funkcja ibase_fetch_row() po jednokrotnym przejściu pozbywa wartości badany obiekt. Po co wcześniej zliczasz ile jest rekordów? wystarczy że wypisywanie odrazu dasz w while'u i dynamicznie powiększysz numer wiersza wypisywanego w danej pętli. Po co dwie pętle jak można tylko jedną.


--------------------
Pozdrawiam
Unikat
Go to the top of the page
+Quote Post
Machine
post 17.11.2004, 14:39:24
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.11.2004

Ostrzeżenie: (0%)
-----


Cytat
Po co wcześniej zliczasz ile jest rekordów? wystarczy że wypisywanie odrazu dasz w while'u i dynamicznie powiększysz numer wiersza wypisywanego w danej pętli. Po co dwie pętle jak można tylko jedną.


ok, już zmieniłem.

Cytat
Problem polega na tym że funkcja ibase_fetch_row() po jednokrotnym przejściu pozbywa wartości badany obiekt.


szczerze mówiąc nie rozumiem tego, ta funkcja miała mi służyc do tego, aby znać ilość zapisanych rekordów i tak długo powatrzać pętlę "for", zrobiłem teraz z whilem.
kod wygląda teraz tak:

  1. <?php
  2.  
  3.  $host = '127.0.0.1:E:/TEST.FDB';
  4.  $username = 'SYSDBA';
  5.  $password = 'masterkey';
  6.  
  7.  @ $connection = ibase_connect($host, $username, $password,'WIN1251');
  8.  
  9.  $zapytanie = 'select * from KLIENCI';
  10.  $wynik = ibase_query($connection, $zapytanie);
  11.  
  12.  echo '<strong>Klienci</strong><br>';
  13.  
  14.  while($wiersz= ibase_fetch_object($wynik))
  15.  {
  16. echo '<p><strong>'.($i+1).'. Klient, Klient_ID: ';
  17. echo $wiersz->KLIENT_ID;
  18. echo '</strong><br />Nazwisko: ';
  19. echo $wiersz->NAZWISKO;
  20. echo '<br />Imie: ';
  21. echo $wiersz->IMIE;
  22. echo '<br />Nazwa ';
  23. echo $wiersz->NAZWA;
  24. echo '<br />Adres: ';
  25. echo $wiersz->ADRES;
  26. echo '</p>';
  27. $i++;
  28.  }
  29.  
  30. ibase_close ($connection);
  31. ?>



no i działa biggrin.gif dzięki za pomoc!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.06.2025 - 14:33