У меня вопрос по поводу случайного вывода некоторого текста/картинок на сайте.
Наткнулся вот на этот сайт http://fucking-great-advice.ru/ - Впечатлила идея! Хочу сделать точно также у себя на сайте. У меня стоит Wordpress, и к нему не нашлось такого плагина который создаёт отдельную страницу, где случайным образом отображаются мои цитаты или анекдоты.
Собсно сформулирую вопрос:
- Стоит ли на этом сайте какаято популярная cms или это движок самописный?
- Если можно что-то подобное скачать, то где?
Особых познаний в php у меня нет, но если найдётся хотябы похожий скрипт, то думаю с помощью мануалов, паяльника и прочих инструментов смогу его подделать под себя)
Надеюсь проблемку изложил как можно понятнее.
Заранее благодарен за любую помощь в деле

Спустя 2 минуты, 22 секунды (11.09.2011 - 18:47) DayFun написал(а):
ааа и еще забыл показать как я задумал это сделать!
вот мой сайт http://dayfun.ru/ а страница где будут рандомно выводится цитаты тут: http://anekdot.dayfun.ru/ - там уже стоит найденый на вовеб скрипт, но уж больно убогий)
вот мой сайт http://dayfun.ru/ а страница где будут рандомно выводится цитаты тут: http://anekdot.dayfun.ru/ - там уже стоит найденый на вовеб скрипт, но уж больно убогий)
Спустя 3 минуты, 30 секунд (11.09.2011 - 18:51) dimonise написал(а):
ничего сложного работы на 2 часа.
просто база с текстом. и через rand() вывод организован
просто база с текстом. и через rand() вывод организован
Спустя 5 минут, 42 секунды (11.09.2011 - 18:56) DayFun написал(а):
а можете тыкнуть носом в готовый код? я ведь пишув теме для новичков не просто так) с нуля написать не получается пока что, но учусь)
а без базы такое получится? у меня сейчас стоит вот тут http://anekdot.dayfun.ru/ скрипт на файлах, без базы.
а без базы такое получится? у меня сейчас стоит вот тут http://anekdot.dayfun.ru/ скрипт на файлах, без базы.
Спустя 2 минуты, 58 секунд (11.09.2011 - 18:59) TranceIT написал(а):
Какие там 2 часа =) Бутылку пива выпить не успеешь =)
В $joke получаем текст анекдота.
// Подключаемся к базе данных
// И узнаем количество анекдотов в таблице
$result = mysql_query("SELECT * FROM anekdot");
$num_rows = mysql_num_rows($result);
$result = mysql_query ("SELECT text FROM anekdot WHERE id='". rand(0, $num_rows) . "'");
$joke = mysql_fetch_assoc($result);
В $joke получаем текст анекдота.
Спустя 3 минуты, 21 секунда (11.09.2011 - 19:03) twin написал(а):
TranceIT
А если дырка в ID?
И если их очень много? Анекдотов. Каждый раз всю таблицу тянуть на сторону PHP?
А если дырка в ID?
И если их очень много? Анекдотов. Каждый раз всю таблицу тянуть на сторону PHP?
Спустя 3 минуты, 42 секунды (11.09.2011 - 19:06) TranceIT написал(а):
twin
Я лишь направил мысли новичка, писать за него всю функцию с проверками у меня желания нет.
Я лишь направил мысли новичка, писать за него всю функцию с проверками у меня желания нет.
Спустя 16 секунд (11.09.2011 - 19:07) Winston написал(а):
Если через базу то можно одним запросом
А если на файлах то еще проще
$result = mysql_query("SELECT * FROM `anekdot` ORDER BY RAND() LIMIT 1");
print_r(mysql_fetch_assoc($result));
А если на файлах то еще проще
$anekdot = file('anekdot.txt');
echo $anakdot[array_rand($anekdot)];
Спустя 11 минут, 53 секунды (11.09.2011 - 19:19) DayFun написал(а):
всем спасибо за ответы, я уже примерно знаю как это должно выглядеть.
пошел читать мануалы..
п.с. если у когото еще будут идеи, или советы пишите, благодарен за любую помощь =)
пошел читать мануалы..
п.с. если у когото еще будут идеи, или советы пишите, благодарен за любую помощь =)
Спустя 21 секунда (11.09.2011 - 19:19) dimonise написал(а):
Цитата (TranceIT @ 11.09.2011 - 15:59) |
Какие там 2 часа =) Бутылку пива выпить не успеешь =) |
это чтобы с красивостями...
Спустя 13 минут, 53 секунды (11.09.2011 - 19:33) twin написал(а):
Цитата (TranceIT @ 11.09.2011 - 16:06) |
twin Я лишь направил мысли новичка, писать за него всю функцию с проверками у меня желания нет. |
Беда в том, что ты направил его не туда. Ибо сам еще не разобрался. Я почему спросил, а не показал сразу, как правильно. Потому что хотел, чтобы ты поразмыслил и нашел свои ошибки.
Winston
ORDER BY RAND() - штука весьма накладная. Лучше действительно двумя коротенькими запросами. Только немного не так, как написал TranceIT
Спустя 59 секунд (11.09.2011 - 19:34) TranceIT написал(а):
twin
Каюсь =) Под шафэ =)
Каюсь =) Под шафэ =)
Спустя 1 час, 53 минуты, 48 секунд (11.09.2011 - 21:28) Лена написал(а):
$result = mysql_query("SELECT COUNT(*) FROM anekdot");
if(!$result) exit(mysql_error());
$num = mysql_result($result,0);
$ids = array();
for($i = 1; $i <= 10; $i++){
$rand = mt_rand(1, $num);
$ids[] = $rand;
}
$ids_str = implode(',', $ids);
$result = mysql_query ("SELECT text FROM anekdot WHERE id IN(" . $ids_str . ") LIMIT 1");
if(!$result) exit(mysql_error());
$joke = mysql_fetch_assoc($result);
//на файлах
$anekdot = file('anekdot.txt');
shuffle($anekdot);
echo $anekdot[0];
Спустя 3 часа, 38 минут, 49 секунд (12.09.2011 - 01:06) vital написал(а):
А зачем 2 запроса?
1 дергаеются все записи, полученный массив кешируется.
Потом из массива в кеше дергать случайную запись.
1 дергаеются все записи, полученный массив кешируется.
Потом из массива в кеше дергать случайную запись.
Спустя 5 часов, 55 минут, 12 секунд (12.09.2011 - 07:02) twin написал(а):
vital
Вытаскивать все записи? А если их там пара десятков мегабайт?
Лена
Почти угадала, есть более элегантное решение. Собственно это симбиоз этого решения и решения TranceIT
Вытаскивать все записи? А если их там пара десятков мегабайт?
Лена
Почти угадала, есть более элегантное решение. Собственно это симбиоз этого решения и решения TranceIT
<?php
$res = mysql_query("SELECT COUNT(*) AS `cnt` FROM anekdot");
$num = mysql_result($res, 0);
$res = mysql_query ("SELECT text FROM anekdot
WHERE id >= ". mt_rand(1, $num) . "
LIMIT 1");
$joke = mysql_fetch_assoc($res);
Спустя 2 дня, 13 часов, 4 минуты, 40 секунд (14.09.2011 - 20:06) DayFun написал(а):
я замутил так как писали выше. вот что получилось посмотрите http://anekdot.dayfun.ru/
только раньше по нажатию на айди цитаты открывалась отдельная страничка с цитатой а сейчас по нажатию на айди пишет страница не найдена.
В чём может быть причина? Поясните кто может.
Мне кажется если будет отдельная страничка для каждой цитати то это будет хорошо влиять на индексацию страниц поисковиками. Я верно рассуждаю или нет?
только раньше по нажатию на айди цитаты открывалась отдельная страничка с цитатой а сейчас по нажатию на айди пишет страница не найдена.
В чём может быть причина? Поясните кто может.
Мне кажется если будет отдельная страничка для каждой цитати то это будет хорошо влиять на индексацию страниц поисковиками. Я верно рассуждаю или нет?
Спустя 2 минуты, 31 секунда (14.09.2011 - 20:09) Winston написал(а):
mod_rewrite не работает
Спустя 5 минут, 27 секунд (14.09.2011 - 20:14) DayFun написал(а):
о спасио большое! ну это самый лучший форум который я встречал, всегда помогают дельным советом! я поставил .htaccess получилось, правда немного криво работает мне кажется, но щас разберемся :Р
Спустя 43 минуты, 27 секунд (14.09.2011 - 20:58) twin написал(а):
Отключи магические кавычки и сделай шрифт помельче. Трудно же читать... А анеки прикольные есть

Спустя 9 минут, 4 секунды (14.09.2011 - 21:07) DayFun написал(а):
магические кавычки - это что имееш ввиду? Шрифт реально большой? а то у меня монитор 22" мне кажется норм..))
Спустя 4 минуты, 9 секунд (14.09.2011 - 21:11) Winston написал(а):
Пропиши это в .htaccess
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
Спустя 3 минуты, 28 секунд (14.09.2011 - 21:14) twin написал(а):
Спустя 4 минуты, 14 секунд (14.09.2011 - 21:19) DayFun написал(а):
сделал как написал Winston
Спустя 5 минут, 34 секунды (14.09.2011 - 21:24) Evilsoul написал(а):
как вариант
twin
а вообще хотел спросить о mt_rand ибо не нашел нормального описания а в английском не оч. селен...
<?php
$res = mysql_query("SELECT COUNT(*) AS `cnt` FROM anekdot");
$num = mysql_result($res, 0);
$res = mysql_query ("SELECT text FROM anekdot LIMIT ".rand(0, $num).", 1");
$joke = mysql_fetch_assoc($res);
twin
а вообще хотел спросить о mt_rand ибо не нашел нормального описания а в английском не оч. селен...
Спустя 4 минуты, 48 секунд (14.09.2011 - 21:29) DayFun написал(а):
twin , сделал шрифт помельче)
Как можно убрать масово "\" с анеков? а то перекапывать всю базу в ~2.5к анекдов ручками неохота..
А еще такой вопрос как сделали на http://fucking-great-advice.ru/ при нажатии ктрл+вправо выдаёт следующий анекдот. Хотелось бы такое по ентеру или пробелу. Как такая функция называется и как осуществить мб кто знает?
Как можно убрать масово "\" с анеков? а то перекапывать всю базу в ~2.5к анекдов ручками неохота..
А еще такой вопрос как сделали на http://fucking-great-advice.ru/ при нажатии ктрл+вправо выдаёт следующий анекдот. Хотелось бы такое по ентеру или пробелу. Как такая функция называется и как осуществить мб кто знает?
Спустя 10 минут, 16 секунд (14.09.2011 - 21:39) Evilsoul написал(а):
stripslashes()
JS событие на клавишу (код клавиши).
Спустя 21 минута, 18 секунд (14.09.2011 - 22:01) DayFun написал(а):
$query = mysql_query("SELECT * FROM `quotes` WHERE `status` = 'checked' ORDER BY RAND() LIMIT 0,1");
echo "<table width=850>";
while($r = mysql_fetch_array($query))
вот урывок кода, как этот stripslashes() поставить? я нарыл несколько мануалов но там всё по инглишу, ничерта не понятно как работает
$query = mysql_query("SELECT * FROM `quotes` WHERE `status` = 'checked' ORDER BY RAND() LIMIT 0,1");
stripslashes($query)
echo "<table width=850>";
while($r = mysql_fetch_array($query))
так не работает

Спустя 10 минут, 4 секунды (14.09.2011 - 22:11) twin написал(а):
Вот это сунь в SQL пыхадмина и не парься.
UPDATE anekdot SET `text` = REPLACE(`text`, '\\\"', '"')
Спустя 3 минуты, 55 секунд (14.09.2011 - 22:15) Evilsoul написал(а):
DayFun
в цикле, перед выводом на экран
в цикле, перед выводом на экран
while($r = mysql_fetch_array($query))
{
print_r(stripslashes($r)) ;
}
Спустя 1 минута, 49 секунд (14.09.2011 - 22:16) twin написал(а):
Один раз нужно выполнить мой запросик и все экраны исчезеут из базы.
Спустя 3 минуты (14.09.2011 - 22:19) Evilsoul написал(а):
а если у него анекдоты будут продолжать записываться в базу со слешами? ему нужно у корня все исправить, затем твой запросик запустить.
Спустя 8 минут, 5 секунд (14.09.2011 - 22:27) inpost написал(а):
Evilsoul
Ну так а ты показываешь при выводе фикс, а надо при вводе делать фикс
Ну так а ты показываешь при выводе фикс, а надо при вводе делать фикс

Спустя 1 час, 45 минут, 32 секунды (15.09.2011 - 00:13) caballero написал(а):
$res = mysql_query ("SELECT text FROM anekdot LIMIT ". mt_rand(1, $num .",1");