|
|
|
| Делаю вывод в мамбо из галереи copermmine картинок с мах рейтингом.
$sql="SELECT p.aid,p.pid,p.filename,a.aid,p.filepath,p.approved,p.title,p.pic_rating, p.hits FROM {$table_pfx}albums a, {$table_pfx}pictures p WHERE approved='YES' AND p.pic_rating>9900
ORDER BY rand() LIMIT {$number_of_pics}";
$result = mysql_db_query ($db_database,$sql);
$sql2="SELECT c.value,c.name
FROM {$table_pfx}config c
WHERE c.name='normal_pfx'";
$result2 = mysql_db_query ($db_database,$sql2);
$a = mysql_num_rows($result2);
$sql2 = mysql_fetch_object ($result2);
if(mysql_num_rows($result))
{
while ($sql = mysql_fetch_object ($result))
{
// если нет описания для картинки, то описание = имя файла
$titler=$sql->title;
if ($titler == "")
{
$titler = $sql->filename;
}
$op=($sql->pic_rating)/2000 ; //кратное число типа 5
|
но потом сообразил что p.pic_rating>9900 это хорошо когда рейтинг 5 а если надобавляют рейтинг до 10 - много картинок на очереди будет а надо штук 5 лучших
Заменил AND p.pic_rating>9900 на AND p.pic_rating=(SELECT MAX(p.pic_rating) FROM {$table_pfx}pictures p ) получил ошибку
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in x:\home\localhost\www\mambo_tz\modules\mod_rand_copper_ge.php
|
как вывести 1 из 5-6 картинок случайно имеющим наивысший ретинг.
Спасибо. | |
|
|
|
|
|
|
|
для: oppo
(22.07.2005 в 04:05)
| | Вложенные запросы работают только начиная с MySQL 4.1. Если вы хотите вывести только 5 запросов используйте предложение LIMIT 5, а для того чтобы вывести записи в случайном порядке предложение ORDER BY RAND(). Т.е. кусок запроса можно сформировать следующим образом
AND p.pic_rating>9900 ORDER BY RAND() LIMIT 5
|
| |
|
|
|
|
|
|
|
для: cheops
(22.07.2005 в 12:03)
| | немножко я неверно написал ...
у меня вообще LIMIT 1 проставлено ($number_of_pics=1)так мне нужно вывести на экран всего одну картинку , но отобрать ее из 5 шт с максимальным рейтингом - чтоб эти 5 картнок случайным образом крутились на главной странице ,если поставить p.pic_rating>9900 то туда попадут все картинки начиная с рейтинга 5 и выше - тоесть их может быть много , а мне надо отобрать 5-6 самых- самых и случайно одну выводить..
Как разбить запрос под старую MYSQL (я не знаю какая версия будет на сервере поэтому орентируюсь на 3.** )или можно как то по другому.. | |
|
|
|
|
|
|
|
для: oppo
(22.07.2005 в 15:40)
| | Выбрать 5 самых-самых, поместить их в массив и выбрать случайную. Примерно так:
<?
$sql="SELECT ... ORDER BY p.pic_rating DESC LIMIT 5";
$result=mysql_query($sql);
while ($pic=mysql_fetch_array($result))
{
$printpic[]=$pic['p.filename'];
}
print "<IMG SRC='".$printpic[(rand(1,5)]."'>";
?>
|
На запускаемость не проверял, но думаю что общий смысл понятен. | |
|
|
|
|
|
|
|
для: Loki
(22.07.2005 в 15:57)
| | $io=rand(1,5) ;
****
ORDER BY $io and p.pic_rating DESC LIMIT {$number_of_pics}";
заработало
Спасибо за мыслю . | |
|
|
|