Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Prosta gra w zgadywanie liczby
michat34
post 21.08.2012, 14:31:45
Post #1





Grupa: Zarejestrowani
Postów: 200
Pomógł: 1
Dołączył: 4.08.2012

Ostrzeżenie: (10%)
X----


czesc, jestem w trakcie pisania gry z tematu. w html mam formularze do ustalenia zakresu. kod w php wyglada natomiast tak:

  1. <?php
  2. $od = $_POST['od'];
  3. $do = $_POST['do'];
  4. if ($od < 0 || $do < 0 || $od == $do || $od > $do)
  5. {
  6. header("Refresh: 1; url=\"index.htm\"");
  7. echo "Niepoprawnie sformuowany zakres";
  8. echo '<br>';
  9. } else
  10. {
  11. $wylosowana = rand($od,$do);
  12. echo 'Wylosowano liczbe z zakresu '.$od.' - '.$do.'. Znajdz ja.';
  13. do {
  14. // wyswietlanie w kolko formularza gdzie wprowadzamy liczbe
  15. // ktora jest porownywana z wylosowana do momentu gdy zgadniemy
  16. } while ($wprowadzona != $wylosowana);
  17. }
  18. ?>


i tutaj zaczyna sie problem. chcialbym wykonac to co napisalem w komentarzu tylko nie wiem jak najlepiej to zrobic.
w jaki sposob mozna by wykonac ciagle pokazywanie formularza? na razie wymyslilem po prostu:

  1. else
  2. {
  3. $wylosowana = rand($od,$do);
  4. echo 'Wylosowano liczbe z zakresu '.$od.' - '.$do.'. Znajdz ja.';
  5. do {
  6.  
  7. <form action="losowanie.php" method="post">
  8. Wprowadz liczbe: <input type="text" name="wprowadzona" size=1 maxlength="3">
  9. <br><input type="submit" value="OK">
  10. $wprowadzona = $_POST['wprowadzona'];
  11. if ($wprowadzona > $wylosowana)
  12. echo 'Wprowadzona liczba jest za duza';
  13. else
  14. echo 'Wprowadzona liczba jest za mala';
  15. } while ($wprowadzona != $wylosowana);
  16. echo 'Gratulacje, zgadles';
  17. }


z tym ze to nie do konca dziala (wyskakuja mi te formularze w nieskonczonosci zacina sie strona). tak wiec macie jakies pomysly jak wykonac takie ciagle wprowadzanie liczby do skutku?

Ten post edytował michat34 21.08.2012, 14:39:49
Go to the top of the page
+Quote Post
abort
post 21.08.2012, 14:39:25
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


1. O ile pamiętam, to
Kod
header("Refresh: 1; url=\"index.htm\"");
chyba odświeża stronę co sekundę. Generalnie: odświeżanie strony podczas czekania na wpisanie danych od użytkownika wydaje mi się bez sensu.

Ogólnie:
Musisz zrobić form w HTML, która odwołuje się do samej siebie, a w której:
1. będziesz pobierał wprowadzone przez uzytkownika dane $od i $do (czyli zakres)
2. sprawdzał, czy wylosowana liczba mieści się w zakresie.
3. zmienną wylosowaną musisz przekazywać jakoś pomiędzy dwoma niezależnymi wywołaniami skryptu (skąd skrypt wywołany "teraz" ma wiedzieć, jaką zmienną miał poprzednio wykonywany skrypt?). Możesz wykorzystać element HTMLa typu "FORM" z atrybutem HIDDEN, i do niego odwoływać się w następnych wywołaniach.
Go to the top of the page
+Quote Post
michat34
post 21.08.2012, 14:46:25
Post #3





Grupa: Zarejestrowani
Postów: 200
Pomógł: 1
Dołączył: 4.08.2012

Ostrzeżenie: (10%)
X----


Cytat(abort @ 21.08.2012, 15:39:25 ) *
1. O ile pamiętam, to
Kod
header("Refresh: 1; url=\"index.htm\"");
chyba odświeża stronę co sekundę. Generalnie: odświeżanie strony podczas czekania na wpisanie danych od użytkownika wydaje mi się bez sensu.

Ogólnie:
Musisz zrobić form w HTML, która odwołuje się do samej siebie, a w której:
1. będziesz pobierał wprowadzone przez uzytkownika dane $od i $do (czyli zakres)
2. sprawdzał, czy wylosowana liczba mieści się w zakresie.
3. zmienną wylosowaną musisz przekazywać jakoś pomiędzy dwoma niezależnymi wywołaniami skryptu (skąd skrypt wywołany "teraz" ma wiedzieć, jaką zmienną miał poprzednio wykonywany skrypt?). Możesz wykorzystać element HTMLa typu "FORM" z atrybutem HIDDEN, i do niego odwoływać się w następnych wywołaniach.


1. to sluzy temu, ze jak ktos zle wprowadzi zakres to wyskakuje komunikat ze zle wprowadzil i po sekundzie cofa sie do indexu.html gdzie musi wprowadzic ponownie zakres, prawidlowy.

w jaki sposob moge sprawic ze bedzie odwolywal sie do samej siebie? i jaki element hidden masz na mysli? zrobilem form action do skryptu w ktorym jest wywolywane tylko ze w ten sposob formularze pokazuja sie w nieskonczonosc

EDIT: a swoja droga czy nie bylo by latwiejsze wykonanie tego przy pomocy sesji? wtedy zmienna bylaby przesylana w sesji

Ten post edytował michat34 21.08.2012, 14:48:10
Go to the top of the page
+Quote Post
abort
post 21.08.2012, 15:46:39
Post #4





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


1. i tracisz wylosowaną uprzednio liczbę, bo losujesz jeszcze raz (tak przypuszczam)
2. odnośnie hidden: http://www.kurshtml.edu.pl/html/ukryte_dane,formularze.html

Tak, sesje też można, ale (zakładam), że to Twoja wprawka w przetwarzanie formularzy - więc imo sesje to trochę za duzy kaliber.

P.S.
Da się całą zgadywankę zrobić w jednym pliku, w którym:
1. sprawdzasz, czy to jest pierwsze wejście na stronę
2. jeśli pierwsze, to losujesz liczbę i przypisujesz do pola hidden w formularzu
3. wyświetlasz formularz z danymi, także tymi ukrytymi, a w form action kierujesz dane na samego siebie
4. logika: jeśli wprowadzono poprawną wylosowaną liczbę, wyświetlasz komunikat

P.S.
w jaki sposób wprowadzisz poprawną liczbę do formularza z dwoma polami, skoro w warunku po poprawnym podaniu $od i $do kierujesz na stronę z błędem?
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: 25.05.2025 - 07:28