Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Generator totka, Proszę się nie śmiać, poważnie pytam...
Vistule
post 10.11.2007, 23:02:25
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.10.2007

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


Chodzi o to żeby zablokować (najlepiej jakimś if-em pomiedzy </style> a <table...) możliwość powtarzania wylosowanych liczb w poszczególnych kolumnach tabeli.

Zdaję sobie soprawę że program jest na poziomie tematu w którym piszę. Mimo to bardzo prosiłbym o odpowiedź. Zazwyczaj kiedy ktoś skreśla numerki, kombinuje z jakimiś datami lub innymi takimi. "Program" jest przedewszystkim dla leniwych graczy którym się nie chce za każdym razem kombinować a przy okazji będzie na kogo zwalić jak się nie uda nic wygrać tongue.gif tak więc zanim mnie wyśmiejecie lub skasujecie temat, proszę, zastanówcię się 3 razy czy przypadkiem taki "winny" nie przydał by się akurat Wam winksmiley.jpg a jeżeli ktoś "dzięki niemu" bedzie miał chociaż 3 to będę bardzo dumny ze swojego pomysłu cool.gif


Całość, bez zbędnych upiękrzeń, wygląda następująco:

  1. <style type="text/css">
  2. <!--
  3. .style7 {
  4. font-family: Arial, Helvetica, sans-serif;
  5. font-size: x-small;
  6. color: #FFFFFF;
  7. }
  8. -->
  9. <table width="20%" border="1" align="center" bordercolor="#CCCCCC" bgcolor="#000000">
  10. <tr>
  11. <th width="16%" scope="col"><span class="style7"><?php echo rand(1, 49); ?></span></th>
  12. <th width="16%" scope="col"><span class="style7"><?php echo rand(1, 49); ?></span></th>
  13. <th width="16%" scope="col"><span class="style7"><?php echo rand(1, 49); ?></span></th>
  14. <th width="16%" scope="col"><span class="style7"><?php echo rand(1, 49); ?></span></th>
  15. <th width="16%" scope="col"><span class="style7"><?php echo rand(1, 49); ?></span></th>
  16. <th width="16%" scope="col"><span class="style7"><?php echo rand(1, 49); ?></span></th>
  17. </tr>


Ten post edytował Vistule 11.11.2007, 00:08:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
phpion
post 10.11.2007, 23:11:41
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Powinno banglać.
  1. <?php
  2. $wylosowane = array();
  3. $ile_losowac = 6;
  4. $wylosowano = 0;
  5.  
  6. while ($wylosowano < $ile_wylosowac) {
  7. $liczba = rand(1, 49);
  8.  
  9. if (!in_array($liczba, $wylosowane)) {
  10. array_push($wylosowane, $liczba);
  11. $wylosowano++;
  12. }
  13. }
  14. ?>
  15. <style type="text/css">
  16. <!--
  17. .style7 {
  18.  font-family: Arial, Helvetica, sans-serif;
  19.  font-size: x-small;
  20.  color: #FFFFFF;
  21. }
  22. -->
  23. </style>
  24. <table width="20%" border="1" align="center" bordercolor="#CCCCCC" bgcolor="#000000">
  25. <tr>
  26. <?php foreach ($wylosowane as $liczba): ?>
  27. <th width="16%" scope="col"><span class="style7"><?php echo $liczba; ?></span></th>
  28. <?php endforeach; ?> 
  29. </tr>
  30. </table>
Go to the top of the page
+Quote Post
JaRoPHP
post 10.11.2007, 23:13:53
Post #3





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


A może tak:
  1. <?php
  2. $numbers = range(1,49);
  3. $randomNumbers = array_rand($numbers,6);
  4. echo '<table><tr>';
  5. foreach($randomNumbers as $draw) {
  6. echo '<td>'.$draw.'</td>'; // -> EDIT
  7. }
  8. echo '</tr></table>';
  9. ?>


// EDIT
Jak zostało zauważone poniżej, pojawił się mały bug.
Funkcja array_rand zwraca klucze elementów, więc powinno być:
  1. <?php
  2. echo '<td>'.$numbers[$draw].'</td>';
  3. ?>


Ten post edytował JaRoPHP 11.11.2007, 12:34:50


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
rolnix
post 10.11.2007, 23:15:25
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


Generowanie listy liczb:

  1. <?php
  2. $liczby = array();
  3. while (count($liczby) < 6) {
  4. $l = rand(1,49);
  5. if (array_search($l, $liczby) === false) array_push($liczby, $l);
  6. }
  7. ?>



A potem:

  1. <?php
  2. foreach($liczby as $liczba) {
  3. echo '<th width="16%" scope="col"><span class="style7">'.$liczba.'</span></th>';
  4. }
  5. ?>


Jeśli się nieskończenie zapętli, zmień false na null - to chyba zależy od wersji PHP o0

@Up: o, byłeś szybszy. I lepszy smile.gif

Ten post edytował rolnix 10.11.2007, 23:19:41


--------------------
Go to the top of the page
+Quote Post
Vistule
post 11.11.2007, 00:03:06
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.10.2007

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


Najfajniejsze chyba będzie rozwiązanie JaRoPHP, dziękuję Wam wszystkim za zainteresowanie:)

Mam jeszcze jedno pytanie, mianowicie:


Jak zrobić żeby zawsze losował od 1 do 49 nie obejmując zera??

Tak wygląda skrypt JaRoPHP wyświetlony na obrazku (ten mój to ten sam co jest na początku tematu):

  1. <?php
  2. //JAROPHP
  3. $numbers = range(1,49);
  4. $randomNumbers = array_rand($numbers,6);
  5. echo '<table width="20%" border="1" align="center" bordercolor="#CCCCCC" bgcolor="#000000"><tr>';
  6. foreach($randomNumbers as $draw) 
  7. {
  8. echo '<th width="16%" scope="col"><span class="style7">'.$draw.'</span></th>';
  9. }
  10. echo '</tr></table>';
  11. ?>


Ten post edytował Vistule 11.11.2007, 00:04:08
Go to the top of the page
+Quote Post
b_chmura
post 11.11.2007, 00:08:56
Post #6





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


w kodzie JaRoPHP w zmiennej $randomNumbers masz jedynie klucze tablicy, powinno to raczej wyglądać coś w ten deseń:
  1. <?php
  2. $liczby = range(1,49);
  3. $klucze = array_rand($liczby, 6);
  4.  
  5. echo '<table><tr>';
  6.  
  7. foreach($klucze as $klucz)
  8. {
  9. echo '<td>'.$liczby[$klucz].'</td>';
  10. }
  11.  
  12. echo '</tr></table>';
  13. ?>


Ten post edytował b_chmura 11.11.2007, 00:20:18
Go to the top of the page
+Quote Post
Vistule
post 11.11.2007, 00:24:58
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.10.2007

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


Dzięki b_chmura. Działa idealnie!

EDIT;
Tak mi teraz wpadło do gowy, czy da się zastosować do tych liczb jakieś sortowanie w tej tabelce, tak żeby wyświetlało się np od najmniejszej do najwiekszej??

Ten post edytował Vistule 11.11.2007, 00:38:48
Go to the top of the page
+Quote Post
b_chmura
post 11.11.2007, 09:46:01
Post #8





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


  1. <?php
  2. //...
  3. $klucze = array_rand($liczby, 6);
  4. sort($klucze); //lub w porządku odwrotnym rsort($klucze);
  5. echo '<table><tr>';
  6. //...
  7. ?>
Go to the top of the page
+Quote Post
Vistule
post 11.11.2007, 19:53:02
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.10.2007

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


Dzięki, dokładnie o to mi chodziło!
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: 29.06.2025 - 14:56