Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: losowe przydzielanie nr zawodnika - niepowtarzajace sie
Forum PHP.pl > Forum > PHP
michaleq91
Witam, od razu mówię, że przejrzałem tematy na forum ale nie znalazłem odpowiedzi. Chcę zrobić turniej dla graczy w grze. Graczy ma być 16. Każdy z nich ma otrzymać nr od 1 do 16 ( losowo).

Przykładowa tabela:

id(auto_increment)
nick(nick gracza)
nr(który wylosował)

Czyli np pierwszy gracz się zapisuje i w tabeli zapisują się przykładowe dane:

id 1
nick Adam
nr 14

Nastepny gracz bedzie miał
id 2
nick np jozek
i np nr 2

Każdy następny gracz ma mieć inny nr od poprzedniego.

Próbowałem wielu sposobów, lecz żaden nie przyniósł spodziewanych rezultatów. Z góry dziękuję za pomoc w wykonaniu skryptu.
Jeden z ostatnich sposobów jakie próbowałem to coś takiego ( od razu mówię, że z php jestem przeciętny)

$liczby2 = $db -> Execute("SELECT nr FROM turniej");
$liczby2 = array();
$zbior_liczb = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
unset( $zbior_liczb[$liczby2]);
$wylosowana_liczba = array_rand($zbior_liczb);

$db -> Execute("INSERT INTO turniej (nr, nick) VALUES(".$wylosowana_liczba.",'".$player -> user."')");

'".$player -> user."' ( to od nicku)
djstrong
można np. użyć shuffle" title="Zobacz w manualu PHP" target="_manual
kefirek
Można to zrobić tak
  1. <?php
  2. $tab=array();
  3. $wynik = mysql_query("SELECT nr FROM turniej");
  4. if(mysql_num_rows($wynik) > 0) {
  5. while($r = mysql_fetch_assoc($wynik)) {
  6. $tab[]= $r['nr'];
  7. }
  8. }
  9.  
  10.  
  11. $liczby = array();
  12.  
  13.  
  14. for ($i=1;$i<=16;$i++){
  15. if (!in_array($i, $tab)) { $liczby[] =  $i;}
  16. }
  17.  
  18. $losowy = array_rand ($liczby);
  19.  
  20. echo $losowy;
  21. ?>


Zmienna losowy przechowuje wylosowaną liczbę którą wstawiasz do bazy oczywiście liczba się nie potwarza
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.