![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
witam
problem mam pewnie dosc banalny, przejrzalam forum w poszukiwaniu podobnych watkow ale nadal nie do konca wiem jak to ugryzc. problem wyglada tak: mam prosta stronke na ktorej uzytkownik moze sobie przegladac rozne rzeczy z bazy danych. z baza lacze sie i wyswietlam dane przy pomocy php. dane ukazuja sie w tablicach i uzytkownik powinien miec mozliwosc ich wydruku. po kliknieciu na 'drukuj' otwiera sie nowe okno w ktorym powinny ukazac sie tabele z danymi, bez tych wszystkich reklam itd, czyli gotowe do druku. pytanie moje jak zrobic by w tym formularzu (xhtml) pokazywaly sie dane ktore wczesniej pobieralam przy pomocy php? tzn bez zbednego wklejania select z php do tego mojego formularza gotowego do wydruku? czyli jak przekazac dane pobrane z bazy przez plik test.php do test.html? pzdr! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
no miales racje, poszlo:)
takie jeszcze pytanie mam: bo w plik1.php do $_SESSION['data'] przesylam dane z bazy danych. i one mi sie wyswietlaja w tablece, mam petle wiec wszystko jak nalezy sie podstawia, mniej wiecej tak to wyglada:
plik2.php
w plik2.php pojawi mi sie tylko ostatnia zmienna z $_SESSION['data']. tzn jesli w plik1.php zapytanie zwroci i przypisze do $_SESSION['data'] ciag zmiennych: a, b, c, d.. to plik1.php pokaze wszystkie, a plik2.php pokaze tylko ostatni, czyli tu 'd'. wiec moje pytanie jest takie czy mozna cale tablice przekazac? czy musze zrobic jakas petle zeby sczytal 1 wartosc, przekazal do plik2.php, potem ja wywalil i sczytal nastepna i przekazal do plik2.php, itd? a druga sprawa to jak pozbyc sie tego komunikatu: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/htdocs/plik2.php:9) in /var/www/htdocs/plik2.php on line 11" title="Zobacz w manualu PHP" target="_manual poczytalam na forum co nieco, dodalam ob_start() i ob_end_flush() w obu plikach ale ten warning pojawia sie nadal. tzn pojawia sie tylko w plik2.php.. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
no miales racje, poszlo:) Grazie. Cytat takie jeszcze pytanie mam: bo w plik1.php do $_SESSION['data'] przesylam dane z bazy danych. i one mi sie wyswietlaja w tablece, mam petle wiec wszystko jak nalezy sie podstawia, mniej wiecej tak to wyglada:
Znowu wrocimy do korzeni i przeanalizujemy ten kod linijka po linijce. Na poczatku do zmiennej $wynik przypisujesz wynik dzialania funkcji pg_query (domyslam sie, ze to od PostgreSQL). Co robi ta funkcja pg_query ? Otoz pobiera ona dane z bazy, ale nie przekazuje ich bezposrednio do PHP. W tym czasie dane znajduja sie w buforze i nie sa dostepne. Trzeba te dane pobrac i stad nastepna komenda czyli funkcja pg_fetch_row. Co konkretnie robi ta funkcja? Ano pobiera te dane z bufora i przerabia je na TABLICE INDEKSOWANA LICZBAMI. Nie wiem jak wyglada tabela, z ktorej pobierasz dane, ale prawda jest taka, ze kazda kolejna komorka tej tablicy zawiera dana z kolejnego "rzedu" pobranych danych i mozna sie do niej odnosic za pomoca indeksu liczbowego. U mnie (lista filmow, ktore sa pobierane z bazy danych) ten fragment kodu (wyswietlanie danych pobranych z tabeli) wyglada tak:
Dlaczego to pisze? Po to, aby pokazac, ze nie ma sensu przkeazywac za kazdym przejsciem petli przypisania danej pobranej z bufora do supertablicy tylko po to, aby ja wypisac na ekranie. Do tego spokojnie mozesz uzyc echo "$data". Cytat w plik2.php pojawi mi sie tylko ostatnia zmienna z $_SESSION['data']. tzn jesli w plik1.php zapytanie zwroci i przypisze do $_SESSION['data'] ciag zmiennych: a, b, c, d.. to plik1.php pokaze wszystkie, a plik2.php pokaze tylko ostatni, czyli tu 'd'. wiec moje pytanie jest takie czy mozna cale tablice przekazac? czy musze zrobic jakas petle zeby sczytal 1 wartosc, przekazal do plik2.php, potem ja wywalil i sczytal nastepna i przekazal do plik2.php, itd? No nie bardzo jest jak zrobic to, co tutaj napisalas. Generalnie najlepiej zrobic to w ten sposob, ze w pliku1 stworzysz sobie tablice (albo zagniezdzona, albo zwykla) do ktorej kolejnych komorek bedziesz wsadzala kolejne wartosci zczytane z bufora (czyli musisz to przypisanie umiescic w petli while ($row=pg_fetch_row($wynik)) {.......} A juz po wyjsciu z tej petli nalezy przekazac do $_SESSION['przekazywana_tablica'] cala tablice i na nowej stronie po prostu przejsc przez nia wypisujac na ekranie kolejne komorki. Nie dziw sie, ze nie podaje kodu - jak sama dojdziesz do rozwiazania poslugujac sie wskazowkami to wiecej sie nauczysz. Wiem z autopsji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat a druga sprawa to jak pozbyc sie tego komunikatu: <span style="font-weight: bold;"><a href="http://pl.php.net/ Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/htdocs/plik2.php:9) in /var/www/htdocs/plik2.php on line 11" title="Zobacz w manualu PHP" target="_manual"> Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/htdocs/plik2.php:9) in /var/www/htdocs/plik2.php on line 11</a></span> poczytalam na forum co nieco, dodalam ob_start() i ob_end_flush() w obu plikach ale ten warning pojawia sie nadal. tzn pojawia sie tylko w plik2.php.. Wszystko przecie po angielskiemu napisane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Po prostu kod z pliku2.php (a dokladniej session_start()) wystepuje po wyslaniu do przegladarki jakiegos znacznika HTML. Miej pewnosc, ze kod php w tym pliku wystepuje przed wszelakim kodem w HTMLu. Jesli nie masz w tym pliku kodu HTML to czesto problemem jest tez kodowanie (przegladarka cos tam przesyla). No i na koniec poczytaj tutaj: http://pl2.php.net/session_start The truth is out there. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 13:11 |