Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z wylosowaniem jednego id z puli
Forum PHP.pl > Forum > Przedszkole
-Greg-
Chciałem najpierw pobrać listę id należących do danej tabeli a potem wylosować z nich jedno id, próbowałem to zrobić w ten sposób:

  1. $sql = 'SELECT id FROM `klienci` WHERE id > 232 LIMIT 1000;' ;
  2. $resultx = mysql_query($sql);
  3. $k=rand(0,1000);
  4.  
  5. if(mysql_num_rows($resultx) > 0) {
  6. $row123 = mysql_fetch_array($resultx);
  7. echo 'Wylosowane id'.$row123[id][$k];
  8. }


Niestety to nie działa.
Jak to ulepszyć, żeby zadziałało ?
pablo89pl
masz liczbe z przedzialu 0 do 1000 a jak masz 2 wyniki to co ? nie zwroci Ci przeciez...
$sql = 'SELECT id FROM `klienci` WHERE id > 232 LIMIT 1000;' ;
$resultx = mysql_query($sql);

$count = mysql_num_rows($resultx);
  1. if( $count > 0)
  2. {
  3. $k=rand(0,$count);
  4. $row123 = mysql_fetch_array($resultx);
  5. echo 'Wylosowane id'.$row123[$k]['id'];
  6. }


a tak btw to mozesz zrobic przeciez
  1. SELECT jakies,pola FROM tabela ORDER BY RAND() LIMIT 1

i masz rekord...
-Greg-
Założyłem, że będzie przynajmniej 1000 wyników...
Ten 2 sposób rzeczywiście jest fajniejszy.
Zaraz to przetestuje.
Thanks !
pablo89pl
a i jeszcze pytanie odnośnie optymalizacji
w równoległym podobnym wątku zaproponowano takie rozwiązanie - oczywiście najbardziej wydajne:

$r = mysql_query("SELECT id FROM klienci");
$d = mysql_fetch_row($r);
$losowa= mt_rand(0,$ d[0] - 1);

$r = mysql_query("SELECT tutaj_pola FROM klienci LIMIT $losowa, 1");

tak że rozwiązań jest wiele..
Hpsi
przeczytaj sobie ten temat tongue.gif Temat: PHPMYSQL LOSOWY REKORD
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-2025 Invision Power Services, Inc.