2011-09-30 50 views
0

我目前有一个广告列表网站,其中有3个订购过滤器。默认情况下,广告排序与以下行:来自数据库的简单随机查询

$this->setState('filter_order', $app->getUserStateFromRequest('com_adsman.filter_order','filter_order', "start_date")); 

当我改变的起始日期到另一列名,它按在默认情况下该列,所以我知道这其中的变化需要做的事情。现在,我将如何根据上面的代码去显示随机结果?

谢谢!

编辑:这里是实际的查询被调用。

  $Orderings[] = "`a`.$filter_order $filter_order_Dir"; 
    $Orderings[] = "`a`.`id` $filter_order_Dir ";   

$query = " SELECT ".implode(",",$SelectCols)." \r\n ". 

    " FROM `#__ads` AS `a` \r\n". 

    implode(" \r\n ",$JoinList)."\r\n". 

    $where."\r\n". 

    " GROUP BY `a`.`id` ". 

    " ORDER BY ".implode(",",$Orderings)." \r\n "; 

我想使用类似

$兰特=兰特(.implode( “”,$ SelectCols));

,改变$ filter_order至$ rand..I知道这是行不通的寿,错误的语法和错误的一切,这是我需要帮助!

回答

0

很好,因为在创建查询其他地方,只有充满了来自该行未来的参数......你不能只是改变这一行...

找到实际查询...追加新的一列,如“RAND()随机”和改变“起始日期”这一行“随机” ......

//编辑:

$query = " SELECT ".implode(",",$SelectCols).",rand() as random \r\n ". 
    " FROM `#__ads` AS `a` \r\n". 
    implode(" \r\n ",$JoinList)."\r\n". 
    $where."\r\n". 
    " GROUP BY `a`.`id` ". 
    " ORDER BY ".implode(",",$Orderings)." \r\n "; 

应该给你一个名为随机列“随机“(当然,如果已经有一个名字的专栏,那会很麻烦......所以也许选择而不是一个独特的名字“随机”)

+0

谢谢,我编辑了我的原始帖子与查询!有任何想法吗? – Sherif

+0

@Sherif ......你去那里......但即使我不会去tandu的做法,因为类似SQL代码应在生成的查询,而不是在使用发电机的代码的代码属于,在这种情况下,你会更容易地采取坦陀罗解决方案,因为你不需要改变你不完全明白的东西...... – DarkSquirrel42

+0

谢谢,我试过这个,但由于某种原因,它不起作用!有什么需要随机插入的地方吗?在$ Orderings数组中?编辑:只需重新读你的文章,改变了start_date行,但仍然没有:/ – Sherif

0

使用"RAND()"作为ORDER BY列。

+0

谢谢,但这将如何工作?这将等同于编写ORDER BY 17548.我想在数据库的所有列名上使用array_rand。每次页面加载时,都会按不同的列进行排序? – Sherif

+0

'ORDER BY RAND()'(没有别的)会随机化列的顺序。这是一个MySQL函数。这通常用于从MySQL中选择随机行。 'array_rand'也是一个选项,但是如果你要随机化,为什么要在查询中排序? –

+0

谢谢,实际上,我使用.rand()。 PHP函数。但问题是,通过删除$ Orderings的内部阵列,我失去了其他排序功能。如果有意义,我将如何去使用rand和implode数组? – Sherif