Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przenoszenie zmiennej pomiędzy stronami
Forum PHP.pl > Forum > Przedszkole
if_error
Witam mam mały problem - otóż potrzebuje przenieść zmienna z wyszukiwarki pomiędzy stronami i nie wiem za bardzo jak.

A chodzi mi o to: Mam form. wyszukiwarki -> wpisuje słowo np: Piotr -> przenosi mnie na strone odbierz_dane.php i tam mam:
  1. <?php
  2. ...
  3. function odbierz($pole) {
  4. $pole = trim($pole);
  5. if (get_magic_quotes_gpc()) $pole = stripslashes($pole);
  6. return htmlspecialchars($pole, ENT_QUOTES);
  7. }
  8. $search_imie = odbierz($_POST['search_imie']);
  9. ...
  10. ?>

na tej stronie chcę wyświetlić tylko niektóre dane z tabeli gdyż przy większej liczbie ( i wszystkich danych z taeli ) wyszukanych danych użytkownik mógłby leciec scroll'em przez kilka minut zanim dotarlby do konca strony. Dlatego wyświetlam tylko kilka podstawowych danych i dopisuje pod każdem - czytaj więcej. Po kliknięciu w czytaj więcej uzytkownik zostaje przeniesiony na kolejna strone gdzie ma wszystkie informacje z tabeli o danej. np. osobie.

I problem jest gdy chcę wrócić do wyników wyszukiwania klikając w odnośnik powrót - wówczas na stronie nie ma żadnych wyników - z wiadomego powodu. Jak to poprawić? zmienną przenosić w GET a nie POST? Tylko jak? worriedsmiley.gif
plurr
do formularzy proponuje uzyc tablicy POST np:


  1. <form method='POST' action='plik.php'>
  2. <input name='zmienna'>
  3. <input type='submit' value='wyslij'>


przesylasz metoda post 'zmienna' do pliku plik.php bedize ona znajdowala sie w tablicy POST.

  1. <?php
  2. $zmienna = $_POST['zmienna'] 
  3.  
  4. echo $zmienna;
  5. ?>



/edit/ teraz zalapalem ze nie o to ci chodzi, wybacz slonce wali mi prosto w glowe biggrin.gif Jesli uzytkownik ma klikac 'wiecej' i ma byc przeniesiony na info szczegolowym o osobie to proponuje przesylac id w get.

np:
  1. <a href=\"index.php?id=$id\">


plik.php
  1. <?php
  2. $id = $_GET['id'];
  3. $sql = "select * from osoba where id=".$id;
  4.  
  5. itd...
  6. ?>
if_error
ok ale jak tą zmienną odebraną na stronie plik.php przenieść na stronę kolejny_plik.php ? a wracając ze strony kolejny_plik.php wrócić z tą samą zmienna?
John
ciastko, sejsa, tablica w innym pliku, tymczasowy zapis w pliku tekstowy.
plurr
Cytat(if_error @ 2.08.2007, 18:31:34 ) *
ok ale jak tą zmienną odebraną na stronie plik.php przenieść na stronę kolejny_plik.php ? a wracając ze strony kolejny_plik.php wrócić z tą samą zmienna?


dalej tak samo smile.gif caly czas sobie przesylasz zmienna $id do nastepnego pliku metoda get jak to pokazalem.

1. $id -> $_GET['id']
2. $id = $_GET['id']
i znow cykl sie powtarza
3. $id -> $_GET['id']

Caly czas dodajac zmienna $id do adresu.

Chcoiaz jak to juz napisal john, lepiej uzyc sesji i ciach smile.gif
if_error
Cytat
ok juz zalapałem :-) dzieki śliczne


No to jeszcze jedno pytanie: Zrobiłem tak:
  1. <?php
  2. ...
  3. $search_ulica = $_GET['search_ulica']; echo"<a href=search_billboard.php?search_ulica=$search_ulica>powrót</a>";
  4. ...
  5. ?>


no i ładnie mi już przenosi ponownie na strone wyszukiwania gdzie miałem poprzednie wyniki. ALE no właśnie - kiedy wpisuje w wyszukiwarce np. Powstancow Warszawy i wysylam POST'em to ładnie mi wyswietla wyniki dla danych spełniajacych kryteria wyszukiwania - natomiast jak chcę przenieść GET'em to ucina mi końcówke i przenosi tylko Powstancow - dlaczego?
mitp
może tak?:

  1. <form action="cos.php" method="POST">
  2. <input type="hidden" size="1" name="search_ulica" value="'.$search_ulica.'">
  3. <input type="submit" name="search_ulica">
  4. </form>
John
W tedy będzie miał nie ładny przycisk od formularza. Po drugiem metodą GET nie możesz przenosić zmiennych ze spacjami, bo zwyczajnie nie da sie paskiem adresowym przenieść spacji, ale możesz sobie z tym łatwo poradzić, piszą prostą funkcję, która zamieni spacje na podłogi a potem z powrotem.

  1. <?php
  2. function zakoduj($ulica)
  3. {
  4. $words = explode(' ',$ulica);
  5. $ulica_zak = implode($words, '_');
  6. return $ulica_zak;
  7.  
  8. // zwróci coś takiego : ulica_ze_spacjami
  9. }
  10. function odkoduj($ulica_zak)
  11. {
  12. $words = explode('_',$ulica);
  13. $ulica_od = implode($words,' ');
  14. }
  15. ?>


tak wiem,że można użyć str_replace, ale słowo explode ładnie brzmi ;-)

co do polskich znaków to większa zabawa bo musisz je zamieniać na odpowiedniki rozumiane przez html.
if_error
to jeszcze pytanie: obie funkcje wstawiam na stronie na której odbieram pierwszy raz POST'em?
John
funkcję zakoduj wstawiasz na stronie z której chcesz wysłać zmienną metodą GET
przykład :
  1. <?php
  2. // 
  3.  
  4.  
  5. // tu definicja funkcji zakoduj
  6.  
  7. //
  8. zakoduj($ulica);
  9. echo '<a href=kolejna_strona.php?ulica='.$ulica_zak.'>kolejna strona</a>';
  10. ?>

a odkoduj na stronie,która ma odebrać zmienną wysłaną metodą GET
  1. <?php
  2. //
  3.  
  4. // tu definicja funkcji odkoduj
  5.  
  6. //
  7. odkoduj($ulica);
  8. echo $ulica_od;
  9. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.