Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] mt_rand()
-Gość_Max_*-
post 7.07.2006, 11:21:00
Post #1





Goście







Wywołuje taki skrypt:
  1. <?php
  2. for($a = 0, $b = 5; $a < $b; $a++)
  3. {
  4. $id = mt_rand(1, 7);
  5.  
  6. echo $id.'<br>';
  7. }
  8. ?>

I problem w tym, że czasem wyświetla się 1,4,6,1,1 a ja bym chciał, żeby liczby się nie powtarzały sad.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Jojo
post 7.07.2006, 11:50:23
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


Zamiast wyświetlać wylosowane liczby zapakuj to w tablicę, a potem array_unique" title="Zobacz w manualu php" target="_manual i masz tablicę bez powtarzających się wartości.


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
-Gość-
post 7.07.2006, 12:22:21
Post #3





Goście







Ale chodzi o to żeby było dokładnie 5 wyników.
Go to the top of the page
+Quote Post
Jojo
post 7.07.2006, 12:24:31
Post #4





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


W takim razie wykonuj w pętli array_unique i sprawdzenie czy tablica ma już 5 elementów, jeśli nie, kręć pętlę dalej.


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
kszychu
post 7.07.2006, 12:35:10
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Robisz tablicę wypełniasz ją liczbami od 1 do 7, szuflujesz ją (shuffle) i pobierasz pięć pierwszych elementów.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
-Gość-
post 7.07.2006, 16:27:34
Post #6





Goście







Zrobiłem coś takiego

  1. <?php
  2. $query = mysql_query("Select COUNT( * ) FROM $links_b_tbl");
  3. $fetch = mysql_fetch_array($query);
  4. $all = $fetch[0];
  5.  
  6. $b = 5;
  7.  
  8. while($c < $b)
  9. {
  10. $id = mt_rand(1, $all);
  11.  
  12. $query2 = mysql_query("SELECT title, link FROM $links_b_tbl WHERE id = $id");
  13. $fetch2 = mysql_fetch_array($query2);
  14.  
  15. $title = $fetch2['title'];
  16. $link = $fetch2['link'];
  17.  
  18. $links = '<a href ="'.$link.'">'.$title.'</a><br>';
  19.  
  20. $array[] = $links;
  21.  
  22. $print = array_unique($array);
  23.  
  24. $c = count($print);
  25.  
  26. }
  27.  
  28. for($a = 0; $a < $b; $a++)
  29. {
  30. echo $print[$a];
  31. }
  32. ?>

Ale zwracany wynik wyświetla czasem 5, a czasem mniej wyników dlaczego?
Go to the top of the page
+Quote Post
Jojo
post 8.07.2006, 09:56:35
Post #7





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

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


Ehh trzeba było mówić że chcesz to wykorzystać do wybrania losowych rekordów z MySQL. Możesz użyć czegoś takiego:
  1. SELECT * FROM tablica ORDER BY RAND() LIMIT 0, 5

Powyższe wyświetli ci dokładnie 5 losowych rekordów.


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
-Gość-
post 8.07.2006, 10:53:59
Post #8





Goście







Dzięki tongue.gif W sumie nie wpadłem na to, że mysql ma taki bajer winksmiley.jpg
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: 14.08.2025 - 00:39