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;
<?
$od = 1;
$do = 100;
$twoja = $HTTP_POST_VARS['twoja'];
$liczba = rand($od, $do); $zapamietaj = $liczba;
$wynik = 1;
if ($twoja == $liczba)
{
echo 'Gratulacje udalo Ci sie zgadnac liczbe wylosowana przez komputera za '.$wynik.'razem'; }
elseif ($twoja != $liczba)
{
$wynik + 1;
echo 'Niestety to nie ta liczba<br/>'; if ($twoja > $liczba)
{
echo 'liczba komputera jest mniejsza od twojej'; }
if ($twoja < $liczba)
{
echo 'liczba komputera jest wieksza od twojej'; }
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/>'; }
?>
Chciałem jeszcze żeby za każdą próbą zgadnięcia cyfry do $wynik dodawał się 1
sniezny_wilk
23.12.2007, 23:26:20
Pisane na szybko i nie wiem czy będzie spełniało swoją rolę

chodziło o coś takiego ?
<?
$od = 1;
$do = 100;
$twoja = $_POST['twoja'];
if(!isset($_SESSION["liczba"])) {
$liczba = rand($od, $do); $_SESSION["liczba"] = $liczba;
}
else
{
$liczba = $_SESSION["liczba"];
}
if ($twoja == $liczba)
{
echo 'Gratulacje udalo Ci sie zgadnac liczbe wylosowana przez komputera za '.$_SESSION["wynik"].'razem';
}
elseif ($twoja != $liczba)
{
if(!isset($_SESSION["wynik"])) {
$_SESSION["wynik"] = 1;
}
else
{
$_SESSION["wynik"] += 1;
}
echo 'Niestety to nie ta liczba<br/>'; if ($twoja > $liczba)
{
echo 'liczba komputera jest mniejsza od twojej'; }
if ($twoja < $liczba)
{
echo 'liczba komputera jest wieksza od twojej'; }
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/>'; }
?>
jest błąd w 10 linijce czyli
session_start();
www.margonem.cal.plI 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
23.12.2007, 23:44:34
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":
<?php
//reszta kodu
?>
EDIT:
Aha zmień "losowanie.php", na swoje "cos.php", bo nie zadziała

Nie powinien losować już kolejnej liczby, sprawdź..
<?php
$od = 1;
$do = 100;
$twoja = $_POST['twoja'];
?>
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
<?
if ($twoja == $liczba)
{
}
?>
Ale sesja sie kończy gdy odgadniesz liczbę.
sniezny_wilk
24.12.2007, 11:16:32
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ł.
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<?php
if ($twoja == $liczba)
{
$wynik2 = $_SESSION["wynik"];
echo '<h1>Gratulacje udało Ci sie trafić liczbę wylosowana przez komputera za '.$_SESSION["wynik"].' razem</h1><br>Zapisz się w rankingu<br> '; 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>'; }
?>
dodaj.php<?php
$nick=$_POST['nick'];
$wynik=$_POST['wynik'];
mysql_query("INSERT INTO gra VALUES(NULL,'".$nick."','".$wynik."')"); echo '<b>'.$nick.'</b> Wpisałeś/aś się do rankingu z wynikiem <b>'.$wynik.'</b>'; ?>
sniezny_wilk
27.12.2007, 09:44:57
gra.php
<?php
if ($twoja == $liczba)
{
$wynik2 = $_SESSION["wynik"];
echo '<h1>Gratulacje udało Ci sie trafić liczbę wylosowana przez komputera za '.$_SESSION["wynik"].' razem</h1><br>Zapisz się w rankingu<br> '; 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>'; }
?>
Edit: ewentualnie:
<?php
if ($twoja == $liczba)
{
$wynik2 = $_SESSION["wynik"];
echo '<h1>Gratulacje udało Ci sie trafić liczbę wylosowana przez komputera za '.$_SESSION["wynik"].' razem</h1><br>Zapisz się w rankingu<br> '; 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>'; }
?>
Źle wpisałeś zmienną w string