Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Procentowe obliczanie szans
Maveral
post 18.06.2007, 21:45:48
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Witam. Mam nastepujący problem. Otóż chciałem stworzyć sobie małą symulację kaprysu hehehe Coś na zasadzie jak człowiek ma np. swój ulubiony trunek, ale czasem ma kaprys napić się czegoś innego. Stworzyłem sobie coś takiego:

  1. <?php
  2. if(empty($_POST[submit])) {
  3. echo 'Co pije Adam?<br>
  4. <form action="aaa2.php" method="post">
  5. <select name="trunek">
  6. <option>wino</option>
  7. <option>piwo</option>
  8. </select>
  9. <input type=submit name=submit value=Wyślij>
  10. </form>';
  11. }
  12.  
  13. else {
  14. $look=rand (1,4);
  15. $trunek=$_POST['trunek'];
  16. if ($look==1) {
  17. switch ($trunek) {
  18. case "wino":
  19. echo 'Ahhh dzis dla odmiany piwko :)';
  20. break;
  21. case "piwo":
  22. echo 'Ahhh dziś dla odmiany winko tongue.gif';
  23. }
  24. }
  25. elseif ($look>&& $look<4) {
  26. switch ($trunek) {
  27. case "wino":
  28. echo 'Standardowo winko :)';
  29. break;
  30. case "piwo":
  31. echo 'Super - jak zawsze wypije sobie piwko biggrin.gif';
  32. break;
  33. }
  34. }
  35. elseif ($look==4) {
  36. switch ($trunek) {
  37. case "wino":
  38. echo 'A doleje troche piwa do wina :)';
  39. break;
  40. case "piwo":
  41. echo 'Doleje sobie troszkę wina do piwa tongue.gif';
  42. break;
  43. }
  44. }
  45.  
  46. }
  47. ?>


Niby to działa (tutaj można zobaczyć), ale:

1. Nie wiem czy nie można by tego kodu jeszcze uprościć. Switch jest wygodny, gdyby doszło więcej opcji w formularzu, ale może jednak da się prościej?
2. Może da się jakoś inaczej (czyt. prościej) ustawić procent szans na wylosowanie jednego z trunków? Teraz robię to przez rand(), który losuje liczby z przedziału 1-4. Wylosowanie 2 lub 3 powoduje wylosowanie zaznaczonego w formularzu trunku (czyli 50% szansy).
3. Jak określić zbiór liczb w if? Mam to zrobione jako "$look>1 && $look<4" czyli przedział (2,3), ale może da się jakoś prościej?

Z góry dzięki za odp smile.gif

Ten post edytował Maveral 19.06.2007, 14:34:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nexis
post 18.06.2007, 23:41:24
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Nie wiem na co Ci się taki skrypt przyda co prawda, ale może zaciekawi Cię takie rozwiązanie:

  1. <?php
  2.  
  3. $piwo = array('Ahhh dzis dla odmiany piwko :)', 'Super - jak zawsze wypije sobie piwko biggrin.gif', 'Doleje sobie troszkę wina do piwa tongue.gif');
  4. $wino = array('Ahhh dziś dla odmiany winko tongue.gif', 'Standardowo winko :)', 'A doleje troche piwa do wina :)');
  5.  
  6. if (isset($_POST['trunek'])) echo ${$_POST['trunek']}[array_rand(${$_POST['trunek']}, 1)];
  7. else {
  8. echo '
  9. Co pije Adam?<br />
  10. <form action="'.$_SERVER['PHP_SELF'].'" method="post">
  11. <select name="trunek">
  12. <option value="wino">wino</option>
  13. <option value="piwo">piwo</option>
  14. </select>
  15. <input type="submit" value="wyślij" />
  16. </form>';
  17. }
  18.  
  19. ?>


Ten post edytował nexis 18.06.2007, 23:44:05


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Darti
post 18.06.2007, 23:50:04
Post #3





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  1. <?php
  2. else {
  3. $look=rand (0,3);
  4. $trunek=$_POST['trunek'];
  5.  
  6. $piwo = array(
  7. 'Ahhh dziś dla odmiany winko tongue.gif',
  8. 'Super - jak zawsze wypije sobie piwko biggrin.gif',
  9. 'Super - jak zawsze wypije sobie piwko biggrin.gif',
  10. 'Doleje sobie troszkę wina do piwa tongue.gif'
  11. );
  12.  
  13. $wino = array(
  14. 'Ahhh dzis dla odmiany piwko :)',
  15. 'Standardowo winko :)',
  16. 'Standardowo winko :)',
  17. 'A doleje troche piwa do wina :)'
  18. );
  19.  
  20. echo ${$trunek}[$look];
  21. }
  22. ?>


@nexis był szybszy smile.gif

Ten post edytował Darti 18.06.2007, 23:50:59


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
Maveral
post 19.06.2007, 10:49:59
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Dzięki wam obu. Wasze propozycje działają tak jak mają działać i zajmują mniej miejsca winksmiley.jpg Tak więc dzięki za szybką odpowiedź i pomoc smile.gif
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: 25.07.2025 - 07:57