nei dizw sie ten kod "robiły" 3 osoby. Chcę aby $nr_kuponu dodawało do bazy i w error wsadzało
Z probleme wyżej spobie poradizłem. Teraz jest problem następny.
<?php
$title="Loteria";
require_once("includes/head.php");
if ($player -> location != 'Enaria')
{
error ('W tym mieście nie ma lotrii. Dostępna jest ona tylko w Enarii');
}
/*
/ Kupno kuponu :)
*/
if (isset ($_GET['view']) && $_GET['view'] == 'kupon'){ $loteria_on_off = $db -> Execute("SELECT on_off FROM loteria WHERE id=1"); //Jeżlei bedzie mozna kupic bilet wartosc w komórce on_off dla id 1 będzie wyności
ć 1
if ($loteria_on_off == '0')
{
error ('<span id="typing">Przepraszam, ale <b>nie można</b> teraz kupić kuponu. Właśnie trwa losowanie. Proszę przyjdˇ póˇniej.</span>');
}
$cena1 = $db -> Execute("SELECT cena FROM loteria WHERE id=1");
$cena = $cena1 -> fields['cena'];
$cena1 -> Close();
$smarty -> assign('Cena', $cena);
if (isset ($_GET['step']) && $_GET['step'] == 'kupon_kupno'){ if ($player -> credits <= $cena)
{
error ("<span id="typing">Nie masz tyle pieniędzy! Potrzebujesz ".$cena."</span>");
}
$db -> Execute("UPDATE players SET credits=credits-".$cena." WHERE id=".$player -> id);
$db -> Execute("UPDATE skarbiec set credits=credits+".$cena." where id=1");
//Określenie numeru kuponu
$limit = $db -> Execute("SELECT loteria FROM players ORDER BY loteria DESC LIMIT 0,1");
$limit1 = $limit -> fields['loteria'];
$limit -> Close();
//END okreslanie numeru kuponu
$db -> Execute("UPDATE players SET loteria=".++$limit1." WHERE id=".$player -> id);
error ("<span id="typing">Kupiłeś już kupon. Jest to kupon nr. <b>".++$limit1."</b>. Jeśli zapomnisz jaki masz numer, idź do loterii. Niestety dziśiejszy regula
min nie zewzwala na posiadanie więcej niż 1 kuponu. Wkrótce powinno to się zmieni
ć.</span>");
}
/*
/ Lista nagród
*/
$pm = $db ->Execute("SELECT * FROM loteria_item");
$i = 0;
while (!$pm -> EOF)
{
$arrid[$i] = $pm -> fields['id'];
$arrnazwa[$i] = $pm -> fields['nazwa'];
$arrilosc[$i] = $pm -> fields['ilosc'];
$pm -> MoveNext();
$i = $i + 1;
}
$pm -> Close();
$smarty -> assign
( array("Nazwa" => $arrnazwa, "Ilosc" => $arrilosc));
} // zamknięcie ifa view kupno
if (isset ($_GET['view']) && $_GET['view'] == 'admin') {
if ($player -> rank != "Admin")
{
error ("Nie jestes adminem! Spadaj!");
}
if (isset ($_GET['step']) && $_GET['step'] == 'losowanie') {
if ($loteria_on_off != 1) //zamkniecie loterii gdy otwarta
{
$db -> Execute("UPDATE on_off SET loteria=1 WHERE id=1");
}
//Losowanie nagrody pierwszego stopnia
$limit = $db -> Execute("SELECT loteria FROM players ORDER BY loteria DESC LIMIT 0,1");
$limit1 = $limit -> fields['loteria'];
$limit -> Close();
$wylosowany1 = rand (1
, $limit1); /* Tabela możliwej ilość osób nagrodzonych:
osoby miejsce
wygrana nr. 1 1 6
wygrana nr. 2 3 21
wygrana nr. 3 5 35
wygrana nr. 4 10 70
wygrana nr. 5 30 210
*/
$db -> Execute("UPDATE loteria SET nagrodzony1=".$wylosowany1." WHERE id=1");
//END losowanie nagrody pierwszego stopnia
//Losowanie nagrody drógiego stopnia
$wylosowany2 = rand (1
, $limit1); //Cały if sprawdzający
if ($wylosowany2 == $wylosowany1) //sprawdznaie cyz wylosowany2 jest równe wylosowany1
{
while ($wylosowany2 == $wylosowany1)
{
$wylosowany2 = rand (1
, $limit1); }
}
//END Cały if sprawdzający
//END losowanie nagrody drógiego stopnia
}//zamkniecie ifa losowanie
}//zamknecie ifa admin
$smarty -> assign
(array("Step" => $_GET['step'], "View" => $_GET['view'])); $smarty -> display ('loteria.tpl');
require_once("includes/foot.php");
?>
Dałem wyżej kod całego pliku. Probelm zacyzna się od linijki 71 do 100. Otóż ten kod ma weryfikować czy wartosci w danych zmiennych nie równaja się sobie. Jak widac (od 91 do 98 linijki) wsadizłem if który sprawdza czy zmienne równaja się sobie. Jeśli tak to pętla losuje tylke razy aby zmeinne nie równały się sobie. I zobaczcie jaki cód, chodzi. Problem zaczyna się w gdy dojdzie 3 zmienna($wylosowany22 nie ma tej zmeinnej bo dopiero chce ja stworzyć), która ma się nie równać pozostałym. Potem dochodiz następna o nazwie $wylosowany23. Potem dochodiz $wylosowany3, $wylosowny32 ... $wylosowny34, $wylosowany35. I zmeinne z wylosowaną nagrodą nr 4 czyli $wylosowny4, $wylosowny42...$wylosowny49 . Potem nadszedł czas na nagrodę nr 5 czyli $wylosowny5...$wylosowny529 . I te wsyztkie zmienn emają się sobie nie równać!!! Więc jak to zapisac? Aby nei robic pętli w pętli ? Mam nadzieje ze załapaliście zasade.
To ma być taka loteria a w loterii jets tak ze jedna osoba nie moze wygrac 2 nagród, wiec id gracza(osoby) nie moze sie powtarzać.