Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] unikalna liczba
Ulysess
post
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


witam zwracams się do was z pytaniem czy jest jakaś funkcja w php która losuje unikalną liczbe questionmark.gif

mam taki problem.. po wejściu w daną zakładkę losowana jest liczba poprzez rand(1,60000) i dodawana w tabeli pole5 problem w tym że dziwnym trafem (naprawdę dziwne) co kilkanaście wejść w końcu powtarza się id :| przecież szanse że akurat zostanie wylosowana taka sama jak wcześniej liczba są niewielkie a jednak losuje . Stąd moje pytanie jeśli nie ma na to dobrego sposobu spróbuje zrobić na zasadzie że po prostu pobiera dane kasuje rekord i tworzy nowy (w taki sposób w polu id z auto_increment za każdym razem będzie unikalne id ale czy to dobre rozwiązanie questionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


uniqid


--------------------
Go to the top of the page
+Quote Post
Ulysess
post
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


czy aby na pewno ta funkcja może wylosować losową liczbę ?

unikalną*
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




uniqid zwróci identyfikator, nie liczbę.

Generalnie należałoby robić coś takiego:
  1. function getUniqueRandom(){
  2.  
  3. static $used = array();
  4.  
  5. do{
  6. $num = mt_rand(0,65536);
  7. }while(in_array($num, $used));
  8.  
  9. $used[] = $num;
  10.  
  11. return $num;
  12. }


Z Twojej pracy domowej - musisz obsłużyć przypadek, gdy już wszystkie liczby zostały wylosowane (wtedy będzie pętla nieskończona). To po stronie PHP; jeśli chcesz w SQL, napisz sobie podobną procedurę składowaną albo wczytuj całą tabelę zamiast static. Ale to praca domowa. winksmiley.jpg


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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 Aktualny czas: 22.08.2025 - 08:28