Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sprawdzanie czy zmienne nie są równe
WMP
post 10.06.2006, 20:37:01
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


  1. <?php
  2. $title="Loteria";
  3. require_once("includes/head.php");
  4.  
  5. if ($player -> location != 'Enaria') 
  6. {
  7. error ('W tym mieście nie ma lotrii. Dostępna jest ona tylko w Enarii');
  8. }
  9.  
  10. /*
  11. / Kupno kuponu :)
  12. */
  13. if (isset ($_GET['view']) && $_GET['view'] == 'kupon'){
  14. $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
  15. if ($loteria_on_off == '0') 
  16. {
  17. error ('<span id="typing">Przepraszam, ale <b>nie można</b> teraz kupić kuponu. Właśnie trwa losowanie. Proszę przyjdˇ póˇniej.</span>');
  18. }
  19. $cena1 = $db -> Execute("SELECT cena FROM loteria WHERE id=1");
  20. $cena = $cena1 -> fields['cena'];
  21. $cena1 -> Close();
  22. $smarty -> assign('Cena', $cena);
  23. if (isset ($_GET['step']) && $_GET['step'] == 'kupon_kupno'){
  24. if ($player -> credits <= $cena) 
  25. {
  26. error ("<span id="typing">Nie masz tyle pieniędzy! Potrzebujesz ".$cena."</span>");
  27.  }
  28. $db -> Execute("UPDATE players SET credits=credits-".$cena." WHERE id=".$player -> id);
  29.  $db -> Execute("UPDATE skarbiec set credits=credits+".$cena." where id=1");
  30.  //Określenie numeru kuponu
  31.  $limit = $db -> Execute("SELECT loteria FROM players ORDER BY loteria DESC LIMIT 0,1");
  32.  $limit1 = $limit -> fields['loteria'];
  33.  $limit -> Close();
  34.  //END okreslanie numeru kuponu
  35. $db -> Execute("UPDATE players SET loteria=".++$limit1." WHERE id=".$player -> id);
  36. 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>"
    );
  37. }
  38. /*
  39. / Lista nagród
  40. */
  41. $pm = $db ->Execute("SELECT * FROM loteria_item");
  42. $arrid = array();
  43. $arrnazwa = array(0);
  44. $arrilosc = array();
  45. $i = 0;
  46. while (!$pm -> EOF) 
  47. {
  48. $arrid[$i] = $pm -> fields['id'];
  49. $arrnazwa[$i] = $pm -> fields['nazwa'];
  50. $arrilosc[$i] = $pm -> fields['ilosc'];
  51. $pm -> MoveNext();
  52. $i = $i + 1;
  53. }
  54. $pm -> Close();
  55. $smarty -> assign ( array("Nazwa" => $arrnazwa, "Ilosc" => $arrilosc));
  56.  
  57.  
  58. } // zamknięcie ifa view kupno
  59. if (isset ($_GET['view']) && $_GET['view'] == 'admin')
  60. {
  61. if ($player -> rank != "Admin") 
  62. {
  63. error ("Nie jestes adminem! Spadaj!");
  64. }
  65. if (isset ($_GET['step']) && $_GET['step'] == 'losowanie')
  66. {
  67. if ($loteria_on_off != 1) //zamkniecie loterii gdy otwarta
  68. {
  69. $db -> Execute("UPDATE on_off SET loteria=1 WHERE id=1");
  70. }
  71. //Losowanie nagrody pierwszego stopnia
  72. $limit = $db -> Execute("SELECT loteria FROM players ORDER BY loteria DESC LIMIT 0,1");
  73. $limit1 = $limit -> fields['loteria'];
  74. $limit -> Close();
  75. $wylosowany1 = rand (1, $limit1);
  76. /* Tabela możliwej ilość osób nagrodzonych:
  77.  
  78.  osoby  miejsce
  79. wygrana nr. 1 1 6
  80. wygrana nr. 2 3 21
  81. wygrana nr. 3 5 35
  82. wygrana nr. 4 10  70
  83. wygrana nr. 5 30  210
  84. */
  85. $db -> Execute("UPDATE loteria SET nagrodzony1=".$wylosowany1." WHERE id=1");
  86. //END losowanie nagrody pierwszego stopnia
  87. //Losowanie nagrody drógiego stopnia
  88. $wylosowany2 = rand (1, $limit1);
  89. //Cały if sprawdzający
  90. if ($wylosowany2 == $wylosowany1) //sprawdznaie cyz wylosowany2 jest równe wylosowany1
  91. {
  92.  while ($wylosowany2 == $wylosowany1)  
  93. {
  94.  srand((double) microtime() * 10000000);
  95. $wylosowany2 = rand (1, $limit1);
  96. }
  97. }
  98.  
  99. //END Cały if sprawdzający
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. //END losowanie nagrody drógiego stopnia
  109. }//zamkniecie ifa losowanie
  110. }//zamknecie ifa admin
  111. $smarty -> assign(array("Step" => $_GET['step'], "View" => $_GET['view']));
  112. $smarty -> display ('loteria.tpl');
  113. require_once("includes/foot.php");
  114. ?>


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ć.

Ten post edytował WMP 10.06.2006, 20:37:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
em1X
post 11.06.2006, 09:36:25
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Dzieje sie tak, poniewaz zle do problemu podchodzisz :/

Chcesz wylosowac ludzi, ktorzy wygrywaja tak? Nie chce mi sie tego twojego kodu analizowac, bo jest brzydki sadsmiley02.gif

Sprobuj moze lepiej cos w stylu:

  1. SELECT * FROM uzytkownicy ORDER BY rand() LIMIT 5


i masz wylosowanych 5 losowych uzytkownikow (bez powtorzen)..


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
WMP
post 11.06.2006, 20:19:12
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.01.2006
Skąd: Lublin

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


o wielkie dizęki, ten kod jets piękny! smile.gif
Tylko powiedz mi jak potem z tych wylosowanychy 5 ludiz wybrac pierwszego potem drógiego trzeciego...?
Go to the top of the page
+Quote Post
em1X
post 11.06.2006, 21:06:35
Post #4





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


  1. <?php
  2. $source = $db->Execute("select * from uzytkownicy order by rand() limit 5");
  3.  
  4. while (! $source->EOF)
  5. {
  6.  echo $source->fields['login'] . "<br/>";
  7. }
  8. ?>


Ten post edytował em1X 11.06.2006, 21:06:42


--------------------
eh, co polska wódka to polska wódka
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: 19.07.2025 - 12:58