Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][html] przekazywanie wynikow z bazy przez php do html
misty
post
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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
misty
post
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:

  1. <?php
  2. $wynik=pg_query($polaczenie, $zapytanie);
  3. while ($row=pg_fetch_row($wynik))
  4. {
  5. foreach ($row as $data)
  6. $_SESSION['data']=$data;
  7. echo ''.$_SESSION['data'].''; //i tu mi sie pojawi caly ciag wynikow
  8. }
  9. ?>


plik2.php

  1. <?php
  2. $data=$_SESSION['data'];
  3. print ("$data");
  4. ?>


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..
Go to the top of the page
+Quote Post
chlebik
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 5
Dołączył: 12.09.2006
Skąd: Pruszków/Warszawa

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


Cytat(misty @ 25.02.2007, 12:20:54 ) *
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:

  1. <?php
  2. $wynik=pg_query($polaczenie, $zapytanie);
  3. while ($row=pg_fetch_row($wynik))
  4. {
  5. foreach ($row as $data)
  6. $_SESSION['data']=$data;
  7. echo ''.$_SESSION['data'].''; //i tu mi sie pojawi caly ciag wynikow
  8. }
  9. ?>


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:

  1. <?php
  2. while($row = mysql_fetch_row($query2)) 
  3.  
  4.  {
  5.  
  6. print("<TR><TD>Tytul to: $row[0]</TD></TR>");
  7. print("<TR><TD>Liczba plyt to: $row[1]</TD></TR>");
  8. print("<TR><TD>Zestaw plyt to: $row[2]</TD></TR>");
  9. print("<TR><TD>Dlugosc filmu to: $row[3]</TD></TR>");
  10.  
  11. }
  12. ?>



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.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 13:11