Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] array rand zamiast order by rand
Forum PHP.pl > Forum > Przedszkole
tenloginjestzajety
Witam
Chcę pobrać ID rekordów z bazy do array następnie jedno ID wylosować. Niestety bezskutecznie. Pokazuje wszystkie ID.
  1. $query0 = mysql_query("SELECT `id` FROM `comments` WHERE `tag` LIKE '% $t %' LIMIT 10000");
  2. while($row0 = mysql_fetch_assoc($query0)){
  3. $array = $row0['id'].', ';
  4. $numbers = array($array);
  5. shuffle($numbers);
  6. foreach ($numbers as $number) {
  7. echo $number;
  8. }
  9. }


Pozdrawiam
markuz
$array to string, następnie $numbers to 1 elementowa tablica składająca się z tego stringa - jak sobie wyobrażasz losowanie elementu z 1 elementowej tablicy?
Lepszym sposobem będzie zrobienie tego na poziomie SQL
  1. ORDER BY RAND() LIMIT 1
Damonsson
Cytat(markuz @ 22.11.2015, 11:55:39 ) *
  1. ORDER BY RAND() LIMIT 1

Pamiętaj, że to strasznie spowolni wykonanie zapytania!
tenloginjestzajety
Wiem, dlatego chcę zastosować tablice array i z niej wybrać losowo id. Używam tego kodu jednak wyświetla wszystko.
$array = '1, 2, 3, 4, 5,';
$numbers = array($array);
shuffle($numbers);
foreach ($numbers as $number) {
echo $number;
}
virnik
Bo wszystko wyświetlasz. Skoro potrzebujesz jedno Id to po zamieszaniu tablicą wybierz któryś np. pierwszy.
  1. $array = '1, 2, 3, 4, 5,';
  2. $numbers = array($array);
  3. shuffle($numbers);
  4. echo $numbers[1];
  5. }
tenloginjestzajety
  1. $array = '1, 2, 3, 4, 5';
  2. $numbers = array($array);
  3. shuffle($numbers);
  4. echo $numbers[0];


pokazuje: 1, 2, 3, 4, 51, 1, 2, 3, 4, 5

  1. $array = '1, 2, 3, 4, 5';
  2. $numbers = array($array);
  3. shuffle($numbers);
  4. echo $numbers[1];


nic nie pokazuje.
virnik
Spróbuj tak:
  1. $numbers = array('1','2','3','4','5','6');
  2. shuffle($numbers);
  3. echo $numbers[1];
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-2024 Invision Power Services, Inc.