Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Generator totka
Forum PHP.pl > Forum > Przedszkole
Vistule
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>
phpion
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>
JaRoPHP
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. ?>
rolnix
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
Vistule
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. ?>
b_chmura
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. ?>
Vistule
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??
b_chmura
  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. ?>
Vistule
Dzięki, dokładnie o to mi chodziło!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.