Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Porównanie wartości
Forum PHP.pl > Forum > Przedszkole
qbejs
Siemka exclamation.gif

Pisze sobie skrypt który losuje liczbe z zakresu od 1 do 10 a następnie sprawdza czy taki numer nie wystąpił już w bazie....

  1. <?php
  2. $nr = rand(1,10);
  3.  
  4. echo '<h3>Wylosowany numer wzorzec: '.$nr.'</h3>';
  5.  
  6. while ($result=mysql_fetch_array($check))
  7. {
  8. echo 'Numer wzorzec z bazy: <B>'.$result['id'].'</B><BR>';
  9.  
  10. while ($result['id'] == $nr) 
  11. {
  12. $nr = rand(1,10);
  13. $nr_startowy = $nr;
  14. echo 'Wystąpił duplikat - ponowne losowanie<BR>';
  15. echo 'Nowa wylosowana liczba: '.$nr_startowy.'<BR>';
  16. }
  17.  $nr_startowy = $nr;
  18.  echo 'Nie wystąpił duplikat<BR>Numer startowy do bazy: '.$nr_startowy.'<BR><HR>';
  19. }
  20. echo '<B><I>Unikalny numer: '.$nr_startowy.'</B></I><BR>';
  21. ?>


Jak według Was przerobić go by otrzymywany finalny $nr_startowy był unikalny w skali całej bazy...próbowałem już kilki pomysłów ale niestety skrypt sie zapętlał...

Z góry dzięki
Cienki1980
Kurcze patrze w ten kod i za CHRL nie mogę zaczaić o w nim chodzi. Co ma robić i jakie dawać efekty.
misiek172
idiotyczne...

nie lepiej ustawić w bazie to dane pole UNIQUE (czy jakoś tak to sie pisze) i tylko sprawdzać czy true czy false? :|
bregovic
Nie wiem po kiego tobie to grzyba, ale powinno to działać tak:
  1. <?php
  2. $loop = true;
  3. while ($loop === true) {
  4. $nr = rand(1, 10);
  5. $result = mysql_query("SELECT * FROM somewhere WHERE numer=$nr");
  6. if (mysql_num_rows($result) == 0) {
  7. $loop = false;
  8. }
  9. }
  10. ?>

Należy podkreślić że to w sumie głupie rozwiązanie.
qbejs
Skrypt ma losować numer rejestrującemu się userowi przy czym ma on byc unikalny. Zapomniałem jednak o własciwosci unique :/ i robilem to metodą na chama.....
Cienki1980
Cytat(qbejs @ 19.03.2007, 11:36:53 ) *
Skrypt ma losować numer rejestrującemu się userowi przy czym ma on byc unikalny. Zapomniałem jednak o własciwosci unique :/ i robilem to metodą na chama.....


No to jeżeli rejestrujesz userów w bazie to co powstrzymało Ciebie przed tym, żeby tym numerem było ID ( czy jak tam sobie je nazwiesz ) jako pole, które powinno być auto_increment questionmark.gif
qbejs
Cytat(Cienki1980 @ 19.03.2007, 12:42:52 ) *
No to jeżeli rejestrujesz userów w bazie to co powstrzymało Ciebie przed tym, żeby tym numerem było ID ( czy jak tam sobie je nazwiesz ) jako pole, które powinno być auto_increment questionmark.gif


Id usera w bazie swoją drogą a skrypt zamieszczony tu przeze mnie ma wylosować unikalny numer usera z zakresu 1-200 ( bedzie to numer zawodnika na pewnych wyścigach )
pawkow
przecież napisał, ze id usera swoją drogą, a drugi numer go identyfikujący swoją.
qbejs
Dzięki Panowie za pomoc smile.gif Zapomniałem o właściwości UNIQUE w MySQL...oczywiście to rozwiązało mój problem. A co do Waszych wątpliwości po co mi ten skrypt to już wyjaśniam. Tworzę system rejestracji zawodników dla pewnych wyścigów na 1/4 mili. Założeniem systemu jest załadowanie podstawowych danych o kierowcy i samochodzie oraz wygenerowanie unikalnego numeru startowego. W związku z tym potrzebowałem czegoś co zagwarantuje mi pewność iż nie zdublują się numery startowe.

Jeszcze raz dzięki i pozdrawiam...
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.