Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odpowiednia strona w zależności od podanych wcześniej odpowiedzi.
Apox
post 16.09.2007, 23:11:01
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.09.2007

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


Chciałem napisać stronę w formie testu wyboru, która po wybraniu odpowiednich odpowiedzi w formularzu i zatwierdzeniu odeśle do odpowiedniej strony zależnie od wcześniej wybranych odpowiedzi. Naszukałem się po sieci, ale nie znalazłem nic co by tak zadziałało.

Jak ktoś nie rozumie o co mi loto podam mały schemacik jak ja bym to widział:

Mamy n pytań z odpowiedziami... (jedna możliwa odpowiedź przy jednym pytaniu)
Pytanie 1
a) Odpowiedź a)
B) Odpowiedź B)
c) Odpowiedź c)

Pytanie 2
a) Odpowiedź a)
B) Odpowiedź B)
c) Odpowiedź c)

...

Pytanie n
a) Odpowiedź a)
B) Odpowiedź B)
c) Odpowiedź c)

No i szukam skryptu, który po zaznaczeniu wszystkich odpowiedzi i zatwierdzeniu sumowałby udzielone odpowiedzi i np. w przypadku gdy odpowiedź a) powtórzy się 6 razy , B) - 7, c) - 2 otwierałby stronę o nazwie a6b7c2.html

Zaznaczam, że dobrze zdążyłem poznać póki co tylko HTML i z tej perspektywy widzę tylko takie rozwiązanie, ale zdaję sobie sprawę, że istnieje jeszcze słabo mi znany PHP, w którym napewno będzie to inaczej wyglądało. Czekam na pomysły.

PS: Terminy mnie gonią ;)

Ten post edytował Apox 16.09.2007, 23:11:29
Go to the top of the page
+Quote Post
c3zi
post 17.09.2007, 06:23:50
Post #2





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

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


Możesz użyć PHP lub JS. Jeśli chodzi o PHP to robisz zwykły formularz, w nim określasz plik do którego zostaną przesłane dane. Następnie w tym pliku robisz obliczenia, po czym odp. używasz funkcji header.
Jeśli chodzi o JS to window.location.replace("test.html")


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

Go to the top of the page
+Quote Post
Apox
post 18.09.2007, 17:13:44
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.09.2007

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


Wolałbym użyć JS, ale nie moge wykombinować jak użyć tego window.location.replace("test.html"). Jakaś podpowiedź? Przypominam, że JS i PHP znam tylko szczątkowo i przydałoby się trochę bardziej łopatologicznie.
Go to the top of the page
+Quote Post
Cienki1980
post 18.09.2007, 17:32:45
Post #4





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

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


Cytat(Apox @ 18.09.2007, 18:13:44 ) *
Wolałbym użyć JS, ale nie moge wykombinować jak użyć tego window.location.replace("test.html"). Jakaś podpowiedź? Przypominam, że JS i PHP znam tylko szczątkowo i przydałoby się trochę bardziej łopatologicznie.

Szczątkowa znajomość PHP i JS to trochę wg mnie mało. O wiele lepiej ( prościej jak dla mnie ) zrobić to w php ( i wystarczą do tego podstawy ) a w JS trzeba by napisać funkcję, która wywoływała by się po zatwierdzeniu formularza.

W funkcji tej czytasz wszystkie zaznaczone pola odpowiedzi i określasz na tej podstawie ( licząc ilości zaznaczonych pól a,b,c,d ) nazwę pliku który ma się pokazać ...


--------------------
404
Go to the top of the page
+Quote Post
Nattfarinn
post 20.09.2007, 13:49:57
Post #5





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


Napisane na szybko i prawdopodobnie bardzo "na około" (nie znam za dobrze JS), ale działające. Nie wymaga przesyłania danych z formularza.


  1.  
  2. function Zlicz()
  3. {
  4. var Odpowiedzi = new Array;
  5. Odpowiedzi['a'] = 0;
  6. Odpowiedzi['b'] = 0;
  7. Odpowiedzi['c'] = 0;
  8. var IloscPytan = document.getElementsByName("pytanie").length;
  9. for(var i = 1; i <= IloscPytan; i++)
  10. {
  11. var Pytania = document.forms['quiz'].elements['pytanie'+i];
  12. for(var j = 0; j < Pytania.length; j++)
  13. {
  14. if(Pytania[j].checked) { Odpowiedzi[Pytania[j].value]++; }
  15. }
  16. }
  17. document.getElementById("licznik").innerHTML = 'a' + Odpowiedzi['a'] + 'b' + Odpowiedzi['b'] + 'c' + Odpowiedzi['c'] + '.html';
  18. // document.location = document.getElementById("licznik").innerHTML;
  19. }
  20.  
  21. <form name="quiz">
  22. <div name="pytanie">
  23. Jak się czujesz? <br />
  24. <label><input type="radio" name="pytanie1" value="a"> Źle</label><br />
  25. <label><input type="radio" name="pytanie1" value="b"> Dobrze</label><br />
  26. <label><input type="radio" name="pytanie1" value="c"> Nie sprawdzałem</label><br />
  27. </div><br />
  28.  
  29. <div name="pytanie">
  30. Jak się czujesz? </br>
  31. <label><input type="radio" name="pytanie2" value="a"> Źle</label><br />
  32. <label><input type="radio" name="pytanie2" value="b"> Dobrze</label><br />
  33. <label><input type="radio" name="pytanie2" value="c"> Nie sprawdzałem</label><br />
  34. </div><br />
  35.  
  36. <div name="pytanie">
  37. Jak się czujesz? </br>
  38. <label><input type="radio" name="pytanie3" value="a"> Źle</label><br />
  39. <label><input type="radio" name="pytanie3" value="b"> Dobrze</label><br />
  40. <label><input type="radio" name="pytanie3" value="c"> Nie sprawdzałem</label><br />
  41. </div><br />
  42. </form>
  43.  
  44. <div id="licznik"> </div>
  45.  
  46. <input type="button" value="Podlicz" onclick="Zlicz()">



Edit: Kod działa w 100% na kopiuj/wklej. Nie przenosi jednak do pliku (wyświetla tylko jego nazwę). Żeby przeniesienie miało miejsce, wystarczy zmienić:

  1. document.getElementById("licznik").innerHTML = 'a' + Odpowiedzi['a'] + 'b' + Odpowiedzi['b'] + 'c' + Odpowiedzi['c'] + '.html';
  2. // document.location = document.getElementById("licznik").innerHTML;


na

  1. document.location = 'a' + Odpowiedzi['a'] + 'b' + Odpowiedzi['b'] + 'c' + Odpowiedzi['c'] + '.html';


Dla samych testów, można też się pozbyć na szybko znaków komentarza (//).

Pozdrawiam!

Ten post edytował Nattfarinn 20.09.2007, 14:09:59


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
Apox
post 20.09.2007, 16:37:18
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.09.2007

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


Skrypt działa smile.gif Jak skończę stronę to podam link. Podziękowania dla Nattfarinn, który nie dał mi się pomęczyć tongue.gif
Go to the top of the page
+Quote Post
varulven
post 30.09.2008, 18:45:54
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 30.09.2008

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


Witam,
i przepraszam na wstępie, że odgrzewam tak starego kotleta, ale właśnie takiego skryptu szukałem winksmiley.jpg
Chciałbym tylko zapytać szanownych forumowiczów, jak należałoby zmodyfikować ów skrypt, by strona wynikowa (czyli ta, na którą przenosi się użytkownik po wypełnieniu testu), była rezultatem zliczonej większości danych typów odpowiedzi.
Czyli mniej więcej tak:

PYTANIE 1:
A. Odp.1
B. Odp.2

PYTANIE 2:
A. Odp.1
B. Odp.2

PYTANIE 3:
A. Odp.1
B. Odp.2

Po wypełnieniu zlicza, których odpowiedzi było więcej ('A' lub 'B') i w zależności od tego przenosi na stronę z wynikami dla "większości 'A'" lub "większości 'B'".

Czy mogę liczyć na pomoc w tej sprawie? Myslę, że ten powyższy skrypt to jest właśnie to, tylko brakuje mu małej modyfikacji.
Niestety tak, jak zakładający ten wątek, jestem nowicjuszem w temacie skryptowym i dopiero co oswoiłem się (mam nadzieję, że wystarczająco) z html-em i css-em.

Z góry dziękuję za jakąkolwiek pomoc i wskazówki!
Pozdrawiam!

Ten post edytował varulven 30.09.2008, 18:49:05
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: 7.06.2024 - 19:14