Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Prosta gra w zgadywanie liczby
Forum PHP.pl > Forum > Przedszkole
michat34
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?
abort
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.
michat34
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
abort
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?
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.