problem z pobraniem rekordow z tabeli sejm_wystapienia

55 views
Skip to first unread message

Łukasz Iżuk

unread,
Jan 22, 2013, 7:30:18 PM1/22/13
to sejmom...@googlegroups.com
Witam, mam problem z pobraniem obiektów z tabeli sejm_wystapienia. Mianowicie taki kod:
            $dataset = new ep_Dataset( 'sejm_wystapienia' );
            echo 'przed';
            $sejm_wystapienia = $dataset->find_all();
            echo 'po';

powoduje, że cały program wysypuje się już na linii $senat_wystapienia = $dataset->find_all(); i druga instrukcja echo oraz wszystko dalej zwyczajnie już nie działa. Wystarczy zmienić 'sejm_wystapienia' w konstruktorze Dataset na cokolwiek innego, istniejącą, bądź nie nazwę tabeli i iterpreter przechodzi dalej. Rekordy z innych tabel zatem można wyświetlać (testowałem na tabelach 'senat_wystapienia', 'poslowie', 'gminy'). Obiekt Dataset przy tym wydaje się też być prawidłowo zainicjowany, gdyż użycie jego metody count zwraca prawidłową liczbę wszystkich rekordów w tabeli (28755).
Problemem ewidentnie wydaje się find_all() w tym kodzie;/ Ograniczenie liczby pobieranych rekordów także nic nie daje.

Paweł Sroka

unread,
Jan 23, 2013, 10:20:49 AM1/23/13
to sejmom...@googlegroups.com
Wysypuje się z jakimś konkretnym błędem?

Pozdrawiam,
--
Paweł Sroka

Łukasz Iżuk

unread,
Jan 23, 2013, 12:42:13 PM1/23/13
to sejmom...@googlegroups.com
Fatal error: Call to undefined function sm_data_slowna() in /home/***/ftp/sejmometr/eP_API/classes/objects/ep_Sejm_Wystapienie.php on line 16

Tak więc problemem jest ta linijka:
$this->data['tytul'] = strip_tags( 'Wystąpienie '.sm_data_slowna( $this->data['data'] ) ).' '.$this->mowca()->data['nazwa'];
i faktycznie doszukać się nie mogę tej dunkcji sm_data_slowna.

Zen Vantalye

unread,
Jan 23, 2013, 12:46:41 PM1/23/13
to sejmom...@googlegroups.com
W dniu 23 stycznia 2013 18:42 użytkownik Łukasz Iżuk
<luka...@gmail.com> napisał:
Czy problem rozwiązuje zastąpienie jej przez poniższy kod?
$this->data['tytul'] = strip_tags( 'Wystąpienie
'.$this->data['data'].' '.$this->mowca()->data['nazwa']);

Łukasz Iżuk

unread,
Jan 23, 2013, 2:32:41 PM1/23/13
to sejmom...@googlegroups.com
oczywiście.. tylko dlaczego w API jest wywołanie metody, której nie ma/jest niewidoczna?

Paweł Sroka

unread,
Jan 23, 2013, 2:35:36 PM1/23/13
to sejmom...@googlegroups.com
Pewnie błąd, nikt celowo nie wciska nikomu nieistniejących funkcji. Pewnie by się przydał jakiś bugtracker na taki problemy. Może wrzucić tą bibliotekę na github'a, co?

Pozdrawiam,
--
Paweł Sroka

Daniel Macyszyn

unread,
Jan 24, 2013, 2:15:10 AM1/24/13
to sejmom...@googlegroups.com
Witam

Rzeczywiście: w bibliotece jest użyta niezdefiniowana funkcja: sm_data_slowna. Używamy jej na "froncie" portalu Sejmometr do przekształcania dat pobieranych z bazy (w formacie YYYY-MM-DD) do formy "słownej" (np: 24 stycznia 2013 r.). Dodaliśmy do biblioteki blok funkcji pomocniczych i definicja funkcji sm_data_slowna już tam jest. Proszę uaktualnić bibliotekę (kod na GitHubie) i nie powinno być problemu.

Dziękuje za zgłoszenie błędu.
Daniel Macyszyn

Łukasz Iżuk

unread,
Jan 24, 2013, 9:19:04 AM1/24/13
to sejmom...@googlegroups.com
Dziękuję za odpowiedź.
Przy okazji chciałem spytać o jeszcze jedną rzecz (nie chcę niepotrzebnie tworzyć nowych wątków). Mianowicie, dlaczego metoda find_all() nie pobiera domyślnie wszystkich rekordów z tabeli? Np. używając jej na tabeli sejm_wystąpienia zwrócone zostanie tylko 20 wyników. Co ciekawe, dla różnych tabel nie zawsze będzie to liczba 20, czasami 10, jak np. dla tabeli gmin. Dodanie offsetu i limitu do tej metody wydaje się rozwiązywać problem, jednak nie zawsze mamy dostęp do liczby wszystkich rekordów spełniających nasze zapytanie - metoda count() obiektu Dataset o ile się nie mylę, zawsze zwraca liczbę wszystkich obiektów w tabeli, a chodzi o to w tym wypadku, że potrzebna jest liczba wszystkich rekordów w tabeli spełniających dane, określone w zapytaniu warunki.
Tak więc wydają się dwie możliwe drogi do rozwiązania tego problemu - wymuszenie na find_all(), by zwracała wszystkie rekordy spełniające zapytanie, bądź dostęp do informacji, ile jest wszystkich rekordów, które spełniałyby warunki zapytania, a następnie wykonywanie operacji find_all() z offsetem i limitem. Nie wiem jednak jak osiągnąć jedno, bądź drugie.
Reply all
Reply to author
Forward
0 new messages