phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

como fazer cotação do dia usando php e mysql em ordem por id

    quotes
    ----------------------------------
    | id | data        | data2
    ----------------------------------
    | 1  | first quote | translated quote
    | 2  | second...   | bla bla

E então você seleciona assim:
   $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;

EDITAR!!:Eu eliminei o datediff, então o ID retornado da diferença de data está DIRETAMENTE em WHERE.

O que isso faz é calcular a diferença entre o primeiro dia e a data atual . Assim, cada dia que datediff será 1 maior.DATEDIFF(CURDATE()+1, '$firstday') as datediff pode ser interpretado como
datediff = differenceBetween(Currentday +1 and firstDay)
  • Ontem foi 2011-07-06, portanto datediff = 2011-07-07 (there is +1!) - 2011-07-06 que é 1
  • hoje é 2011-07-08 - 2011-07-06 que é 2
  • amanhã 2011-07-09 - 2011-07-06 que é 3
  • depois de amanhã 2011-07-10 - 2011-07-06 que é 4
  • em um mês será 2011-08-08 - 2011-07-06 que é 33

então, datediff é cada dia maior em 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
.....

Ou em breve:cada dia será uma cotação diferente, começando com o ID 1 em diante.


Eu não posso explicar mais do que isso..

EDIT #2:5 citações por dia
$offset = date_diff(new DateTime('now'), new DateTime('2011-08-29'))->format('%d');
$getquote = "SELECT * FROM quotes LIMIT {$offset},5";

segunda edição graças a ajreal (Erro de sintaxe SQL LIMIT )

EDIT #3:5 cotações por dia, alteráveis ​​por variável.

Opção 1:
$choose=0; //statically defined, only first of that day will pop out

opção 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

opção 3:
$choose = rand(0,4); //will choose it randomly from those 5 daily quotes

Portanto, escolha uma dessas opções que você gosta e adicione-a antes disso:
$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;