Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z pobieraniem zmiennej z formularza
Forum PHP.pl > Forum > PHP
zychskater
Witam!

Jestem nowy w PHP i mam pewien problem. Robiąc stronę zrobiłem formularz zamówień. Wysyłałem metodą "post" i wciskałem klienta jako
$klient = $_POST ['klient'];

OK wszystko działało poprawnie i bez zarzutów...dopóki nie zacząłem składać całej strony w PHP, a nie tylko same zmienne formularza.

Funkcję __set() zrozumiałem dosyć szybko jednak __get() już lipa.

I teraz mam takie coś:

klasa 'test' która ma pobierać zmienną $klient i wysyłać do innego pliku z klasą 'test wynik'. Klasa 'test wynik' ma zwyczajnie wyświetlać nazwę klienta.

W pliku o nazwie: test funkcji.php ->

<?php
class test
{

public function __get($klient)
{

return $this->$klient;
}

public function Wyswietl_zawartosc()
{
?>
<form action="wynik_test_funkcji.php" method="GET" >
<fieldset style="border:none">
<div>*Zamawiający:</div>
<div><input type="text" style=" width:200px" maxlength="20" name="klient" /></div>
<div><input type="image" src="img/zamow.jpg" alt="Zamów TAXI 1-91-94"/></div>
</fieldset>
</form>
<?php
}
}
$a = new test;
$a->Wyswietl_zawartosc();

?>
----------------------------------------------------------------------
Natomiast w pliku wynik_test_funkcji.php napisałem:

<?php
require ('test funkcji.php');

class test_wynik extends test
{

public function __set($nazwa, $wartosc)
{
$this->$nazwa = $wartosc;
}

public function Wyswietl_zmienna()
{
echo $this->klient ;
}
}
$b=new test_wynik;
$b->Wyswietl_zmienna();
?>
--------------------------------------------------------------------------
Proszę o wyrozumiałość, na serio w PHP siedze jakoś od miesiąca smile.gif
Z góry dzięki za pomoc!


toel
Tu masz nieźle wyjaśnione czym jest __get i __set http://tuxradar.com/practicalphp/6/14/2


W swojej klasie w żadnym momencie nie pobrałeś zawartości wysłanej z formularza.
Po pierwsze to w pliku 'test' ta klasa Ci jest zbędna. Nie opakowuj wyświetlenia html'a (szczególnie, że nie jest dynamiczny) na siłę w php. Ten plik zostaw normalnie jako (x)html

W pliku 'wynik_test_funkcji' jeśli koniecznie chcesz mieć obsługę tego przez klasę, to możesz np. zastosować coś takiego :

  1.  
  2. class FormHandler
  3. {
  4. private $klient;
  5.  
  6. public function __construct($getvar)
  7. {
  8. $this->klient=$getvar; //tu jeszcze mogła by być jakaś walidacja
  9. }
  10.  
  11. public function returnKlient()
  12. {
  13. return $this->klient;
  14. }
  15.  
  16. }
  17.  
  18. $fhObj= new FormHandler($_GET['klient']);
  19.  
  20. echo $fhObj->returnKlient();
  21.  
  22.  


(pisane z palca ale powinno zadziałać)



Pytanie brzmi tylko - po co ?
Wydaje mi się, że w Twoim przypadku opakowywać w klasę tyle linijek kodu dla prostego zadania, jest przerostem formy nad tym czego w tej chwili potrzebujesz do obsługi strony smile.gif

zychskater
Wielkie dzięki!

Ogarnąłem jakoś smile.gif

Ale nie zrobiłem tego na klasie tylko tak jak napisałeś przez html'a puszczone.

Koń ze mnie jeszcze jest ...uczę się, a człowiek uczy się na błędach.

Jeszcze raz wielkie dzięki za pomoc smile.gif
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.