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
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
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
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
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 ?
Go to the top of the page
+Quote Post
DiH
post
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
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.
Go to the top of the page
+Quote Post
DiH
post
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
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
Go to the top of the page
+Quote Post
luck
post
Post #9





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

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


Żeby była pełna jasność (IMG:style_emoticons/default/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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:04