Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Случайная цитата под названием сайта, вот к чему пришел, но чето точно пропустил
exotica  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Code noobing... :))
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 732
Пользователь №: 36599
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 22

Не курю:
3 года, 9 месяцев, 10 дней


Думал над цитатами и пришел к такому варианту что их может быть много и вроде бы и все охото видеть. Чтож дурная голова рукам покоя не дает и собственно накостылял такой вариант.
<?php
error_reporting(E_ALL);

$savedquotes = array(
0 => 'quote #1',
1 => 'quote #2',
2 => 'quote #3',
3 => 'quote #4',
4 => 'quote #5',
);

$quotescount = count($savedquotes) - 1;
$quotenumber = rand(0, $quotescount);


echo htmlspecialchars($savedquotes[$quotenumber]);
?>

Все здорово, все работает. Но каждый раз лезть в скрипт чтоб добавить или удалить цитату как то не круто, поэтому возникает вопрос откуда лучше дергать цитаты из .txt файла или из БД. Вариант с БД мне лично нравится больше т.к. мне привычней работать с ней чем с файлами. Но опять же это лишний запрос к БД при каждом(!) переходе или обновлении страницы на сайте. Но начну я все же с него, чисто интереса ради:
<?php
error_reporting(E_ALL);

$link = mysqli_connect(
'localhost',
'root',
'',
'storage');
if (!$link) {
printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error());
exit;
}

$SqlQuery = 'SELECT `id`,`text` FROM `quotes`';
$QueryResult = mysqli_query($link, $SqlQuery);

$quotes = array();
while($ResultArray = mysqli_fetch_assoc($QueryResult))
{
$quotes[] = $ResultArray['text'];
}

$quotescount = count($quotes) - 1;
$quotenumber = rand(0, $quotescount);


echo htmlspecialchars($quotes[$quotenumber]);
?>

P/S: Тут важно заметить что в этом варианте исполнения будет чертовски просто редактировать цитаты из админки, да и вообще производить с ними разные действия. (ну возможно для меня проще, так как не храню ничего в файлах кроме статичных данных типа мета)

Ладно продолжим. Хранение в .txt файле. Кроме как использовать serialize() я ничего не придумал и запихнул в .txt файл ранее запрошенный из базы массив:
  $file = 'quotes.txt';
$content = file_get_contents($file);
$content .= serialize($quotes);
file_put_contents($file, $content);

ну а дальше дело за малым, собственно достать посчитать выбрать случайную цитату и вывести:
<?php
error_reporting(E_ALL);

$file = 'quotes.txt';
$content = file_get_contents($file);
$quotes = unserialize($content);

$quotescount = count($quotes) - 1;
$quotenumber = rand(0, $quotescount);

echo htmlspecialchars($quotes[$quotenumber]);
?>


Ну вот собственно и все что мне пришло в голову в пол первого ночи по местному. Все три варианта мне не нравятся, поэтому решил спросить что я еще упустил. Как получить вариант который можно легко редактировать, но и не нагружать сервер лишними действами.


--------------------
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Получать цитаты на клиенте со стороннего сервиса.
Например, http://forismatic.com/ru/api/ .
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
exotica  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Code noobing... :))
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 732
Пользователь №: 36599
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 22

Не курю:
3 года, 9 месяцев, 10 дней


поправлюсь. стороннее api меня не интересует. Нужен набор цитат хранящихся у меня


--------------------
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Ну в Google Spreadsheets храни. Они умееют json отдавать. Разбирай на клиенте.

А вообще целый одни запрос(!) лишний. Ты на бесплатном тарифе у хостингера хостишься?
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 18 дней
Карма: 167




Цитата (exotica @ 27.04.2016 - 21:37)
$SqlQuery = 'SELECT `id`,`text` FROM `quotes`';

за такие запросы надо ноги выдёргивать...


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4258
Пользователь №: 29002
На форуме: 5 лет, 4 месяца, 7 дней
Карма: 147




Цитата (Valick @ 28.04.2016 - 00:00)
Цитата (exotica @ 27.04.2016 - 21:37)
$SqlQuery = 'SELECT `id`,`text` FROM `quotes`';

за такие запросы надо ноги выдёргивать...

мне кажется это безрассудным, не зная наверняка, какой частью туловища писался запрос.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 18 дней
Карма: 167




redreem, я образно говоря. Расчёт на то, что ТС поймёт, что бояться лишнего запроса и не бояться делать средствами РНР работу СУРБД - это абсурд.
exotica, я хочу что бы у тебя крепко засела фраза в голове, когда видишь запрос без WHERE первое, что ты должен себя спросить "а не дурак ли я?"


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
exotica  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Code noobing... :))
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 732
Пользователь №: 36599
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 22

Не курю:
3 года, 9 месяцев, 10 дней


Valick
Возникает вопрос where что? Если нужно вернуть все цитаты в таблице и в ней по примеру всего 2 поля . объясни пожалуйста, а вырывание частей тела на потом оставим smile.gif


--------------------
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
exotica  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Code noobing... :))
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 732
Пользователь №: 36599
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 22

Не курю:
3 года, 9 месяцев, 10 дней


Было бы там поле public допустим со значениями 0 и 1 соответственно. Но блин его нету же.


--------------------
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









exotica, выбирая всю таблицу из которой тебе нужна только одна случайная цитата - это трата оперативной памяти впустую. Если в таблице будет много данных, сервер может исчерпать доступный лимит памяти.

Возвращай из базы сразу одну случайную запись http://stackoverflow.com/a/19419

Преждевременная оптимизация - зло. Но если тебя так сильно беспокоит доп. запрос в базу. То можешь выбирать сразу 100-500 случайных цитат из базы и класть их в кеш с жизнью 6-12 часов.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
exotica  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Code noobing... :))
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 732
Пользователь №: 36599
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 22

Не курю:
3 года, 9 месяцев, 10 дней


Цитата
Возвращай из базы сразу одну случайную запись

воот оно где. Спасибо


--------------------
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


order by rand() limit 1


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса