View Full Version : حرفه ای: نمایش رکورد های رندوم
  
amirepsilon
چهارشنبه 08 دی 1389, 08:03 صبح
سلام
دوستان فکر کنید ما توی جدولمون 50 تا رکورد داریم
میخواهیم این کارها رو روش انجام بدیم:
1. بر حسب زمان مرتبشون کنیم.
2. 10 تا از آخرین رکورد ها رو جدا کنیم.
3. از 10 رکورد جدا شده، 5 کورد را تصادفی انتخاب کنیم و نمایش دهیم.
ممنون میشم کمک کنید
ghasemweb
چهارشنبه 08 دی 1389, 10: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, 20: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, 10: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, 17:36 عصر
ولي فكر ميكنم اون قسمت حلقه foeach داراي خطا باشه !
mtchabok
جمعه 10 دی 1389, 10: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, 17: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;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.