Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]przekazanie wyniku zapytania do innej strony
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


hej!
mam pytanie-jak przekazac wynik zapytan do drugiej strony?
tzn. mam plik1.php ktory pobiera mi jakies dane z bazy, np
  1. SELECT imie FROM test;
zwroci mi dane: ania, stefan, jozia.
jesli za pomoca metody POST przekaze wynik zapytania do plik2.php to przesle mi sie tylko ostatni wynik=jozia. jak zrobic by wyswietlic w drugim pliku wszystkie dane zwrocone przez zapytanie(czyli: ania, stefan, jozia)?

pzdr!
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


To zależy czy chcesz, żeby na następną stronę przekazywane były wyniki automatycznie, czy np po kliknięciu w link?
Możesz utworzyć formularz a w nim w polach hidden wartości wynikowe, i go przesłać do następnej strony (wtedy będziesz miał przez $_POST), albo przez $_GET, tworząc adres typu:

$nastepna_strona="?zmienna=ania|stefan|jozia";

czyli poprzez dopisywanie w pętli do zmiennej $nastepna_strona kolejnych wyników z bazy
tyle, że później musisz tą zmienną podzielić na pojedyncze dane...

ale może po prostu będzie prościej includować ten plik "plik1.php" w pliku "plik2.php"
i wyniki działania pierwszego będą automatycznie dostępne w tym drugim...
to zależy co chcesz dokładnie osiągnąć...
Go to the top of the page
+Quote Post
uli
post
Post #3





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Albo tablica, albo sesje.

Wybrałbym to drugie.

Opis algorytmu:

Pobierasz imie -> dla każdego robisz $_SESSION['imie[$i]'] -> następna strona: session_start(); -> odczytujesz dopóki isset($_SESSION['imie[$i]'])

Oczywiście zwiększając $i.

Stosowałem takie rozwiązanie parę razy i uznałem je za optymalne z mojego punktu widzenia (co nie znaczy, że najlepsze - po prostu nie znam lepszego rozwiązania:) )
Go to the top of the page
+Quote Post
misty
post
Post #4





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


wiec
po kolei:
1. jesli chodzi o inculdowanie jednego pliku w drugim-to odpada poniewaz plik1.php zawiera w sobie mase rzeczy ktore nie moga sie pojawic w plik2.php. musze przekazac tylko wynik zapytan. jakiekolwiek ramki/divy etc tez odpadaja..

2.$POST... podesle Ci kawalek mojego kodu:

plik1.php
  1. <?php
  2. $polaczenie=..;
  3. $zapytanie="select imie from test;";
  4. $wynik=pg_query($polaczenie, $zapytanie) or die ("error");
  5. while ($row=pg_fetch_row($wynik))
  6. {
  7. foreach ($row as $data)
  8. echo"$data"
  9. }
  10. //tu probuje przekazac wynik zapytania..
  11. echo "<form action=strona2.php method=POST target='_blank'>
  12.  <input type=hidden name=pyt value='$data'>
  13. <br><input type=submit name=search value=pokaz>";
  14. echo "</form>";
  15. ?>


w plik2.php:
  1. <?php
  2. $polaczenie=..
  3. $pyt=$_POST['pyt'];
  4. echo $pyt;
  5. ?>


no i wynikiem dzialania pierwszego skryptu bedzie(przykladowo): ania, stefan, jozia
zas drugiego : jozia...

3. jesli zas chodzi o sesje, chcialabym tego jednak uniknac. baza jest dosc spora, zapytan moze byc cala masa.. nie chce tworzyc dla kazdej mozliwej kolumny $_SESSION['xx[$i]']..
szukam sposobu/funkcji ktora w prosty i przede wszystkim uniwersalny sposob pozwoli mi na przekazywanie wynikow miedzy stronami..

zastanawialam sie nad zrobieniem jakiejs funkcji ktora by wrzucala wynik zapytania do tablicy i pozniej te tablice przekazywac, ale nie za bardzo wiem jak to ugryzc..
Go to the top of the page
+Quote Post
vokiel
post
Post #5





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


$_POST... może tak:

plik1.php
  1. <?php
  2. $polaczenie=..;
  3. $zapytanie="select imie from test;";
  4. $wynik=pg_query($polaczenie, $zapytanie) or die ("error");
  5.  
  6. // początek formularza
  7. echo "<form action=strona2.php method=POST target='_blank'>"
  8. $licznik=0;
  9. while ($row=pg_fetch_row($wynik))
  10.  {
  11.  foreach ($row as $data)
  12.  {
  13.  // tutaj wstawiasz dodawanie pól formularza dzięki temu zapamięta każy, a nie tylk
    o ostatni tak jak poprzednio
  14.  echo "<input type=hidden name=pyt['$licznik'] value='$data'><br />";
  15.  //temu tam jest licznik, żeby utworzyć w $_POST tablicę "pyt" i dodawać do niej kolejne elementy
  16.  
  17.  echo "$data"; // do sprawdzenia może się przydać ;) potem, już może nie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  18.  $licznik++;
  19.  }
  20.  }
  21. // zakończenie formularza
  22. echo "<input type=submit name=search value=pokaz></form>";
  23. ?>


w plik2.php:
  1. <?php
  2. $polaczenie=..
  3. $wyniki = $_POST['pyt'];
  4. for ($i=0; $i=count($wyniki); $i++)
  5.  {
  6.  echo $wyniki[$i]."<br />";
  7. }
  8. ?>


może w ten sposób, ale to trzeba przecież kliknąć w przycisk wyślij, jak to zrobić tak automatycznie to na razie nie mam pomysłu, trzebaby popróbować z javascript...
może jeszcze pomyśle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Mam idea!

A jakby zdefiniować tablicę "PYT[]" jako zmienną globalną?
  1. <?php
  2. global $PYT; 
  3. //nie wiem czy nie trzeba przypadkiem zdefiniować od razu, że to tablica... czyli 
    np tak?
  4. global $PYT = new array(); //tutaj mogę się mylić
  5. ?>


Zapisywać do niej, tak:

  1. <?php
  2. $licznik=0;
  3. while ($row=pg_fetch_row($wynik))
  4.  {
  5.  foreach ($row as $data)
  6.  {
  7.  $PYT[$licznik]=$data;
  8.  $licznik++;
  9.  }
  10.  }
  11. ?>


A odczytywać w ten sposób:
  1. <?php
  2. $polaczenie=..
  3. for ($i=0; $i=count($PYT); $i++)
  4.  {
  5.  echo $PYT[$i]."<br />";
  6. }
  7. ?>


może tak?

Ten post edytował vokiel 16.03.2007, 21:34:45
Go to the top of the page
+Quote Post
Neojawor
post
Post #6





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

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


Cytat
foreach ($row as $data)
echo"$data"

Dziwisz się, że w zmiennej $data masz tylko wartość ostatnią - przeczytaj sobie o foreach w manualu. $data jest zmienną, a nie tablicą, więc nie może zawierać wielu wartości!!!
chcesz mieć wynik selecta w tabeli, to zrób to tak:
  1. <?php
  2. $row=pg_fetch_row($wynik);
  3. ?>

zmienna $row jest tablicą zawierającą wszystkie wyniki zapytania, czyli:
$row[0]=ania
$row[1]=stefan
$row[2]=jozia

chcesz to przesłać, to zrob tak:
  1. <?php
  2. $polaczenie=..;
  3. $zapytanie="select imie from test;";
  4. $wynik=pg_query($polaczenie, $zapytanie) or die ("error");
  5.  
  6. echo "<form action=strona2.php method=POST target='_blank'>";
  7. while ($row=pg_fetch_row($wynik))
  8. {
  9. foreach ($row as $data)
  10. echo "<input type=hidden name=pyt value='$data'>";
  11. }
  12. echo <br><input type=submit name=search value=pokaz>";
  13. echo "</form>";
  14. ?>

dzięki temu masz wszystkie wartości z tabeli w hidden-ie

Ten post edytował Neojawor 17.03.2007, 11:47:19
Go to the top of the page
+Quote Post
misty
post
Post #7





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


sposob z licznikiem nie dziala za nic.. a co do 'count' to to chyba zwraca ilosc wynikow (czyli np.3), a nie wartosci wynikow..
co do pomyslu Neojawora zrobilam juz nawet dokladnie jak napisales, nic nie kombinujac, na drugiej stronie odwoluje sie w ten sposob:
  1. <?php
  2. $pyt=$_POST['pyt'];
  3. echo "$pyt";
  4. ?>

jednak nadal wyswietla sie tylko ostatnia wartosc.. :/
Go to the top of the page
+Quote Post
Cienki1980
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(misty @ 17.03.2007, 12:40:42 ) *
sposob z licznikiem nie dziala za nic.. a co do 'count' to to chyba zwraca ilosc wynikow (czyli np.3), a nie wartosci wynikow..
co do pomyslu Neojawora zrobilam juz nawet dokladnie jak napisales, nic nie kombinujac, na drugiej stronie odwoluje sie w ten sposob:
  1. <?php
  2. $pyt=$_POST['pyt'];
  3. echo "$pyt";
  4. ?>

jednak nadal wyswietla sie tylko ostatnia wartosc.. :/


No i nic dziwnego bo w tym co napisał Neojawor w POST zostanie przekazana tylko ostatnia wartość. Należałoby to zmienić tak:
  1. <?php
  2. $polaczenie=..;
  3. $zapytanie="select imie from test;";
  4. $wynik=pg_query($polaczenie, $zapytanie) or die ("error");
  5.  
  6. echo "<form action=strona2.php method=POST target='_blank'>";
  7. while ($row=pg_fetch_row($wynik))
  8. {
  9. foreach ($row as $data)
  10. echo "<input type=hidden name=pyt[] value='$data'>";
  11. }
  12. echo "<br><input type=submit name=search value=pokaz>";
  13. echo "</form>";
  14. ?>


W takim przypadku $_POST['pyt'] byłaby tablicą z wszystkimi wynikami.
Go to the top of the page
+Quote Post
misty
post
Post #9





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


tym razem na drugiej stronie pokaze sie 'Array'..

heh, juz dziala:)
zrobilam jak pisal Cienki1980, tzn
  1. <?php
  2. name=pyt[]
  3. ?>


a na drugiej stronie po prostu dopisalam 2 linijki:
  1. <?php
  2. $pyt=$_POST['pyt'];
  3. foreach ($pyt as $data)
  4. echo "$data";
  5. ?>


i wsjo:) pokazuje sie wszystko! dzieki wielkie!!:)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 18:33