Форум -> Обо всём... -> Блок вывода случайной новости. подскажите.. |
Блок вывода случайной новости. подскажите.. |
---|
СЭР | Дата: 23.01.2008, в 14:01 | Сообщение №1 |
УчастникПользователь №: 264 Сообщений: 65
| Подскажите пожалуйста.
есть у кого блок вывода случайной новости. |
|
|
|
Serg_pnz | Дата: 23.01.2008, в 14:21 | Сообщение №2 |
АдминистраторПользователь №: 1 Сообщений: 2242
| СЭР, Берешь блок, скажем 10 последних, (а вообще любой, относящийся к новостям) и делаешь следующее
1. Там, где сортировка, пишем ORDER BY rand()
2. Лимит устанавливаем на 1 LIMIT 0, 1
Подробности | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
СЭР | Дата: 23.01.2008, в 14:58 | Сообщение №3 |
УчастникПользователь №: 264 Сообщений: 65
| Благодарю огромное.
один мал. нюас
что заменить чтоб она развёрнутая была? |
|
|
Serg_pnz | Дата: 23.01.2008, в 15:36 | Сообщение №4 |
АдминистраторПользователь №: 1 Сообщений: 2242
| Кто она и куда должна развернуться? | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
СЭР | Дата: 23.01.2008, в 15:43 | Сообщение №5 |
УчастникПользователь №: 264 Сообщений: 65
| сейчас выводится заголовок.
идея такая чтоб выдилась вся новость
Код | 1
| <?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
$top= "1"; #количество новостей в блоке
$symbolov = 100; #количество символов в заголовке
/* Top 10 read stories */
global $prefix, $db, $dbi;
$result = $db->sql_query("SELECT sid, title FROM ".$prefix."_stories WHERE time <= now() AND status='1' ORDER BY rand() LIMIT 0,$top");
$lugar=1;
$content .= "<table cellspacing=\"0\" width=\"100%\" cellpadding=\"1\" border=\"0\" align=\"left\">";
while ($row = $db->sql_fetchrow($result)) {
$sid = intval($row['sid']);
$title = stripslashes(check_html($row['title'], "nohtml"));
$title=cutstr( $title, $symbolov );
$lugar = $lugar;
$content .= "<tr><td align=\"right\" >$lugar:</td><td align=\"left\" width=\"100%\"> <a href=\"index.php?name=News&op=article&sid=$sid\">$title</a></td></tr>";
$lugar++;
}
$content .= "</table>";
?> |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно СЭР 23.01.2008 г. в 15:52:13 |
|
|
Serg_pnz | Дата: 23.01.2008, в 16:33 | Сообщение №6 |
АдминистраторПользователь №: 1 Сообщений: 2242
| Конкретно для одной новости с полным выводом текста код будет таким
Код | 1
| <?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
global $prefix, $db;
$result = $db->sql_query("SELECT sid, title, hometext, bodytext FROM ".$prefix."_stories WHERE time <= now() AND status='1' ORDER BY rand() LIMIT 0,1");
$content .= "<table cellspacing=\"0\" width=\"100%\" cellpadding=\"1\" border=\"0\" align=\"left\">";
$row = $db->sql_fetchrow($result);
$content .= "<tr><td align=\"left\" width=\"100%\"> <a href=\"index.php?name=News&op=article&sid=".$row['sid']."\">".$row['title']."</a><br><br>". bb_decode($row['hometext']."<br><br>".$row['bodytext'])."</td></tr>";
$content .= "</table>";
?> |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно Serg_pnz 23.01.2008 г. в 16:35:30 | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
alfainfo | Дата: 24.01.2008, в 15:10 | Сообщение №7 |
Активный участникПользователь №: 237 Сообщений: 152
| как всегда спасибо Serg_pnz, на этом примере если с умом то много чего сделать можно, но....
а вот если нужно выводить из текстогого файла где каждая строчка это отдельная не пронумерованная новая запись???
или что будет правелнее как экспортировать такой масив в БД чтоб добавилась колонка нумерации, ну а потом можно и воспользоватся предыдущим примером для вывода, пиребив разумеется имя таблици и имена полей.... а вот как в базу вбить???
пример 123.txt
текст1
текст2
........
текстХ |
|
|
Serg_pnz | Дата: 24.01.2008, в 16:11 | Сообщение №8 |
АдминистраторПользователь №: 1 Сообщений: 2242
| Есть такая функция, которая считывает файл построчно, называется она file
Код | 1
| $mass = file('test.txt'); |
Это мы считываем файл построчно и пихаем всё в массив.
Далее делаем рандомную выборку индекса и выводим результат
Код | 1
| // здесь мы проинициализировали генератор случайных чисел
srand((float) microtime() * 10000000);
//Выбираем случайный ключ и выводим результат
$rand_key = array_rand($mass);
echo "Случайная строка <br>";
echo $mass[$rand_key] ; |
Пример работы можно посмотреть тут - перейди и обнови страницу несколько раз. И никакой мускул нам не нужен для вывода случайной строки массива.
Тестовый файл Цитата | строка 1
строка 2
строка 3
строка 4
строка 5
строка 6 |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно Serg_pnz 24.01.2008 г. в 16:12:01 | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
alfainfo | Дата: 24.01.2008, в 18:58 | Сообщение №9 |
Активный участникПользователь №: 237 Сообщений: 152
| Serg_pnz, - да весьма простой код, а теоретически какая разница в выводе из тхт и из БД я имею в виду по производительности и по скорости загрузки для сайта, допустим строк этих этак 500 и посетителей 1000 тоды или забивать в оперативку серваку эти 500 строк (так как их заглатывает одна переменная) для каждого юзвера который откроет страницу или взять одну строчку из базы и забить ее в такую же переменную а значит и в оперативку что быстрее и производиельнее???
извените что не совсем по теме топика..... |
|
|
Serg_pnz | Дата: 25.01.2008, в 10:09 | Сообщение №10 |
АдминистраторПользователь №: 1 Сообщений: 2242
| alfainfo, это называется кэширование "взять и забить" | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
СЭР | Дата: 06.03.2008, в 16:02 | Сообщение №11 |
УчастникПользователь №: 264 Сообщений: 65
| А что нужно добавить чтобы не вся новость выводилась а её часть?
Код | 1
| <?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
global $prefix, $db;
$result = $db->sql_query("SELECT sid, title, hometext, bodytext FROM ".$prefix."_stories WHERE time <= now() AND status='1' ORDER BY rand() LIMIT 0,1");
$content .= "<table cellspacing=\"0\" width=\"100%\" cellpadding=\"1\" border=\"0\" align=\"left\">";
$row = $db->sql_fetchrow($result);
$content .= "<tr><td align=\"left\" width=\"100%\"> <a href=\"index.php?name=News&op=article&sid=".$row['sid']."\">".$row['title']."</a><br><br>". bb_decode($row['hometext']."<br><br>".$row['bodytext'])."</td></tr>";
$content .= "</table>";
?> |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно СЭР 06.03.2008 г. в 16:03:06 |
|
|
Serg_pnz | Дата: 06.03.2008, в 16:30 | Сообщение №12 |
АдминистраторПользователь №: 1 Сообщений: 2242
| СЭР, убей Код | 1
| <br><br>".$row['bodytext'])." |
| Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
СЭР | Дата: 06.03.2008, в 17:23 | Сообщение №13 |
УчастникПользователь №: 264 Сообщений: 65
| что-то не то
блок не работает вобще.
А идея вобщем такая.
Сделать чтобы выводилась часть случайной новости и случайной статьи в случайном порядке
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно СЭР 06.03.2008 г. в 17:43:37 |
|
|
Serg_pnz | Дата: 06.03.2008, в 18:44 | Сообщение №14 |
АдминистраторПользователь №: 1 Сообщений: 2242
| Рабочая версия
Код | 1
| <?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
global $prefix, $db;
$result = $db->sql_query("SELECT sid, title, hometext, bodytext FROM ".$prefix."_stories WHERE time <= now() AND status='1' ORDER BY rand() LIMIT 0,1");
$content .= "<table cellspacing=\"0\" width=\"100%\" cellpadding=\"1\" border=\"0\" align=\"left\">";
$row = $db->sql_fetchrow($result);
$content .= "<tr><td align=\"left\" width=\"100%\"> <a href=\"index.php?name=News&op=view&id=".$row['sid']."\">".$row['title']."</a><br><br>". bb_decode($row['hometext'])."</td></tr>";
$content .= "</table>";
?> |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно Serg_pnz 07.03.2008 г. в 13:02:42 | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Serg_pnz | Дата: 07.03.2008, в 13:03 | Сообщение №15 |
АдминистраторПользователь №: 1 Сообщений: 2242
| предыдущий пост обновлен (там была пропущена скобку у бб-декоде() вот и не работало...) | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Serg_pnz | Дата: 07.03.2008, в 13:44 | Сообщение №16 |
АдминистраторПользователь №: 1 Сообщений: 2242
| Вариант с обрезанием (для 3.5)
Код | 1
| <?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
global $prefix, $db;
$result = $db->sql_query("SELECT sid, title, hometext, bodytext FROM ".$prefix."_stories WHERE time <= now() AND status='1' ORDER BY rand() LIMIT 0,1");
$content .= "<table cellspacing=\"0\" width=\"100%\" cellpadding=\"1\" border=\"0\" align=\"left\">";
$row = $db->sql_fetchrow($result);
$content .= "<tr><td align=\"left\" width=\"100%\"> <a href=\"index.php?name=News&op=view&id=".$row['sid']."\">".$row['title']."</a><br><br>". cutstr(text_filter(bb_decode($row['hometext'])), 50)."</td></tr>";
$content .= "</table>";
?> |
| Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
|
Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|