sql >> Database >  >> Database Tools >> phpMyAdmin

hoe maak je een citaat van de dag met behulp van php en mysql in volgorde van id

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

En dan selecteer je het als volgt:

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

BEWERKEN!!:Ik heb datediff verwijderd, dus de ID die wordt geretourneerd van het datumverschil staat DIRECT in WHERE.

Wat dit doet is het verschil berekenen tussen de eerste dag en de huidige datum . Dus elke dag zal die datediff 1 groter zijn.DATEDIFF(CURDATE()+1, '$firstday') as datediff kan worden geïnterpreteerd als

datediff = differenceBetween(Currentday +1 and firstDay)
  • Gisteren was 2011-07-06, daarom datediff = 2011-07-07 (there is +1!) - 2011-07-06 dat is 1
  • vandaag is het 2011-07-08 - 2011-07-06 dat is 2
  • morgen 2011-07-09 - 2011-07-06 dat is 3
  • overmorgen 2011-07-10 - 2011-07-06 dat is 4
  • over een maand is het 2011-08-08 - 2011-07-06 dat is 33

dus datediff wordt elke dag 1 groter

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
.....

Of kort:elke dag zal een andere quote zijn, beginnend met ID 1 vooruit.

Ik kan niet meer uitleggen dan dit..

BEWERK #2:5 citaten per dag

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

tweede bewerking dankzij ajreal (SQL LIMIT syntaxisfout )

BEWERK #3:5 citaten per dag, veranderlijk per variabele..

optie 1:

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

optie 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

optie 3:

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

Dus kies een van de opties die je leuk vindt, en voeg het eerst toe:

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


  1. Stel een trigger op tafel in om het aantal INSERT, DELETE, UPDATE-bewerkingen te beperken

  2. Kan database niet importeren/implementeren naar SQL Azure:de opgegeven servicedoelstelling (zakelijk/web) is ongeldig.

  3. alles samenvouwen' of overzicht omschakelen in SQL Server Management Studio 2008

  4. Automatische verhoging met 1 in MySQL met clearDB