Ben günlük olarak sitemde bir teklif görüntülemek istiyorum. 24 saat sonra değiştirmek gerekir. tırnak MySQL veritabanında saklanır. nasıl PHP ile bunu yapmak
Teşekkürler
Mathew
Nasıl aşağıdaki kullanarak çizgisinde bir şey hakkında:
quotes
------
quote_id
..
.
quote_rota
----------
quote_rota_id
quote_id
date_shown
Daha sonra görüntülenir edilmiştir son 7 tırnak biri değil rastgele bir teklifi almak için aşağıdaki gibi bir sorgu kullanabilirsiniz:
SELECT * FROM quotes WHERE id=(
SELECT FLOOR(MIN(quote_id)+(RAND()*MAX(quote_id))
FROM quotes
) AND quote_id NOT IN (
SELECT quote_id FROM quote_rota ORDER BY date_shown DESC LIMIT 7
) LIMIT 1;
// process and retrieve quote_id then store in quote_rota
Bir CRON iş / zamanlanmış görev tarafından doldurulan bir dosyada sonucunu saklamak, o zaman bu sürece istediğiniz gibi kalıcı olabilir (örneğin 24 saat, 7 gün, 1 saat, vb)
Alternatif olarak, bu "geçerli" alıntı (örn. aktif) ve daha sonra kullanmak olduğunu belirtmek için alıntı tabloya bir sütun eklemek olabilir:
SELECT quote_id FROM quotes WHERE id=(
SELECT FLOOR(MIN(quote_id)+(RAND()*MAX(quote_id))
FROM quotes
) AND quote_id NOT IN (
SELECT quote_id FROM quote_rota ORDER BY date_shown DESC LIMIT 7
) LIMIT 1;
// process and retrieve quote_id then update "current" flag
Gereken sıklıkta bu görevi planlamak ve daha sonra teklifi almak için aşağıdaki gibi bir şey kullanabilirsiniz:
SELECT * FROM quotes WHERE active = 1
Kolay yolu bir alıntı mySQL tablodaki bir sütun olarak sitede gösterilen olması gerekiyordu gün depolamak ve sonra gibi belirli teklif için bir sorgu yapmak olacaktır
$query = "SELECT * FROM quotes WHERE date = CURDATE();";
Eğer veritabanında tarihini saklamak yoksa, daha zor ve karmaşık hale gelir - rastgele girişlerini görüntülemek ancak bunu aynı alıntı kısa arkaya iki kez gelip vermediğinde biri gördü hangi takip etmek olurdu. Tüm yapılabilir, ama belki daha karmaşık gereğinden fazla.
Eğer kurulum için her 24 saat çalışan sunucu ile bir cron sekmeyi gerekir. Ancak, onu kurma var ne sunucu bağlıdır. http://en.wikipedia.org/wiki/Cron cron'nun hakkında daha fazla bilgi için. Eğer cPanel kullanarak konum IF, www.upstartblogger.com / how-to-create-a-cron işi-in-cpanel size yardımcı olabilir.
Eğer herhangi bir önbellek çözümü kullanmak ve her teklif için gelecekteki kullanım tarihini eklemek istemiyorum istemiyorsanız, gibi bir şey yapabilirsiniz:
SELECT id, quote FROM quotes WHERE date_used = NOW();
Bu boş dönerse, gibi bir şey yapın:
$count = SELECT COUNT(*) FROM quotes WHERE date_used = '0000-00-00'
Kullanılmayan tırnak sayıda almak, daha sonra rastgele bir alıntı seçin:
$rand = rand (0, $count);
$quote = SELECT id, quote FROM quotes WHERE date_used = '0000-00-00' LIMIT $rand, 1
UPDATE quotes SET date_used = NOW() WHERE id = $quote['id']