Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Rand i pętla czyli losowanie liczby, proste pytanie
Woytek950
post 21.03.2010, 12:22:46
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


Witam. Chcę napisać skrypt losujący liczbę i jeżeli liczba znajduje się w tablicy (bazie mysql) to losuje inną. Jak to zrobić?
Próbowałem z pętlą for ale nie poradziłem sobie.
Go to the top of the page
+Quote Post
Wicepsik
post 21.03.2010, 12:36:47
Post #2





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

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


Pokaż skrypt który napisałeś. Ja bym użył pętli while

Ten post edytował Wicepsik 21.03.2010, 12:37:15


--------------------
Go to the top of the page
+Quote Post
DiH
post 21.03.2010, 12:54:21
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Zmień kolejność. Najpierw pobierz pola z bazy, zwykłym whilem zapisz je do tablicy, a potem przy losowaniu sprawdzaj.
  1. while($c = mysql_fetch_array($zapytanie) {
  2. tablica[] = $c['pole_z_liczba'];
  3. }
  4. $zmienna = rand(5, 20);
  5. for($i = 0; $i < sizeof($tablica); $i++) {
  6. if(tablica[$i]==$zmienna) {
  7. $zmienna = rand(5, 20);
  8. }
  9. else {
  10. echo $zmienna;
  11. }
  12. }
Go to the top of the page
+Quote Post
Fifi209
post 21.03.2010, 14:08:46
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(DiH @ 21.03.2010, 12:54:21 ) *
Zmień kolejność. Najpierw pobierz pola z bazy, zwykłym whilem zapisz je do tablicy, a potem przy losowaniu sprawdzaj.
  1. while($c = mysql_fetch_array($zapytanie) {
  2. tablica[] = $c['pole_z_liczba'];
  3. }
  4. $zmienna = rand(5, 20);
  5. for($i = 0; $i < sizeof($tablica); $i++) {
  6. if(tablica[$i]==$zmienna) {
  7. $zmienna = rand(5, 20);
  8. }
  9. else {
  10. echo $zmienna;
  11. }
  12. }


A słyszałeś o in_array ?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
DiH
post 21.03.2010, 14:17:17
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Nie.
Go to the top of the page
+Quote Post
#luq
post 21.03.2010, 14:23:04
Post #6





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


A po drugie nie wpisuj w warunek pętli for wywołania funkcji, policz przed pętlą, w warunku pętli jedynie porównuj.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
DiH
post 21.03.2010, 14:27:24
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


@up Co mam policzyć niby? Jeżeli wylosowana wartość znajduje się już w tablicy, to wykonuje kolejne losowanie.
Go to the top of the page
+Quote Post
#luq
post 21.03.2010, 14:34:47
Post #8





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


  1. for($i = 0; $i < sizeof($tablica); $i++)


=>

  1. $foo = sizeof( $tablica );
  2. for( $i = 0; $i < $foo; $i++ )



ale oczywiście tak jak mówi fifi209, powinno to być:
  1. if( in_array( [...] ) )


Ten post edytował #luq 21.03.2010, 14:35:43


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
luck
post 21.03.2010, 14:38:01
Post #9





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Żeby była pełna jasność winksmiley.jpg
  1. do {
  2. $zmienna = rand(5, 20);
  3. } while(in_array($zmienna, $tablica));
  4. echo $zmienna;


--------------------
Go to the top of the page
+Quote Post
Woytek950
post 21.03.2010, 15:04:22
Post #10





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


Dzięki wszystkim.
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 Wersja Lo-Fi Aktualny czas: 13.07.2025 - 00:34