• 12-03-2010, 19:56:56
    #1
    Merhaba arkadaşlar, şu if-else deki hatayı bulamadım...

    	 <?php if ($bitis_suresi > date("d")-15){
    							echo "Evet"; 
    								}
    							else {
    							echo "Hayir";
    							
    							break;
    							}
    							
    							
    						 ?>
    Veritabanından çektiğim, $bitis_suresi tarihi, bugünün tarihinden 15 gün fazlaysa Evet yazsın, değilse Hayır....

    Ne yaparsam yapayım Evet yazıyor....

    $bitis_suresi ; ekrana basınca çıkan sonuç : 2011-02-2

    (yada bugünün tarihi ile vt'den çektiğim tarih arasında 0-15 gün varsa, bunu kodlara nasıl dökebilirim?)
  • 12-03-2010, 20:29:14
    #2
    <?php 
    
    $bitis_suresi = "2010-02-1";
    
    $tarih = date("d")-15;
    
    $deneme = explode("-",$bitis_suresi);
    
    if ($deneme[2] > $tarih){ 
    echo "Evet";  
    } 
    else { 
    echo "Hayir"; 
                                
    } 
                                                          
    ?>

    Kendine göre modifiye et
  • 12-03-2010, 20:44:20
    #3
    Teşekkürler Aronfabia

    Fakat yine tüm satırlarda Evet yazıyor... :S
  • 12-03-2010, 20:51:30
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım daha önce buna benzer bayağı konu açıldı sanırım. Tarih alanı olarak int(10) bir alan açıp mktime() ile kaydedersen, istediğin şekle çevirebilirsin. Soruna gelince:

    <?php
    $bitis = "2011-02-2"; //veritabanından gelen
    $bitist  =explode('-',$bitis); //gün, ay, yıl olarak bölelim
    
    $ilk = mktime(0, 0, 0, $bitist[1], $bitist[2],$bitist[0]); //böldüğümüz tarih
    $son = mktime(0, 0, 0, date("m"), date("d")+15, date("Y")); //hesaplanacak tarih
    
    if($ilk > $son){
      echo 'Evet';
    }else{
     echo 'Hayır';
    }
    ?>
  • 12-03-2010, 21:04:41
    #5
    @Metadige

    Senin verdiğin kodlarıda denedim, sql'de int(10) yaptım alanı, tarihlerin sadece yılını gösterdi, ayrıca şuan hepsi hayır yazıyor... küçüktür yapınca evet yazıyor... Sadece birtanesinin yazması lazım... Çünkü sql'e bu koşula uyan bir girdi ekledim...

    Örneğin:
    Girdinin Eklenen Tarihi :12-03-2010 (ekrana basınca böyle çıkıyor)
    Girdinin Son Tarihi : 2010-02-27
    Bugünün Tarihi : 2010-02-12

    -resim ekledim- Not: en alttakinin bitiş süresi bugün + 15, sadece en alttakinde Evet yazması lazım...

  • 12-03-2010, 21:21:55
    #6
    lucky13boy adlı üyeden alıntı: mesajı görüntüle
    @Metadige

    Senin verdiğin kodlarıda denedim, sql'de int(10) yaptım alanı, tarihlerin sadece yılını gösterdi, ayrıca şuan hepsi hayır yazıyor... küçüktür yapınca evet yazıyor... Sadece birtanesinin yazması lazım... Çünkü sql'e bu koşula uyan bir girdi ekledim...

    Örneğin:
    Girdinin Eklenen Tarihi :12-03-2010 (ekrana basınca böyle çıkıyor)
    Girdinin Son Tarihi : 2010-02-27
    Bugünün Tarihi : 2010-02-12
    Arkadaşım yanlışlık yapma, benim verdiğim kod senin önceki tarih alanına göre idi,
    $bitis = "2011-02-2"; //veritabanından gelen

    diye eklemiştim. Yani herhangi bir sorun yok orada. İstersen verdiğim örnekte $bitis değişkenini arttırıp azaltarak görebilirsin doğru sonuç verdiğini.


    Eğer int(10) yapıp mktime olarak eklediysen veritabanına, kodları da ona göre değişmen lazım, o şekilde veritabanından gelen alanı bulmak için date('d-m-Y', $gelen_tarih) gibi kullanmalısın örneğin. Bir önceki koda göre uyarlamak için de

    <?php
    $ilk = 'veritabanından gelen tarih';
    $son = mktime(0, 0, 0, date("m"), date("d")+15, date("Y")); //hesaplanacak tarih
    ?>
    gibi kullanman gerekir. Umarım anlatabilmişimdir. Burada istediğin farkı hesaplamak için, gün, ay veya yıl olarak ilgili bölüme eklemen gerekir. Yukarıda date("d")+15 bölümünde ki gibi.
  • 12-03-2010, 21:29:26
    #7
    Şuan zaten senin verdiğin kod yazılı durumda, sqlde int(10) olarak da denedim sadece...

    Son hali itibariyle

    <?php 
    						
    $sorgu = mysql_query ("SELECT * FROM t_advert");
    
    while ($kayit=mysql_fetch_array ($sorgu)){
    $bitis = $kayit["PageKeywords"];
    
    }
    						
    $bitist = explode('-',$bitis); //gün, ay, yıl olarak bölelim
    
    $ilk = mktime(0, 0, 0, $bitist[1], $bitist[2],$bitist[0]); //böldüğümüz tarih
    $son = mktime(0, 0, 0, date("m"), date("d")+15, date("Y")); //hesaplanacak tarih
    
    if($ilk > $son){
    echo 'Evet';
    }else{
    echo 'Hayır';} 
                                                          
    ?>
  • 12-03-2010, 21:48:21
    #8
    Arkadaşım bir önceki mesajımı dikkatli okumadın sanırım. Bak şimdi veritabanına int(10) olarak açtın değil mi alanı. Oraya bitiş tarihini ne şekilde ekliyorsun ? 2010-03-27 şeklinde eklemeyeceksin. mktime() olarak ekleyeceksin yani bitiş tarihi diyelim 2010-03-27 ise

    <?php
    $bitis_tarihi = mktime(0, 0, 0, 3, 27, 2010); //veritabanına eklenecek şekli
    ?>
    olarak ekleyeceksin, bu da 10 haneli bir int değer olarak yazılır. Daha sonra:

    <?php 
    $sorgu = mysql_query ("SELECT * FROM t_advert");
    while ($kayit=mysql_fetch_array ($sorgu)){//döngü içine al
     //diğer kısımlar
    
     $bitis = $kayit["bitis_tarihi"];
      $son = mktime(0, 0, 0, date("m"), date("d")+15, date("Y")); //hesaplanacak tarih
      if($bitis >= $son){//15 gün dahil ise büyük eşit kullanmalısın
        echo 'Evet';
      }else{
        echo 'Hayır';
      }
    }//while son
                                                          
    ?>
    Şeklinde olmalı, umarım anlatabilmişimdir.
  • 12-03-2010, 22:11:34
    #9
    Çok iyi okudum arkadaşım saol Bende diyorumki zaten "Date" olarak kayıtlı idi,yukarda sen yazınca int(10) 'a çevirdim ve öyle denedim birde ve sql' e şununla ekliyorum tarihi, mktime(); yani zaten...
    $tarih  = date("Y-m-d", mktime(0,0,0,date("m"),date("d")+25,date("Y")));
    Şimdi son olarak, durum şu, tarihin sql'e eklendiği kısım int10 değerinde, kodlarda bir değişiklik yapmadım, int10 yapınca önceki tarihlerin hepsinin yılını gösteriyor, ayrıca yeni girdi ekleyince onunda sadece yılı ekleniyor....
    Bu nedenden dolayı tekrar Date yaptım... 2010-02-12 şeklinde ekliyor...

    Yine denedim aynı kodları, bu sefer 4er tane evet, veya 4er tane hayır yazdı herbirinde