php – 排除特定记录时的随机SQL记录
发布时间:2020-12-13 22:48:57 所属栏目:PHP教程 来源:网络整理
导读:我有一个CodeIgniter PHP应用程序,显示两个电影封面.在它们旁边是一个“随机电影”按钮,它使用AJAX用一组新电影取代两部电影.您可以一遍又一遍地继续单击此按钮,并看到它继续替换电影封面的图像.要显示的前两个封面被设置为默认值,并且在用户单击随机影片按
我有一个CodeIgniter
PHP应用程序,显示两个电影封面.在它们旁边是一个“随机电影”按钮,它使用AJAX用一组新电影取代两部电影.您可以一遍又一遍地继续单击此按钮,并看到它继续替换电影封面的图像.要显示的前两个封面被设置为默认值,并且在用户单击随机影片按钮后它们永远不会显示.问题是:当点击随机电影按钮时,有时会多次点击以最终显示新的封面.也就是说,相同的封面将连续多次返回.正在从稍微不同的URL调用正在获取的两个不同的封面,因此它们很少会同时中断.这让我知道它很新鲜,但该功能多次返回同一部电影.如果我直接访问通过AJAX调用的url,我从来没有看到过这种情况,因为我使用了Session类来存储最后一部电影并将其从SQL查询中排除(即WHERE id NOT IN($default_movie,$last_movie) )).知道为什么直接访问url会正常工作,但是当通过AJAX调用时,我看到了这种行为?
我知道这可能不是很清楚,所以如果我能澄清一些没有意义的话,请告诉我.我会添加代码,如果这也有帮助.谢谢朋友! 查询获取随机电影: SELECT * FROM (`movies`) WHERE `id` NOT IN (2,10) ORDER BY RAND() LIMIT 1 模型方法: public function getRandom($count = 1,$featured = FALSE,$series = FALSE,$exclude = 0,$last = 0) { $this->db->order_by('id','random'); $this->db->limit(1); $conditions = array(); if ($exclude > 0) { $conditions['id !='] = $exclude; } if ($last > 0) { if (!empty($conditions['id !='])) { $conditionsNotIn = "id NOT IN (" . $conditions['id !=']. ",$last)"; unset($conditions['id !=']); $this->db->where($conditionsNotIn); } else { $conditions['id !='] = $last; } } if ($featured) { $conditions['featured'] = 1; } if ($series) { $conditions['current_series'] = 1; } $movie = $this->db->get_where('movies',$conditions); $movie = $movie->row(); if (!is_null($movie)) { return $movie; } else { return FALSE; } } 解决方法
我有一个想法是的. 浏览器缓存.. PITA! 尝试明确关闭缓存: $.ajaxSetup({cache: false}); 假设你正在使用jQuery,那就把它放在你的ajax请求之前. 如果您不需要将一些随机变量附加到URL,这会阻止浏览器缓存请求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读