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

Надеюсь проблемку изложил как можно понятнее.
Заранее благодарен за любую помощь в деле smile.gif



Спустя 2 минуты, 22 секунды (11.09.2011 - 18:47) DayFun написал(а):
ааа и еще забыл показать как я задумал это сделать!
вот мой сайт http://dayfun.ru/ а страница где будут рандомно выводится цитаты тут: http://anekdot.dayfun.ru/ - там уже стоит найденый на вовеб скрипт, но уж больно убогий)

Спустя 3 минуты, 30 секунд (11.09.2011 - 18:51) dimonise написал(а):
ничего сложного работы на 2 часа.
просто база с текстом. и через rand() вывод организован

Спустя 5 минут, 42 секунды (11.09.2011 - 18:56) DayFun написал(а):
а можете тыкнуть носом в готовый код? я ведь пишув теме для новичков не просто так) с нуля написать не получается пока что, но учусь)
а без базы такое получится? у меня сейчас стоит вот тут http://anekdot.dayfun.ru/ скрипт на файлах, без базы.

Спустя 2 минуты, 58 секунд (11.09.2011 - 18:59) TranceIT написал(а):
Какие там 2 часа =) Бутылку пива выпить не успеешь =)

// Подключаемся к базе данных
// И узнаем количество анекдотов в таблице

$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?

Спустя 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 дергаеются все записи, полученный массив кешируется.
Потом из массива в кеше дергать случайную запись.

Спустя 5 часов, 55 минут, 12 секунд (12.09.2011 - 07:02) twin написал(а):
vital
Вытаскивать все записи? А если их там пара десятков мегабайт?

Лена
Почти угадала, есть более элегантное решение. Собственно это симбиоз этого решения и решения 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 написал(а):
Отключи магические кавычки и сделай шрифт помельче. Трудно же читать... А анеки прикольные есть smile.gif

Спустя 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 написал(а):
как вариант
<?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/ при нажатии ктрл+вправо выдаёт следующий анекдот. Хотелось бы такое по ентеру или пробелу. Как такая функция называется и как осуществить мб кто знает?

Спустя 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))

так не работает user posted image

Спустя 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
Ну так а ты показываешь при выводе фикс, а надо при вводе делать фикс smile.gif

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.