Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Zapamiętanie wyniki
Forum PHP.pl > Forum > Przedszkole
ppx
Witam dopier zaczynam swoją przygodę z php i mam pewien problem.
Chciałem zrobić coś takiego że wybierasz sobię liczbę od 1 do 100 i komputer losuje jedną z nich zadaniem odwiedzającego jest odgadnięcie tej liczby w jak najmniejszej liczbie prób i mam problemy z tym aby komputer zapamiętywał liczbę na kolejne zgadywanie.

oto mój kod;
  1. <?
  2. $od = 1;
  3. $do = 100;
  4. $twoja = $HTTP_POST_VARS['twoja'];
  5. $liczba = rand($od, $do);
  6. $zapamietaj = $liczba;
  7. $wynik = 1;
  8.  
  9. if ($twoja == $liczba)
  10. {
  11. echo 'Gratulacje udalo Ci sie zgadnac liczbe wylosowana przez komputera za '.$wynik.'razem';
  12. echo $liczba;
  13. }
  14. elseif ($twoja != $liczba)
  15. {
  16. $wynik + 1;
  17. echo $liczba;
  18. echo 'Niestety to nie ta liczba<br/>';
  19. if ($twoja > $liczba)
  20. {
  21. echo 'liczba komputera jest mniejsza od twojej';
  22. }
  23. if ($twoja < $liczba)
  24. {
  25. echo 'liczba komputera jest wieksza od twojej';
  26. }
  27. echo 'Jeśli chcesz grać dalej wpisz liczbę od 1 do 100 </br><form action="cos.php" method="post"> <input type="text" name="twoja" size="10" maxlength="4"><br> <br> <input type="submit" value="ok"> </form><br/><br/>';
  28. echo 'twój wynik ';
  29. echo $wynik;
  30. }  
  31. ?>

Chciałem jeszcze żeby za każdą próbą zgadnięcia cyfry do $wynik dodawał się 1
sniezny_wilk
Pisane na szybko i nie wiem czy będzie spełniało swoją rolę smile.gif chodziło o coś takiego ?
  1. <?
  2. $od = 1;
  3. $do = 100;
  4. $twoja = $_POST['twoja'];
  5.  
  6. if(!isset($_SESSION["liczba"]))
  7. {
  8. $liczba = rand($od, $do);
  9. $_SESSION["liczba"] = $liczba;
  10. }
  11. else
  12. {
  13. $liczba = $_SESSION["liczba"];
  14. }
  15.  
  16. if ($twoja == $liczba)
  17. {
  18. echo 'Gratulacje udalo Ci sie zgadnac liczbe wylosowana przez komputera za '.$_SESSION["wynik"].'razem';
  19. echo $liczba;
  20.  
  21.  
  22. }
  23. elseif ($twoja != $liczba)
  24. {  
  25. if(!isset($_SESSION["wynik"]))
  26. { 
  27. $_SESSION["wynik"] = 1;
  28. }
  29. else
  30. {
  31. $_SESSION["wynik"] += 1;
  32. }
  33.  
  34. echo $liczba;
  35. echo 'Niestety to nie ta liczba<br/>';
  36. if ($twoja > $liczba)
  37. {
  38. echo 'liczba komputera jest mniejsza od twojej';
  39. }
  40. if ($twoja < $liczba)
  41. {
  42. echo 'liczba komputera jest wieksza od twojej';
  43. }
  44. echo 'Jeśli chcesz grać dalej wpisz liczbę od 1 do 100 </br><form action="losowanie.php" method="post"> <input type="text" name="twoja" size="10" maxlength="4"><br> <br> <input type="submit" value="ok"> </form><br/><br/>';
  45. echo 'twój wynik ';
  46. echo $_SESSION["wynik"];
  47. }  
  48. ?>
ppx
jest błąd w 10 linijce czyli
session_start();

www.margonem.cal.pl

I wydaje mi się że jeszcze tutaj trzeba coś zmienić
echo 'Jeśli chcesz grać dalej wpisz liczbę od 1 do 100 </br><form action="losowanie.php" method="post"> <input type="text" name="twoja" size="10" maxlength="4"><br> <br> <input type="submit" value="ok"> </form><br/><br/>';

Ponieważ po wywołaniu tego komputer odświeża stronę i losuje od nowa liczbę.
sniezny_wilk
Cytat(ppx @ 23.12.2007, 23:40:44 ) *
jest błąd w 10 linijce czyli
session_start();

www.margonem.cal.pl


No tak zapomniałem dopisać "session_start()" musi znajdować się przed wysłaniem nagłówków czyli najlepiej umieścić "session_start()" w drugiej linijce zaraz po "<?php":
  1. <?php
  2. //reszta kodu
  3. ?>


EDIT:
Aha zmień "losowanie.php", na swoje "cos.php", bo nie zadziała smile.gif

Nie powinien losować już kolejnej liczby, sprawdź..
ppx
  1. <?php
  2.  
  3. $od = 1;
  4. $do = 100;
  5. $twoja = $_POST['twoja'];
  6. ?>


tak wyglada poczatek pliku.

a podmienilem nazwy tytlko tutaj zle skopiowalem

//edit

ok dalem to sesion przed html i zadziałało wielkie dzieki

//edit
ja mam jeszcze takie pytanie jak zrobić że gdy ktoś wyłączy lub da wstecz sesja się zakonczyła teraz mam tak

  1. <?
  2. if ($twoja == $liczba)
  3.  {
  4.  }
  5. ?>

Ale sesja sie kończy gdy odgadniesz liczbę.
sniezny_wilk
Hmm.. jeśli klikniesz wstecz, wczytywana jest poprzednia strona bez odświeżenia, więc z poziomu PHP raczej tego nie zrobisz. Dlaczego chcesz, aby po naciśnięciu wstecz sesja była niszczona ? Możesz napisać, że jak ktoś odgadnie liczbę, żeby klikną w link, w linku dasz adres np do "strona.php?akcja=niszcz", potem w kodzie sprawdzasz wartość zmiennej $_GET["akcja"] i jeśli równa jest "niszcz", niszczysz sesję. Możesz też dodać jeszcze jedną zmienną sesyjną odznaczającą czy ktoś odgadł np. "$_SESSION["odgadnieta"]" i ustawiać TRUE, jeśli odgadł i FALSE jeśli nie. Potem za każdym razem sprawdzać, czy użytkownik odgadł liczbę jeśli tak wypisać komunikat, że już odgadł liczbę i że zostanie wylosowana kolejna liczba. Efekt będzie taki, że jeśli nawet użytkownik cofnie się w przeglądarce to i tak po wpisaniu liczby będzie sprawdzone czy już jej nie odgadł.
ppx
Witam ja mam takie pytanie bo pracuje teraz nad rankingiem i gdy ktos odgadnie wynik i chce się zapisać do rankingu to do bazy danych wpisuje mu że liczbę odgadł za 0 ruchami

Oto kod tej części
gra.php
  1. <?php
  2. if ($twoja == $liczba)
  3.  
  4. {
  5. $wynik2 = $_SESSION["wynik"];
  6. echo '<h1>Gratulacje udało Ci sie trafić liczbę wylosowana przez komputera za '.$_SESSION["wynik"].' razem</h1><br>Zapisz się w rankingu<br> ';
  7. echo '<form action="dodaj.php" method="post">Nick: <input type="text" name="nick"><input type="hidden" value=".$wynik2." name="wynik"> <input type="submit" value="Zapisz"></form>';
  8. }
  9. ?>

dodaj.php
  1. <?php
  2. $nick=$_POST['nick'];
  3. $wynik=$_POST['wynik'];
  4.  
  5. mysql_query("INSERT INTO gra VALUES(NULL,'".$nick."','".$wynik."')");
  6. echo '<b>'.$nick.'</b> Wpisałeś/aś się do rankingu z wynikiem <b>'.$wynik.'</b>';
  7. ?>
sniezny_wilk
gra.php

  1. <?php
  2. if ($twoja == $liczba)
  3.  
  4. {
  5. $wynik2 = $_SESSION["wynik"];
  6. echo '<h1>Gratulacje udało Ci sie trafić liczbę wylosowana przez komputera za '.$_SESSION["wynik"].' razem</h1><br>Zapisz się w rankingu<br> ';
  7. echo '<form action="dodaj.php" method="post">Nick: <input type="text" name="nick"><input type="hidden" value="$wynik2" name="wynik"> <input type="submit" value="Zapisz"></form>';
  8. }
  9. ?>


Edit: ewentualnie:

  1. <?php
  2. if ($twoja == $liczba)
  3.  
  4. {
  5. $wynik2 = $_SESSION["wynik"];
  6. echo '<h1>Gratulacje udało Ci sie trafić liczbę wylosowana przez komputera za '.$_SESSION["wynik"].' razem</h1><br>Zapisz się w rankingu<br> ';
  7. echo '<form action="dodaj.php" method="post">Nick: <input type="text" name="nick"><input type="hidden" value="'.$wynik2.'" name="wynik"> <input type="submit" value="Zapisz"></form>';
  8. }
  9. ?>


Źle wpisałeś zmienną w string smile.gif
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.