Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z metodą POST, formularz i zapis danych
kolryb29
post 28.07.2009, 11:00:38
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 28.07.2009

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


Witam, serdecznie, głowię się nad pewnym formularzem. Potrzebuję wyniki uzyskane z przycisków zapisać i później zsumować razem. Rozważałem już tablice globalne, singletona... Co również nie dało efektu... Może ktoś jest w stanie pomóc.

Moj Kod - test.php:

  1. <?
  2.   // pytanie 1
  3.    if($_GET['pyt']=="1") {
  4.          echo'
  5.          <form action="test.php?pyt=2" method="POST">
  6.          Pytanie 1: Tresc<br/>
  7.          <input type="radio" name="p1" value="1">Odpowiedz 1 (1 pkt)
  8.          <input type="radio" name="p1" value="2">Odpowiedz 2 (2 pkt)
  9.          <input type="radio" name="p1" value="3">Odpowiedz 3 (3 pkt)
  10.          <input type="submit" value="Dalej" onclick="sendToPHP" >
  11.          </form>';
  12.    }
  13.    
  14.  
  15.    // pytanie 2
  16.    if($_GET['pyt']=="2"){
  17.          if(isset($_POST['p1'])) {
  18.          
  19.          $punkty->setPtk($_POST['p1'],1);
  20.  
  21.          echo'
  22.          <form action="test.php?pyt=3" method="POST">
  23.          Pytanie 2: tresc<br/>
  24.          <input type="radio" name="p2" value="1">1
  25.          <input type="radio" name="p2" value="2">2
  26.          <input type="radio" name="p2" value="3">3
  27.          <input type="radio" name="p2" value="4">4
  28.          <input type="submit" value="Dalej" onclick="sendToPHP" >
  29.          </form>';
  30.          }
  31.        else { echo 'nie odpowiedziales na pytanie!';}  
  32.    }
  33.        
  34.      
  35.      // pytanie 3
  36.      if($_GET['pyt']=="3"){
  37.      if(isset($_POST['p2'])) {
  38.          
  39.          //punktacja
  40.          $punkty->setPtk($_POST['p2'],2);
  41.          
  42.          echo'
  43.          <form action="test.php?pyt=4" method="POST">
  44.          Pytanie 3: Tresc<br/>
  45.          <input type="radio" name="p3" value="4">Odpowiedz 1 (4 pkt)
  46.          <input type="radio" name="p3" value="2">Odpowiedz 2 (2 pkt)
  47.          <input type="radio" name="p3" value="2">Odpowiedz 3 (2 pkt)
  48.          <input type="submit" value="Dalej" >
  49.          </form>';
  50.          } // ..end if isset
  51.        else { echo 'nie odpowiedziales na pytanie!';}  
  52.      } // ..end if
  53. ?>


Singleton:

  1. <?php
  2.  
  3. class Punkty{
  4.  
  5. protected static $_instance;
  6. public $ptk = array();
  7.  
  8. protected function __construct() # we don't permit an explicit call of the constructor! (like $v = new Singleton())
  9. { }
  10.  
  11. public static function getInstance()
  12. {
  13. if( self::$_instance === NULL )
  14. self::$_instance = new self();
  15.  
  16. return self::$_instance;
  17. }
  18.  
  19. public function setPtk($ptk, $nrpyt){
  20. $this->ptk[$nrpyt]=$ptk;
  21. }
  22.  
  23. public function getPtk($nrPyt){
  24. return $this->ptk[$nrPyt];
  25. }
  26. }
  27.  
  28.  
  29. ?>


Próbowałem to zrobić jako zwykłe przypisywanie do zmiennej:

$wynik=$_POST[p1];

następnie:

$wynik+=$_POST[p2];

ale niestety, zawsze dostaję wynik z aktualnie rozwiązanego formularza...


Pozdrawiam
Go to the top of the page
+Quote Post
vokiel
post 28.07.2009, 11:21:22
Post #2





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

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


Może dodaj wywołanie tego singletona przed ustawieniem pkt:
  1. <?php
  2. require_once 'Punkty.class.php'; // czy jakakolwiek jest ścieżka do pliku, chyba, że masz autoload
  3. $punkty= Punkty::getInstance(); // pobierz instancję z singletona
  4. $punkty->setPtk($_POST['p1'],1); // ustaw pkt
  5. ?>


--------------------
Go to the top of the page
+Quote Post
michaJlS
post 28.07.2009, 11:23:57
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

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


Przecież przy każdym odświeżeniu strony skrypt ci sie uruchamia od nowa, więc i wszystkie zmienne tworzone są na nowo. Musisz przekazywać obiekt $punkty pomiędzy podstronami. Poczytaj o sesjach i serializowaniu.
Go to the top of the page
+Quote Post
kolryb29
post 28.07.2009, 11:31:02
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 28.07.2009

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


Tak też zrobiłem, ale nie mogę tego zsumować?

w drugim ifie daję: $punkty->setPtk($_POST['p1'],1)
w trzecim: $punkty->setPtk($_POST['p2'],2)

Nawet samo wyświetlanie nie działa prawidłowo, gdy daję:

echo $punkty->getPtk(1);
echo $punkty->getPtk(2);

To otrzymuję tylko drugą (ostatnią) wartość...
Go to the top of the page
+Quote Post
Suh
post 28.07.2009, 19:14:13
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 27
Dołączył: 24.08.2007
Skąd: Tarnów

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


W tablicy $_POST (tak samo z resztą jak w $_GET, czy ogólnie $_REQUEST) znajduje się tylko AKTUALNE żądanie wysyłane do serwera. Dobrze by było abyś zrobił tak jak podyktował Ci wcześniej michaJlS. Użyj sesji. Tak będzie chyba najprościej.

Ten post edytował Suh 28.07.2009, 19:14:41


--------------------
Pomogłem ? Odwdzięcz się, kliknij POMÓGŁ.
Go to the top of the page
+Quote Post
kolryb29
post 30.07.2009, 07:52:33
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 28.07.2009

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


Witam, zrobiłem to jeszcze inaczej, tworze plik, który przechowuje wynik. Niestety moja metoda działa tylko pod firefoxem? Opera i IE nie przesyłają mi danych do tablicy POST? Pytanie dlaczego? Co pominąłem?

TUTAJ adres do testowania - http://gangs.ovh.org/

Ten post edytował kolryb29 30.07.2009, 07:53:17
Go to the top of the page
+Quote Post
nospor
post 30.07.2009, 07:56:23
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jesli uzywasz type="image" to postem nie idzie nazwa pola, a:
nazwa_x oraz nazwa_y

naprawde ciezko sprawdzic samemu co zawiera post i nie latac z taką pierdułą po forum?
  1. <?php
  2. print_r($_POST);
  3. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kolryb29
post 30.07.2009, 08:30:26
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 28.07.2009

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


To skąd taka rozbieżność pomiędzy Firefoxem, a Operą i IE ?

W FF widać że $_POST jest 3 elementowy, w O i IE tylko 2 ?

Ten post edytował kolryb29 30.07.2009, 08:30:41
Go to the top of the page
+Quote Post
nospor
post 30.07.2009, 08:32:27
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




bo standardem jest tylko nazwa_x i nazwa_y.
A FF sobie tak dla chcecy dodaje jeszcze jedno pole.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kolryb29
post 30.07.2009, 09:02:01
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 28.07.2009

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


Dzięki za pomoc, na przyszłość jakby ktoś kombinował można to załatwić tak :]
Kod
<button  name="button_nm" onmouseover="this.className=\'imageOn\'" onmouseout="this.className=\'imageOff\'" value="1" type="submit"> <img src="source_f_img" alt="Odpowiedz"> </button>
Go to the top of the page
+Quote Post
nospor
post 30.07.2009, 09:03:58
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale to mozna bylo zalatwic tak jak miales. Tylko zamiast w $_POST sprawdzac NAZWA, to miales sprawdzac NAZWA_X - przeciez caly czas ci to mowie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kolryb29
post 30.07.2009, 09:12:08
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 28.07.2009

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


W sumie tez racja, dzięki wielkie!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 13:53