Aksakal81 0 Опубликовано: 5 октября 2010 Рассказать Опубликовано: 5 октября 2010 подскажите как в модуле случайная новость выбрать именно только ту категорию которую хочу... random_news.php <?php /*===================================================== Случайная новость ===================================================== Данный код защищен авторскими правами ICQ: 271522951 email: kandriy2004@ukr.net ===================================================== Файл: random_news.php ---------------------------------------------------------- Назначение: Вывод случайных 3 новости одним блоком =====================================================*/ if(!is_numeric($title_length)) $title_length = 30; if(!is_numeric($short_story_length)) $short_story_length = 50; if(!is_numeric($img_maxsize)) $img_maxsize = 80; $o_block = '<table cellSpacing=0 cellPadding=0 width="100%" border="0"><tr>'; $rr = $db->query('SELECT id, date, title, short_story, SUBSTRING_INDEX(category,",",1) as category, alt_name, flag FROM '.PREFIX .'_post where approve="1" ORDER by RAND() LIMIT 0,3'); while ($row = $db->get_row($rr)) { $ttl = stripslashes($row['title']); $title_short = substr($ttl, 0, $title_length).''; $s_story = strip_tags($row['short_story']); $s_story = substr($s_story, 0, $short_story_length).''; preg_match('|<img(.*) src="([^"]*)"[^>]*>|is', $row['short_story'], $ps); if($ps[2]) { $img_parts = pathinfo($ps[2]); $img_link = $img_parts['dirname'].'/'.$img_parts['basename']; $img_info = @getimagesize($img_link); $img_width = $img_info[0]; $img_height = $img_info[1]; if ($img_width > $img_height) { $img_code = '<a href="'.$full_link.'"><IMG src="'.$img_link.'" alt="'.$ttl.'" width="'.$img_maxsize.'"/></a>'; } else $img_code = '<a href="'.$full_link.'"><IMG src="'.$img_link.'" alt="'.$ttl.'" height="'.$img_maxsize.'"/></a>'; } else { $img_code ='<div align="center" class="random_news_news">- </div>';}; $full_link = $config['http_home_url'].get_url($row['category'])."/".$row['id']."-".$row['alt_name'].".html"; $o_block .= ' <td width="33%" valign="top"> <table cellSpacing=0 cellPadding=0 width="100%" height="100%" border="0"> <tr > <td class = "random_news_img" rowspan="2"> '.$img_code.' </td> <td class = "random_news_title"> <a href="'.$full_link.'">'.$title_short.'</a> </td> </tr> <tr> <td class = "random_news_news" > '.$s_story.' </td> </tr> </table> </td>'; }; $o_block .= ' </tr> </table>'; echo '<DIV>'.$o_block.'</DIV>'; ?> Цитата Ссылка на сообщение Поделиться на других сайтах
dlestore 0 Опубликовано: 5 октября 2010 Рассказать Опубликовано: 5 октября 2010 $rr = $db->query('SELECT id, date, title, short_story, SUBSTRING_INDEX(category,",",1) as category, alt_name, flag FROM '.PREFIX .'_post where approve="1" ORDER by RAND() LIMIT 0,3'); заменить на: $rr = $db->query('SELECT id, date, title, short_story, SUBSTRING_INDEX(category,",",1) as category, alt_name, flag FROM '.PREFIX .'_post where approve="1" AND category='120' ORDER by RAND() LIMIT 0,3'); где 120 - id нужной вам категории. Цитата Ссылка на сообщение Поделиться на других сайтах
Aksakal81 0 Опубликовано: 5 октября 2010 Рассказать Опубликовано: 5 октября 2010 (изменено) Автор Можно несколько id через запятую писать? Parse error: syntax error, unexpected T_LNUMBER in /engine/modules/random_news.php on line 20 Изменено 5 октября 2010 пользователем Aksakal81 Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 5 октября 2010 Рассказать Опубликовано: 5 октября 2010 Попробуйте так, вместо: AND category='120' написать: && (category='120' || category='121') Цитата Ссылка на сообщение Поделиться на других сайтах
Aksakal81 0 Опубликовано: 6 октября 2010 Рассказать Опубликовано: 6 октября 2010 Автор Не показывает... Это может быть из за того что я название файла поменял с random_news.php на random_news1.php? Но ошибку именно той строчке показывает... и я побывал на главном random_news.php поменять и тоже самое пишит Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 7 октября 2010 Рассказать Опубликовано: 7 октября 2010 (изменено) Варианты разные, как можно сделать, попробуйте такой запрос тогда: $select = 'SELECT id,date,title,short_story,approve,alt_name,flag,SUBSTRING_INDEX(category,",",1) as category'; $from = 'FROM '.PREFIX.'_post AS p'; $where = "WHERE p.approve='1' && p.short_story!='' && p.title!='' && p.category IN (1,2,3)"; $sql = "$select $from $where ORDER by RAND() LIMIT 0,3"; $rr = $db->query($sql); Давненько не писал запросы в БД, но вроде бы так должно быть, либо: ('1','2','3'). Изменено 7 октября 2010 пользователем zgr Цитата Ссылка на сообщение Поделиться на других сайтах
Wanderers 17 Опубликовано: 19 октября 2011 Рассказать Опубликовано: 19 октября 2011 (изменено) заменить на: $rr = $db->query('SELECT id, date, title, short_story, SUBSTRING_INDEX(category,",",1) as category, alt_name, flag FROM '.PREFIX .'_post where approve="1" AND category='120' ORDER by RAND() LIMIT 0,3'); где 120 - id нужной вам категории. Вместо '120' должно быть "120" и наступит счастье. Изменено 19 октября 2011 пользователем Wanderers Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.