Merhaba Arkadaşlar Bir haber sitem var ve haber detayları sayfamda önceki sonraki haber diye linklerim var id < $id mantığı ile önceki ve sonraki haberin linkini yazdırabiliyorum bununla ilgili bir sorunum yok ancak ,
şimdi İD'e göre değilde tarihe göre sıralamak istiyorum tarih tablom datetime şeklinde haberler.tarih olarak geçiyor ama aynı mantıkla bunu listeleyemedim.
bunu nasıl önceki tarihli haber ve sonraki tarihli haber şeklinde listeleyebilirim.?
Önceki ve Sonraki Tarih
3
●335
- 10-06-2016, 15:10:29
select id,sbjct from news where time>$haberTime order by time asc limit 1 # bu haberin tarihinden büyük olanları artan tarihe göre listele 1 tane al select id,sbjct from news where time<$haberTime order by time desc limit 1 #bu da tersi
- 10-06-2016, 17:44:08Önce önceki ve sonraki günleri bulman lazım. Bunu da bulunduğun günü alıp datetime sınıfına sokarak alabilirsin. Şöyle bir fonksiyon hazırladım sana.
function findDate($date, $type){ $gettime = new \DateTime($date); $gettime->setTimezone(new \DateTimeZone('Europe/Istanbul')); if($type == 'prev'): return $gettime->modify("previous day")->format("Y-m-d"); elseif($type == 'next'): return $gettime->modify("next day")->format("Y-m-d"); else: return 'parameter error'; endif; } echo findDate('2016-06-10', 'next'); echo findDate('2016-06-10', 'prev');Önceki ve sonraki tarih bulma işi böyle. Gelelim şimdi kayıtları nasıl bulacağına.
SQL Sorgunu da şöyle yazacaksın.
SELECT * FROM haberler WHERE DATE(eklenmetarihi) = {$tarih}Yani sql sorgunu yazarken tarihin türünü belirtip benim sana vermiş olduğum fonksiyondan çıkan tarih sonucunu sql sorguna dahil edersen istediğin kayıtları alırsın.