как сделать цитату дня используя php и mysql по порядку по id - PullRequest
1 голос
/ 06 июля 2011

Я пытаюсь соединить базу данных MySQL и получить данные Мне нужно, чтобы она получала только (Данные) по порядку по идентификатору (ежедневно) и разделяла обе данные и вызывала их двумя разными переменными, база данных выглядит примерно так:1001 *

------------------------------
| ID |   Data  |  Data2
------------------------------
| 1  |  tea    |   hot
| 2  |  milk   |   hot
| 3  | pepsi   |  cold

и вывод будет только одна строка (одна информация)

Я не делаю это, как указано выше :) это просто для пояснения .... и как лучше сопоставить и тип дляогромные данные в UTF-8?

Редактировать:
Можете ли вы заставить его вернуть 5 строк вместо 1?по идентификатору?например, для первого дня (1-2-3-4-5) ID и для второго дня (6-7-8-9-10) и т. д.?

Ответы [ 2 ]

1 голос
/ 06 июля 2011
    quotes
    ----------------------------------
    | id | data        | data2
    ----------------------------------
    | 1  | first quote | translated quote
    | 2  | second...   | bla bla

И затем вы выбираете его следующим образом:

   $firstday="2011-06-06";
    $getquote = mysql_query("SELECT * FROM quotes WHERE id=(DATEDIFF(CURDATE()+1, '$firstday'))");
$quote = mysql_fetch_object($getquote);
echo $quote->data . $quote->data2;

РЕДАКТИРОВАТЬ !: Я удалил дату, поэтому идентификатор, возвращаемый из разницы дат, ПРЯМО в ГДЕ.

Для этого нужно вычислить разницу между первым днем ​​и текущей датой .Так что каждый день эта дата будет на 1 больше.DATEDIFF(CURDATE()+1, '$firstday') as datediff можно интерпретировать как

datediff = differenceBetween(Currentday +1 and firstDay)
  • Вчера было 2011-07-06, поэтому datediff = 2011-07-07 (there is +1!) - 2011-07-06, что 1
  • сегодня, это 2011-07-08 - 2011-07-06 что 2
  • завтра 2011-07-09 - 2011-07-06 что 3
  • послезавтра 2011-07-10 - 2011-07-06 что 4
  • через месяц будет 2011-08-08 - 2011-07-06, что составляет 33

, поэтому дата увеличивается с каждым днем ​​на 1

quotes
-------------------------
|id| data
-------------------------
|1| quote          day 1 (because date difference from start == 1)
|2| quote 2        day 2 (datediff == 2)
|3| quote 3        day 3 (datediff == 3)
|4| quote 4        day 4
.....

Или в скором времени: каждый день будет отличаться цитатой, начиная с ID 1. Вперед.

Я не могу объяснить больше, чем это ..


РЕДАКТИРОВАНИЕ # 2: 5 кавычек в день

$offset = date_diff(new DateTime('now'), new DateTime('2011-08-29'))->format('%d');
$getquote = "SELECT * FROM quotes LIMIT {$offset},5";

второе редактирование благодаря ajreal ( Синтаксическая ошибка SQL LIMIT )


РЕДАКТИРОВАТЬ # 3: 5 кавычек в день, изменяемых по переменной ..

опция 1:

$choose=0; //statically defined, only first of that day will pop out

опция 2:

$choose = mysql_real_escape_string($_GET["qid"]); //which one will be defined in url.. (watch out, people can figure it out and browse through all quotes

опция3:

$choose = rand(0,4); //will choose it randomly from those 5 daily quotes

Итак, выберите один из тех вариантов, которые вам нравятся, и добавьте его перед этим:

$offset = 5*date_diff(new DateTime('now'), new DateTime('2011-08-29'))->format('%d') + $choose;
$getquote = mysql_query("SELECT * FROM quotes WHERE id = '$offset'");
$quote = mysql_fetch_object($getquote);
echo $quote->data . $quote->data2;
0 голосов
/ 06 июля 2011

Если вы хотите иметь фиксированную квоту в течение всего дня, просто сделайте, чтобы первый клиент дня выполнил RAND () на столе и выбрал случайную квоту.

Затем отметьте эту цитату как цитату для текущего дня и подайте ее всем остальным пользователям.

Повтор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...