Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z robieniem quizu
Forum PHP.pl > Forum > Przedszkole
qwertycxz
Witam, piszę tu ponieważ długo potrwałoby zanim doszedłbym do tego sam, a Wy zapewne będziecie mogli mi pomóc w mgnieniu oka.
A mianowicie mam plik index.php, zaikcludowałem do niego inny plik php który ma zawierać pytanie z quizu i możliwe odpowiedzi (A,B,C,D). Pytanie i odpowiedzi mam już gotowe jako grafikę, samo pytanie udało mi się wyświetlić, lecz tutaj nasuwa się mój dylemat. Chciałbym zrobić tak, by z kilkudziesięciu pytań zapisywały się odpowiedzi do pliku txt, aby później można było wyliczyć punkty. Przynajmniej tak to sobie wyobraziłem. A więc: nie wiem jak zrobić by były 4 obrazki z odpowiedziami A, B, C i D i aby po kliknięciu w któryś z nich w pliku zapisywała się wybrana odpowiedź obok numeru pytania. A może lepiej zrobić to na tablicy?
Czekam na wasze opinie, rady i skrypty wink.gif
Dziękuję i pozdrawiam!
Wilwarin
a nie lepiej by było użyć $_POST a potem obliczyć wynik i przesłać go do bazy danych? tongue.gif
qwertycxz
Tak też planuję, ale na razie mam inny problem:
mam kilka plików php zaincludowanych i chciałbym zrobić tak, żeby nie były widoczne na raz tylko po kliknięciu w coś a'la hiperłącza. Co powinienem zrobić, aby uzyskać taki efekt?
grzes999
Nie wiem czy dobrze cię zrozumiałem; ale ja proponował bym zapisywać do tablicy odpowiedź czuli a,b,itd... i później sprawdzić w pętli czy wybrane odpowiedzi zgadzają się z twoim wzorem jeśli się zgadza to +1 jeśli nie to 0.Ot i cała filozofia.
qwertycxz
Dzięki, skorzystam z Waszych porad. Teraz mam bardziej sprecyzowane pytanie:
jak by to zrobić, żeby po kliknięciu w graficzny button zapisywała się nadana mu wartość w tablicy $_POST? Załóżmy mam 4 odpowiedzi w formie plików .png, i chciałbym aby po kliknięciu w któryś z nich zapisywała się odpowiednia wartość (A-D).
Dzięki i pozdrawiam!
Wilwarin
moim zdaniem najlepiej by było gdybyś zrobił form typ "radio" ( ten co możesz tylko 1 wybrać z wielu) i wstawić obrazki do pól wyboru.
qwertycxz
Dzięki, tak też zrobiłem, i tu nasuwa się kolejny problem...

Kod
<form name="wyborpyt" method="post" action="">
  <p>
    <label>
      <input type="radio" name="RadioGroup" value="1" id="RadioGroup_1">
      1</label>
    <br>
    <label>
      <input type="radio" name="RadioGroup" value="2" id="RadioGroup_2">
      2</label>
    <br>
    <label>
      <input type="radio" name="RadioGroup" value="3" id="RadioGroup_3">
      3</label>
    <br>
  </p>
</form>


To jest RadioGroup do przełączania pytań. Każde pytanie jest w osobnym pliku php. I jakby tu "wczepić" includowanie ich?
Proszę o pokazanie przykładu z wywołaniem 1 pytania:
Kod
include('1.php');


Dzięki, pozdrawiam i przepraszam za chaos w wątku smile.gif

Tamten problem udało mi się obejść. Teraz znowu nie wiem pewnej rzeczy...

Kod
<form name="pyt1" method="get" action="pytanie2.php">


Mam coś takiego. Jest to w pliku pytanie1.php. Dalej mam pola Radio i wszystko to zwraca value a, b, c lub d, w zależności od wybranej odpowiedzi. Mam jeszcze 2 takie pliki, każdy kolejny dodaje kolejną odpowiedź do adresu. I tu jest mój problem. po odpowiedzeniu na pierwsze pytanie adres wygląda tak: /pytanie2.php?pyt1=a.
Po odpowiedzeniu na drugie pytanie, adres wygląda tak: /pytanie3.php?pyt2=a. Jak to zrobić, żeby parametr z jednej strony przeskakiwał na drugą, żeby to wyglądało w ten sposób: /pytanie3.php?pyt1=a&pyt2=a ?
Dzięki za pomoc, pozdrawiam!
Wilwarin
lepiej by było, gdybyś użył post zamiast get (ukryte odpowiedzi) i dać do złych odpowiedzi value 0 a do dobrej value 1, zrobić to postem na action, i przy każdym kolejnym pytaniu ściągać POST przy pomocy zmiennej (np w 1 masz input name=pytanie1 value=1 i jak to prześlesz to robisz
  1. $odp1 = $_POST['pytanie1'];

i przekazujesz do dalej przez
  1. <input type="hidden" name="odp1" value ="<?=$odp1?>" />

i potem to ściągasz znów przez
  1. $odp1 = $_POST['odp1'];

tak przy każdym, a potem sumujesz wszystkie values i masz ilość poprawnych odpowiedzi smile.gif Ale wg. mnie lepiej by było zrobić wszystko na 1 stronie (mniej zabawy biggrin.gif)

a jak chcesz jednak używać GET, to zrób tak samo, tylko, że z get biggrin.gif
Rid
Cytat
Jak to zrobić, żeby parametr z jednej strony przeskakiwał na drugą.

A nie można do tego celu użyć sesji???Po jaki kij do tego mieszać hidden fieldy?
Wilwarin
Ale powiedz mi co to za różnica? I to i to działa.
peter13135
A choćby taka, że po odświeżeniu strony przeglądarka nie pyta się czy przesłać ponownie dane. Druga sprawa, sposób z sesjami jest prostszy.
Wilwarin
Nawet jak prześle ponownie dane, to i tak to będą te same dane, więc nic się nie zmieni tongue.gif
Rid
Cytat
Nawet jak prześle ponownie dane, to i tak to będą te same dane, więc nic się nie zmieni


Nie muszą być takie same-hidden fielda ,można zmanipulować dlatego powinno się w nim przechowywać nieistotne informacje.
Po za tym pole ukryte,mimo nazwy wcale takim nie jest,w kodzie źródłowym łatwo podejrzeć wartości takiego pola ukrytego-jeśli tam mają być umieszczane odpowiedzi to po prostu gratuluje twórcy.
peter13135
Pewnie masz rację, efekt będzie podobny, ale na pewno prościej jest w skrypcie dać
  1. $_SESSION['coś']=1;
  2. echo '<a href="jakaś_podstrona.php">coś fajnego</a>


i w pliku "jakaś_podstrona.php" dać takie coś
  1. if(isset($_SESSION['coś'])


niż robić forumlarz w taki sposób
  1. echo '<form method="post" action="jakaś_podstrona" >
  2. <input ...';//już mi się nawet nie chce pisać, ale sam wiesz że dużo więcej do pisania i jest to wyważanie otwartych drzwi
Wilwarin
Cytat(Rid @ 8.08.2011, 21:08:08 ) *
Nie muszą być takie same-hidden fielda ,można zmanipulować dlatego powinno się w nim przechowywać nieistotne informacje.
Po za tym pole ukryte,mimo nazwy wcale takim nie jest,w kodzie źródłowym łatwo podejrzeć wartości takiego pola ukrytego-jeśli tam mają być umieszczane odpowiedzi to po prostu gratuluje twórcy.

To może po prostu zrobić w value ABCD, a pod koniec rozpoznawać poprzez if co jest pod jakim $_POSTem, więc nawet jak ktoś podejrzy, to będzie widział tylko swoją poprzednią odpowiedź.
qwertycxz
Nie wiem jakby zaimplementować sesje, więc bardziej przychylałbym się do innego rozwiązania. Przy każdym polu radio mam value a, b, c lub d. Moim pomysł to uzyskanie ciągu z odpowiedzi użytkownika, np. adcbadccbdacb, a następnie porównanie go z ciągiem zawierającym same dobre odpowiedzi. I chyba na razie spróbuję sposobu Wilwarina z pierwszego postu pod moim pytaniem.
Dzięki i pozdrawiam!

Dalej to samo. Zastosowałem się do rady Wilwarina, a jako value używam a, b, c i d. Do kolejnego pytania przesyła się tylko odpowiedź z poprzedniego.

Ok, troszeczkę nad tym pomyślałem i teraz działa, ostatecznie mam ciąg odpowiedzi abc więc teraz pozostało mi jakoś porównać to z ciągiem gotowych odpowiedzi i zwrócić wynik. Moderatora proszę o nie zamykanie tematu, na 100% będę jeszcze miał jakieś pytania.

Dzięki i pozdrawiam!

Ok, mam problem...

Kod
<form name="pytanie1" method="POST" action="pytanie2.php">
<p>
<label><input type="radio" name="pytanie1" value="a" id="p1a"><img src="../images/test/1/1a.png" alt="1a" /></label>
<label><input type="radio" name="pytanie1" value="b" id="p1b"><img src="../images/test/1/1b.png" alt="1b" /></label>
<label><input type="radio" name="pytanie1" value="c" id="p1c"><img src="../images/test/1/1c.png" alt="1c" /></label>
<label><input type="radio" name="pytanie1" value="d" id="p1d"><img src="../images/test/1/1d.png" alt="1d" /></label><br>
</p>
<input type=submit value="Wyślij"/>


Dałoby się zrobić tak, aby przechodziło do pytanie2.php bez klikania przycisku wyślij? Tylko po samym kliknięciu w którąś z odpowiedzi.

Gdzieś również widziałem coś takiego, że w action ustawiona była strona z obliczaniem wyniku, a po odpowiedzi na pytanie przenosiło do kolejnego, nie do strony w polu action.

Proszę o jakieś sugestie.
Dzięki pozdrawiam
phpion
@qwertycxz:
Proszę rozważniej rozdawać "Pomógł". Nie służą one do nagradzania za jakąkolwiek odpowiedź, a za odpowiedź faktycznie pomocną. Dawanie "Pomógł" pod każdą odpowiedzią nie jest tutaj mile widziane.
qwertycxz
Mam kolejny problem. Poprzedni jeszcze nie jest rozwiązany.
Mam oddzielny plik który includuje do każdego pliku z pytaniem i jest w nim takie jakby menu z miniaturkami pytań, jeśli jest już na nie udzielona odpowiedź to grafika jest zmieniana na jaśniejszy kolor. Odpowiedzi z pytań przesyłam submitem do kolejnego pytania - po każdym pytaniu wysyłam do kolejnego pliku z pytaniem wszystkie zmienne z odpowiedziami z poprzednich pytań. Problem jest taki, że gdy poprzez link graficzny z mojego includowanego menu wracam do poprzedniego pytania, wszystkie oznaczenia pytań na które została udzielona odpowiedź znikają. Ten plik z menu ściąga wszystkie zmienne w których są zapisane odpowiedzi z pytań i pod odpowiednim warunkiem ustawia link graficzny (zwykły lub jasny w zależności od tego czy na pytanie była udzielona odpowiedź, i link ten zawsze prowadzi do strony z pytaniem).
Proszę o jakieś sugestie smile.gif
Dzięki pozdrawiam

Pytanie na 6 linijek to trochę za dużo, więc mam inne, trochę bardziej sprecyzowane.
Kod
type="image" onClick=""

co wpisać w onClick, aby przeniosło mnie np. na stronę pytanie1.php?
Wilwarin
Lepiej, jakbyś użył <a href="link"><img></a>
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.