PDA

View Full Version : حرفه ای: نمایش رکورد های رندوم



amirepsilon
چهارشنبه 08 دی 1389, 07:03 صبح
سلام
دوستان فکر کنید ما توی جدولمون 50 تا رکورد داریم
میخواهیم این کارها رو روش انجام بدیم:
1. بر حسب زمان مرتبشون کنیم.
2. 10 تا از آخرین رکورد ها رو جدا کنیم.
3. از 10 رکورد جدا شده، 5 کورد را تصادفی انتخاب کنیم و نمایش دهیم.
ممنون میشم کمک کنید

ghasemweb
چهارشنبه 08 دی 1389, 09:45 صبح
مرتب سازي نزولي بر حسب زمان و جداسازي 10 ركورد كه اخيرا درج سده:

$query="select * from tablename order by fieldDateTime DESC";
$res=mysql_query($query,$config) or die(mysql_error());
for($i=1;$i<=10;$i++)
{
$rows=mysql_fetch_array($res);
echo ' fields value';
}

ghasemweb
چهارشنبه 08 دی 1389, 19:04 عصر
نمايش 5 ركورد تصادفي:

<?php
$rnd=array();
for($j=1;$j<=5;$j++)
{
do{
$exis=false;
$k=rand(1,6);
foreach($rnd as $value)
if($value==$k)
$exis=true;
}while($exis);
$rnd[$j]=$k;
$query="select * from tablename order by fieldDateTime DESC";
$res=mysql_query($query,$config) or die(mysql_error());
for($i=1;$i<=$k;$i++)
$rows=mysql_fetch_array($res);
echo fields value;
}
?>

mtchabok
پنج شنبه 09 دی 1389, 09:29 صبح
سلام
فکر کنم میشه این کدی رو که نوشتید رو خلاصه هم کرد :

<?php
$query="select * from tablename order by fieldDateTime DESC limit 10";
$res=mysql_query($query,$config) or die(mysql_error());
$row = array();
while($row[] = mysql_fetch_array($res)) true;
$row = array_rand($row);
$i=1;
$output = array();
foreach($row as $key=>$value){
if($i>5) break;
$output[] = $value;
}
print_r($output); // اینم خروجی بر روی مرورگر
?>

ghasemweb
پنج شنبه 09 دی 1389, 16:36 عصر
ولي فكر ميكنم اون قسمت حلقه foeach داراي خطا باشه !

mtchabok
جمعه 10 دی 1389, 09:41 صبح
اره درسته ...
عجله ای نوشتم .. واسه همین یه اشتباه کوچولو داره .. اینم درستش :

<?php
$query="select * from tablename order by fieldDateTime DESC limit 10";
$res=mysql_query($query,$config) or die(mysql_error());
$row = array();
while($row[] = mysql_fetch_array($res)) true;
$row = array_rand($row);
$i=1;
$output = array();
foreach($row as $key=>$value){
if($i++>5) break;
$output[] = $value;
}
print_r($output); // اینم خروجی بر روی مرورگر
?>

Vahid Faraji
جمعه 10 دی 1389, 16:34 عصر
در mysql دستوری داریم به نام
order by rand() که به طور رندم انتخاب می کند.
مثلا
SELECT * FROM tablename
WHERE somefield='something'
ORDER BY RAND() LIMIT 0, 5

برای مثال شما به این صورت عمل می کنیم.

select * from
(
select * from tablename
where ...
order by ...
limit 0,10) as tb
order by rand() limit 0,5;