Random Select

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Random Select

Mesajde bobby » Mar Noi 23, 2004 8:12 pm

cum fac sa imi afiseze dintr-o baza de date random niste date:

de ex :

am baza de date Curs BNR: cu tabele euro dolar lei .Cand dau select * from euro vreau sa fie ceva random. Odata sa afiseze euro,odata lei si tot asa!



Avatar utilizator
oiganSTUDIOS
Senior Member
Mesaje: 223
Membru din: Vin Oct 22, 2004 8:05 pm

Mesajde oiganSTUDIOS » Mar Noi 23, 2004 11:41 pm

SELECT * FROM tablename ORDER BY RAND() LIMIT 1

dar asta merge la tabele mici pana in 300.000 de inregistrari... Daca ai foarte multe inregistrari in baza poate sa mearga incet...

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Noi 24, 2004 9:29 am

SELECT * FROM text_nick ORDER BY RAND() LIMIT 1

tabelul se numeste text_nick. Dar imi da eroare

ce am gresit?

Avatar utilizator
oiganSTUDIOS
Senior Member
Mesaje: 223
Membru din: Vin Oct 22, 2004 8:05 pm

Mesajde oiganSTUDIOS » Mie Noi 24, 2004 9:37 am

www.php.net
Cauta si tu pe acolo si o sa gasesti raspunsul...

Numa' bine...

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Noi 24, 2004 11:16 am

daca scriu SELECT * FROM a ORDER BY RAND()
merge dar imi afiseaza tot continutul tabelul radom (abc acb bca etc))

cand pun cum ai zis da eroare pls help

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Noi 24, 2004 6:49 pm

nu stie nimeni?

mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Mie Noi 24, 2004 8:29 pm

[php]
$res = mysql_query("select * from tabel");
$pos = mysql_num_rows($res);
$rand = rand(1,$pos)-1;
mysql_query("select * from tabel limit ".$rand.",1");
[/php]

Cu placere :)
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Noi 24, 2004 9:05 pm

deci cum va arata scriptul k nu am inteles?

mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Joi Noi 25, 2004 7:17 am

Pai exact cel de sus. Primul $res este selectul cu toate liniile tabelului, ca sa le pot numara cu $pos = mysql_num_rows($res). Cunoscand numarul total de linii generez un numar aleatoriu intre 1 si $pos din care scad o unitate (pt ca numerotarea liniilor incepe de la 0 si se termina cu $pos-1). Apoi fac selectul final, cu un " limit ".$rand.",1" Care inseamna: cauta randul din tabel de pe pozitia $rand si incepand cu el selecteaza 1 randuri
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Dec 01, 2004 6:11 pm


bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Dec 01, 2004 6:17 pm


Avatar utilizator
roverdc
PHPRomania Supporter
Mesaje: 21
Membru din: Sâm Noi 27, 2004 5:38 pm
Localitate: Piatra-Neamt
Contact:

Mesajde roverdc » Mie Dec 01, 2004 9:37 pm

deci eu vad:
$res = mysql_query("select * from clasament");

si linia 28 este: while ($myrow = mysql_fetch_array($result)) {

si eu cred ca ar trebuii sa fie:
while ($myrow = mysql_fetch_array($res)) {
Enjoy RoverDC !:)

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Dec 01, 2004 10:18 pm

mersi mult..,.

cum fac k serverul sa aleaga la intamplare un id (fiecare camp are cate un id) si sa imi afiseaze toate acele date.
adica am un tabel cu 3 campuri : id nick puncte
sa ia id 10 sa afiseze nick-ul si punctele

mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Mie Dec 01, 2004 10:49 pm

while($row = mysql_fetch_array($result)) -- unde $result este resursa cu limit $rand. Si nici nu e nevoie de while pt ca returneaza doar un rand.

Adica era bun codul tau bobby, numai ca exact cu un rand inainte de while ai uitat sa scrii atribuirea pt $result. Si mai ai o greseala la ghilimele. Asta ar trebui sa mearga:

[php]
$link = mysql_connect("xxxxxxxx", "xxxxxxx", "xxxxxx")
     or die("Nu se poate conecta");
    mysql_select_db("divizia_fifa", $link) or die("Nu am gasit baza de date cautata");
    $res = mysql_query("select * from clasament");
    $pos = mysql_num_rows($res);
    $rand = rand(1,$pos)-1;
    $result = mysql_query("select * from clasament limit ".$rand.",1");
    $myrow = mysql_fetch_array($result) //deoarece $result are doar un rand
         echo "<b> ".$myrow['text_nick']."</b>";
     }
[/php]
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

bobby
PHPRomania Supporter
Mesaje: 27
Membru din: Dum Oct 24, 2004 3:20 pm

Mesajde bobby » Mie Dec 01, 2004 11:21 pm

da eroare la codul tau


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 7 vizitatori