Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Bu Ay'ın Kayıtlarını Gösterme

iyi gunler veritabanımdaki kayuıtlı haberlerin bu ay içerisinde yazılanları nasıl ekrana bastırabilirim ??

veritabanı yapım

baslik
icerik
gun
ay
yil

şeklinde

şöle bi yapı düşündüm ama olmuyor

$tarih = array(date('d'),date('m'),date('Y'),date('d')+7); // 3 numaralı dizi deyişkeninde  bugüne 7 eklettim 1hafta 7 gün olduğu için :) 
if ($tarih[3] > 31 ) { $tarih[1] =date('m')+1; } // burdada eğer 3 numaralı deyişken 31den büyükse snraki aya geç ama 30 aralık diyelim son eklediğimiz haber tarihte 30 aralık burda 37 30dan büyük olduğu için ocak ayına geçer ocak ayına kayıtlı haber olmadığı içinde boş gösterir :S burda +1 yerine -1 desek bu sefer geçen ayın haberlerini gösterir ..
$sorgu = mysql_query("SELECT * FROM haberler WHERE  $tarih[3] > gun >  $tarih[0] and ay='$tarih[1]' and yil='$tarih[2]' ORDER BY hit DESC LIMIT $limit");



Bunu nasıl halledeceğim??
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • reelmg adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    35 cevap - 14 soru
    Selam; sanırım bu işini görür;

    $buay=date('m'); // iki haneli veya tek haneli kısa uzun ad vs. VT de nasılsa öyle çekersin bunları
    $buay=date('Y'); 
    
    $sorgu = mysql_query("SELECT * FROM haberler WHERE  ay='$buay' AND  yil='$buyil'");
    // bu yıla ve bu aya ait tüm kayıtlar gelir
    
    
    • sharq adlı üyenin fotoğrafı sharq
      Bu ayın deil bu haftanın kayıtlarını gösterme olacak :S
      10 yıl önce yazılmış

Cevaplar

  • sharq adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    115 cevap - 141 soru
    Bu ayın deil bu haftanın kayıtlarını gösterme olacak :S
    • reelmg adlı üyenin fotoğrafı reelmg
      ilk soruda ay demişsin :)
      hafta istediğine göre artık ayın önemi yok değilmi sonuçta haftanın ilk üç günü 29-30-31 ocak ken son 4 günü şubata gelebilir ve VT yapını değiştirmen mümkünmü bir date tipinde alan ile daha gun ay yıldan çok daha iyi sonuçlar alabilirsin bunları açıklarsan yardımcı olmaya çalışırım
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      ynlş yazmışım bşlığı :S

      şimdi ypmak istediğim şey bu hafta keydedilen haberleri ekrana bastırmak

      yani bugün ayın 16'sı 16'sından 7 gün öncesi 16-15-14-13-12-11.05.2012 nin haberlerini
      ama bugün ayın 4'ü olsaydı
      4-3-2-1-31-30-29.05-06.2012 burda program patlıyor işte yani bi önceki tarihe geçse o 3 günü göstercek falan ypmak istediğimi anlata bildim galiba??
      10 yıl önce yazılmış
    • reelmg adlı üyenin fotoğrafı reelmg
      gun ay yil alanlarını kaldırıp date tipinde haber_tarihi isimli tek bir alan oluşturma imkanın varmı daha işin başında isen hemen boyle değiştir. Böylece mktime ile bir kaç satırda halledilebir üstelik gelecekteki tüm sorgularında da işe yarar. Değiştiremeyecek durumdaysan ona göre birşeyler düşünürüz
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      sıkıntı olmaz veritabanını ve admin panelini deyiştiririm gun-ay-yil kalır bide üstüne ek olarak dediğini ekleriz haberi çeknce tarihini gün-ay-yildan weirirm bu tarz bu hafta bugün dün buay gibi işlmleride dediğingibi yaparız da şimdi ne deyişiklikler yapacağım veritabanında?? ve tarihi admin panelinden eklerken nasıl ekleyeceğim?
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      ??
      10 yıl önce yazılmış
    • reelmg adlı üyenin fotoğrafı reelmg
      VT de haber_tarihi diye bir alan aç tipini DATE yap

      adminden haberi eklerken bu alana veriyi YYYY-AA-GG şeklinde ekle


      sorgu yaparkende;

      $baslangic_gunu  = date("Y-m-d", mktime (0,0,0,date("m"),date("d")-7,date("Y"))); // buradaki mktime komutunda güne verdiğimiz -7 değeri ile bu günkü tarihten 7 gün geriye gidiyoruz.
      
      $sorgu = mysql_query("SELECT * FROM haberler WHERE  haber_tarihi>'$baslangic_gunu'");
      


      kolay gelsin
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      peki bunda dün bu hafta ve bu ay'ı nasıl yapacağız?
      10 yıl önce yazılmış
  • Kesali adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    208 cevap - 2 soru
    Database yapın çok karışık gün ay yılı ayrı tutmak yerine sadece timestamp tutsan hem gün ay yıl karşılaştırması çok kolay olacaktı hemde bu kadar sütun işgal etmezdin. Aklıma bir yöntem geliyor ama denemeden emin olamayacam. Öncelikle yıl ay gün ile bir düzene sokabilirsin cancat_ws('-',yil,ay,gun) sonra concat(' 00:00:00') en sonunda da unix_timestamp() ile şu anki timesmapı bulursun bundanda bir hafta öncesini çıkartırsan gerekli kayıtlar gelebilir.
    SELECT haberler.*,
    UNIX_TIMESTAMP(CONCAT(CONCAT_WS('-',haberler.yıl,haberler.ay,haberler.gun),' 00:00:00')) AS time_stamp
    FROM haberler WhERE time_stamp > time_stamp-(60*60*24*7)
    

    Eğer özellikle 1 haftalık kayıtlar lazımsa between kullanabilirsin
    • sharq adlı üyenin fotoğrafı sharq
      gun ay yıl'ı kaldırdım habertarihi ekledim mktime ile yptrıyorum artık yani bu haftalık ı düzenledim ama bu ay ı nasıl çekebilirim?
      10 yıl önce yazılmış
    • Kesali adlı üyenin fotoğrafı Kesali
      :D Sql i yazarken elli yere cevap verdiğim için cevapları göremedim bile.
      Yukardaki arkadaş doru cevabı vermiş -7 yerine -30 yap o kadar.
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      :) ginede saol cevabın için başka arkadaşlaın da gözüne çarpar veritabanını deiştiremicekler için :)
      ayda mı 30 ypcam yoksa haftalıktamı
      10 yıl önce yazılmış
    • reelmg adlı üyenin fotoğrafı reelmg
      mktime komutunu kullanırken benim verdiğim cevapta -7 değeri olan yer bu günden ne kadar geri gitmek istediğini belirttiğin nokta eğer tam bir ay geri gitmek istiyorsan -7 değerini oradan silip aydan hemen sonra -1 yazacaksın aynı işlem yıl içinde geçerli örneğin

      15 gün geri :
      $baslangic_gunu = date("Y-m-d", mktime (0,0,0,date("m"),date("d")-15,date("Y")));

      3 ay geri :
      $baslangic_gunu = date("Y-m-d", mktime (0,0,0,date("m")-3,date("d"),date("Y")));

      2 yıl geri :
      $baslangic_gunu = date("Y-m-d", mktime (0,0,0,date("m"),date("d"),date("Y")-2));
      10 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      yardımların için teşekkr ederim şimdilik bi sorun gözükmüyor :)
      10 yıl önce yazılmış
    • Kesali adlı üyenin fotoğrafı Kesali
      Açıklamış arkadaş. date yada UNIX_TIMESTAMP kullan en performanslı olanı. Benim verdiğim örnek senin database ine göre yapılmıştı performansı daha kötü olacaktır ayrıca mysqle fazladan yük getirecekti.
      Bir hatam olmuş WHERE yerine HAVING olması lazım sorgumda. Birkaç yerde daha düzeltme yaptım. Eğer böyle birşeye ihtiyacı olan varsa örnek sql kodu.
      SELECT haberler.*,
      UNIX_TIMESTAMP(CONCAT(CONCAT_WS('-',haberler.yil,haberler.ay,haberler.gun),' 00:00:00')) AS time_stamp
      FROM haberler HAVING time_stamp > UNIX_TIMESTAMP()-(60*60*24*7)
      
      10 yıl önce yazılmış