Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Unikatowy, losowy ID, Problem z wygenerowaniem
graft
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 24.03.2007

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


Witam wszystkich.

Napisałem prosty skrypt rejestracji użytkowników. Dodatkowo chcę, aby każdy z użytkowników otrzymywał unikatowy identyfikator o formacie (np. U1234567), czyli jak widać stała litera "U" oraz 7-cyfrowa unikatowa, losowa liczba.

Napisałem coś takiego:
  1. <?php
  2.  
  3.  $sql = "SELECT user_new_id FROM tbl_users";
  4.  $result = mysql_query($sql)
  5.  or die ("Błąd: " . mysql_error()); 
  6.  
  7.  do {
  8.  $istnieje = 0;
  9.  $wynik = '';
  10.  
  11.  for($i=0;$i<7;$i++) { //7-cyfrowa
  12.  $losuj = rand(0,9); 
  13.  $wynik .= $losuj;
  14.  }
  15.  $unikat = 'U'.$wynik;
  16.  
  17.  while($row = mysql_fetch_array($result)) {
  18. if($unikat==$row['user_new_id']) {
  19.  $istnieje = 1;
  20.  }
  21.  } //end while 
  22.  
  23. }
  24.  while ($istnieje == 1); //end do while
  25.  echo $unikat;
  26.  
  27. ?>


Niestety nie działa jak powinno. Tzn. jeśli jako pierwsza liczbę wylosuje ciąg którego nie ma w bazie to jest OK. Natomiast kolejna wylosowana liczba lubi się powtórzyć (dla ułatwienia ustawiłem 1-cyfrową liczbę i wpisałem do bazy U1-U7, czyli możliwe powinno być jedynie uzyskanie ciągów: U8,U9 oraz U0)

Jeśli ktoś widzi błąd lub zna lepszy sposób na rozwiązanie problemu unikatowego, losowego ID byłbym wdzięczny za wskazówki.
Go to the top of the page
+Quote Post

Posty w temacie
- graft   Unikatowy, losowy ID   24.03.2007, 16:57:26
- - misiek172   ale po co ci taki? nie wystarczy kolumna ID i auto...   24.03.2007, 18:05:19
|- - graft   Cytat(misiek172 @ 24.03.2007, 18:05:1...   24.03.2007, 18:17:17
- - devnul   może poprostu rób identyfikatory kolejne a do wyge...   24.03.2007, 19:03:43
- - Babcia@Stefa   [PHP] pobierz, plaintext <?php$powtarza_sie = '...   24.03.2007, 19:26:48
- - devnul   taa jasne Babciu, a jak w bazie będzie mia...   24.03.2007, 19:33:03
- - UDAT   Zrób sobie skrypt generujący losową permutację lic...   24.03.2007, 19:38:58
- - Kicok   CytatZrób sobie skrypt generujący losową permutacj...   25.03.2007, 19:58:10
- - devnul   ale co będize przy powiedzmy paru milionach wpisów...   25.03.2007, 20:05:44
- - graft   Dzięki Kicok. Twoje rozwiązanie jest dla mnie jak ...   25.03.2007, 21:32:51
- - JaRoPHP   Cytat(graft @ 25.03.2007, 20:32:51 ) ...   25.03.2007, 22:16:33
|- - graft   Cytat(JaRoPHP @ 25.03.2007, 23:16:33 ...   25.03.2007, 22:33:13
- - misiek172   ehh no to sobie zrób to ID i autoincrement ale żeb...   25.03.2007, 22:24:00
- - misiek172   takie komentarze możesz przemilczeć a nie robić ko...   25.03.2007, 22:37:29
- - devnul   nie no bez przesady - forum to przede wszystkim dy...   26.03.2007, 01:12:10
- - JaRoPHP   Cytat(graft @ 25.03.2007, 21:33:13 ) ...   26.03.2007, 07:02:22
- - sf   Nie róbcie tego w PHP. Tylko zrobić procedurę skła...   26.03.2007, 08:42:20
- - Kicok   Cytatnie znalazłem odpowiedzi na pytanie: dlaczego...   26.03.2007, 14:51:29
- - Turgon   Dla mnie śmieszny trochę problem. Ja bym to robił ...   26.03.2007, 19:05:38
- - Sedziwoj   Cytat(graft @ 24.03.2007, 16:57:26 ) ...   27.03.2007, 00:51:41
- - graft   Cytat(Sedziwoj @ 27.03.2007, 01:51:41...   27.03.2007, 22:10:41


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: 19.08.2025 - 06:56