[MySQL][PHP]Losowanie liczby w RAND, Z wyjątkiem kilku cyfr |
[MySQL][PHP]Losowanie liczby w RAND, Z wyjątkiem kilku cyfr |
19.02.2011, 10:46:53
Post
#1
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%) |
Cześć potrzebuję zrobić takie małe losowanie portów do ventrilo, i port ma się dodać do bazy danych mysql i potem uruchomić odpowiedni program ( Potrzebuje tylko losowanie uruchamianie już mam )
Dokładnie chciałbym zrobić taką pętle która mi na 100% nie wylosuje już istniejącego portu ( zapisanego w mysql - Tabela serwy kolumna port, stąd ma pobierać porty ) i jeszcze aby nie wylosowało kilku innych portów takich jak 3306 ( Mysql ) i kilku innych które sam będę sobie ustawiał. Na razie posiadam tylko Tyle ( Taki przedział portów ) Wiem jak zrobić aby nie wylosowało jednej liczby np 3306, ale jak zrobić taką pętelkę aby nie za dużo zasobów zabierała ( serwera ) a w miarę dobrze pobierała dane z MySQL i je odpowiednio osadzała. |
|
|
19.02.2011, 10:54:26
Post
#2
|
|
Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) |
moim zdaniem algorytm powinien wygladac tak
1. napisz funkcje ktora od przedzialow liczbowych podanych w array, odejmie jedna liczbe 2. napisz zapytanie ktore zwroci wszystkie porty 3. napisz funkcje ktora na podstawie tablicy przedzialow liczowych podanych w array, zwroci losowa liczbe ktora sie w nich nie zawiera, a jednoczesnie bedzie jakos ograniczona od gory 4. sklej to do kupy w petli |
|
|
19.02.2011, 10:58:17
Post
#3
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) |
Definiujesz tablice do ktorej bedziesz dodawal 'zakazane' porty. Nastepnie w petli bedziesz sprawdzal warunkiem if czy dana wartosc znajduje sie na zakazanej liscie( in_array($wylosowana_Wartosc,$tablica) )
@up Sry, nie zauwazylem ze ktos mnie juz ubiegl Ten post edytował RiE 19.02.2011, 11:25:24 |
|
|
19.02.2011, 11:08:06
Post
#4
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%) |
Ja myślałem żeby to zrobić tak:
Mój Kod Później przeszukać MySQL tak: i jeśli by wynik wyszedł np tak: I teraz jeśli wyskoczy "else" to dać kolejny if który mniej więcej wyglądał by tak Nie wiem jak to będzie śmigało i czy będzie to optymalne i czy wszystko będzie się robiło w tle żeby użytkownik nie musiał odświeżać stronę lub nacisnąć przycisk OK. a tu dopiero się będzie szukało czy istnieje taki port czy nie... - Wszystko bym chciał zrobić typowo w tle. Edit: Czy istnieje jakaś funkcja która mi wykona ponownie kod w tle - tak jak tutaj pokazałem ? Ten post edytował Giluś 19.02.2011, 11:30:54 |
|
|
19.02.2011, 11:32:24
Post
#5
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) |
I za kazdym razem bedziesz sprawdzal czy wylosowany port jest w bazie? Lepiej zrob cos takiego:
|
|
|
19.02.2011, 11:43:52
Post
#6
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%) |
RiE twój kod pokazuje błąd w ostatniej linijce całej strony ( nie twojego kodu - a strona jest poprawna )
Cały kod:
Już wiem o co chodzi while(!in.. - Brakuje zamknięcia nawiasu Dodałem na końcu ")" i ";" Ale otrzymałem za to inny błąd:
Ten post edytował Giluś 19.02.2011, 11:48:32 |
|
|
19.02.2011, 11:49:35
Post
#7
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) |
O przepraszam!
Z rozpedu popelnilem 'drobny' blad
Teraz powinno byc dobrze Ten post edytował RiE 19.02.2011, 11:50:01 |
|
|
19.02.2011, 11:53:34
Post
#8
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%) |
Coś nie śmiga ten kod, ładuje się bardzo długo
|
|
|
19.02.2011, 12:03:43
Post
#9
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 45 Dołączył: 5.05.2010 Ostrzeżenie: (0%) |
|
|
|
19.02.2011, 12:12:58
Post
#10
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%) |
Dzięki wielkie za ten kod Jeszcze jedno pytanie jak dodać tablicę z własnymi portami ( zablokowanymi ) do tego skryptu ? $tablica = array ('3600'); Bo tutaj nie działa za bardzo jak dodam po tab_porty Ten post edytował Giluś 19.02.2011, 12:31:28 |
|
|
19.02.2011, 17:08:14
Post
#11
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) |
Jeszcze jedno pytanie jak dodać tablicę z własnymi portami ( zablokowanymi ) do tego skryptu ? $tablica = array ('3600'); Jest funkcja array_merge (łączenie tablic). Pytanie tylko, czy jest sens tworzyć jakąś dodatkową tablicę, a potem dołączać jej treść do tab_porty? A może ładuj numery "zakazanych" portów wprost do tab_porty: (dla kolejnych zakazanych portów). Ta treść powinna być w miejscu gdzie masz komentarz: // Tu możesz dodać ... Z uwagi na przejrzystość kodu, może lepiej wywołaj w tym miejscu funkcję, a doładowanie numerów do tab_porty zrób właśnie w tej funkcji. |
|
|
20.02.2011, 10:12:33
Post
#12
|
|
Grupa: Zarejestrowani Postów: 377 Pomógł: 9 Dołączył: 2.11.2010 Ostrzeżenie: (0%) |
A da się jeszcze bardziej przerobić ten kod, tzn
Adres IP: 192.168.1.1 - Posiada porty 3000, 3002, 1000 ( przykładowe ) No i teraz już się nie da zarejestrować ponownie tych portów, a ja chcę aby można było zarejestrować jesli jest inny ip tzn: 192.168.1.1 - Posiada port 3000 ( tylko 1x ) 192.168.1.2 - Może też posiadać port 3000 ( tylko 1x ) 192.168.1.3 - Też może posiadać port 3000 ( tylko 1x ) |
|
|
Wersja Lo-Fi | Aktualny czas: 18.05.2024 - 20:21 |