Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Date ile ilgili

Konu, 'PHP' kısmında RakyoL tarafından paylaşıldı.

  1. RakyoL

    RakyoL Üye

    Kayıt:
    12 Eylül 2002
    Mesajlar:
    101
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    CHoRLu
    merhaba arakdaşlar benim bir sitem var ve siteye her hafta belirli sayıda link ekliyorum (oyun, animasyonlar) bunların yanına kırmızı ile "yeni" yazdırmak istiyorum ve linki eklediğimden tarihten 4 gün sonra yeni yazsının kaybolmasını istiyorum bunun mantığını bana anlatırmısınız ya da eğer yardım alabileceğim bir kaynak varsa sevinirim
    hoşcakalın byee...!
     
  2. mkarabulut

    mkarabulut Misafir

    Veritabanında hangi formatta tarihleri tutuyorsun ?
    Mesela 'date' tipinde tutuyorsan şöyle bi şeyler işine yarayabilir..
    (date tipindeki alanı tarih olarak varsaydım..)
    Kod:
    $query = "SELECT * , (TO_DAYS(NOW()) - TO_DAYS(tarih)) as fark  ";
    $query.=" FROM table ";
    $query.= " ORDER By tarih DESC ";
    
    $rs = mysql_query ($query);
    
    while ($row = mysql_fetch_array ($rs) ) {
      echo "<a href=\"$row[0]\">$row[1]</a>";
    
      if ($row['fark']< 4 ) echo "yeni";
    
    }
    
    mysql_free_result ($rs);
    
    
    Sanırım bu kod işine yarayacaktır. Daha detaylı bilgi için mysql manual'a ve özellikle şu sayfaya bakabilirsin.
    http://www.mysql.com/doc/en/Date_and_time_functions.html

    (Dip not : mysql dısşında bir vt ile çalışıyorsan, to_days () fonlsiyonu çalışmayabilir, emin değilim...)

    Ama bu tür problemlerde nedense ben tarih bilgisini veritabanında INT olarak tutmak ile işlemleri daha kolay yapıyorum, tabii kşisel bi tercih meselesi. Eğer tarihleri karşılaştırma yapıp ekrana bastırıyorsan INT ile çalışmak daha kolay, ama doğrudan ekrana bastırıyorsan genelde DATE tipi daha uygun tabi...

    Mesela
    Kod:
    $now = time();
    
    Burada saniye sayısı ile ilgili bir numerik değer atanır $now değişkenine, daha sonra mesela sen 3 gün önceki tarihten öncekileri alacaksan
    Kod:
    //saniye cinsinden 1 gün
    $oneday = 60 * 60 * 24 ; 
    $limit_time = time () - ( $oneday * 3 );
    
    $query = "SELECT * FROM tablo ";
    $query.= " WHERE tarih > $limit_time" ;
    
    Böylece son 3 günlük kayıtları alabilirsin. Tarihleri ekrana bastırıken ise istediğin formatta bastırabilmen için date() fonksiyonunu kullabilirsin.
    Kod:
    while ($row = mysql_fetch_array ($rs)) {
      echo date("d/m/Y",$row['tarih']);
    }
    
    Biraz daha karışık gibi ama veritabanına bağımlı olmayan bir metod...

    Kolay gelsin...(Biraz uzattım ama kusura kalmayın..)
     
  3. RakyoL

    RakyoL Üye

    Kayıt:
    12 Eylül 2002
    Mesajlar:
    101
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    CHoRLu
    Bi kaç Sorun var

    evet verdiğiniz kodu denedim eh çalışıyor ama işime yaramadı bir birincisi <br> nin yerini bulamadım
    echo "yeni<br>" yaptığımda 4 gün ileri çekiyorum ve br kaybolunca db den okunan linkler bir birine bitişik şekilde çıkıyor

    echo"<a href="\$row[1]\"...... </a><br> yaptığımda ise yeni yazısı bi alt satıra cıkıyor... bu birinci problem ikincisi ben db den verileri çekerken fetch_array kullanmiyorum numrows komutunu kullanıyorum ve iki kodu bir arada bir türlü kullanamadım acaba olurmu diye bi kaç kez deneme yaptım fakat malesef uyduramadım benim verileri çektiğim komut şu:
    PHP:
    <?
    @
    mysql_connect("localhost""root" "deneme") or die("Ulaşılamadı...");
    @
    mysql_select_db("php") or die("veritabanı yok");

     
    $rey mysql_query("select * from  data where bolum='anim' order by hit DESC");
     
    $num mysql_numrows($rey);
     
    $a 0;
     while ( 
    $a $num) : 
     
    $ad mysql_result($rey,$a,"ad");
     
    $id mysql_result($rey$a"id");
     
    $hit mysql_result($rey$a"hit" );
      
    $url mysql_result($rey$a"url" );
     
    $a++;
     echo (
    "• <a href=\"javascript:Item('$url?id=$id')" >$ad</a><br>\n"); 
     endwhile;

    ?>
    buna göre uyarlanabilecek bir komut yokh mu... Lütfen yardımcı oLun.. $imdiden TeşekkürLer!
     
  4. RakyoL

    RakyoL Üye

    Kayıt:
    12 Eylül 2002
    Mesajlar:
    101
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    CHoRLu
    ??? hala bi cevap geLmedi...
     
  5. mkarabulut

    mkarabulut Misafir

    Koda müdahale etmek isteyeceğini düşünerek, ham bi şeyler yazmıştım.. <br> yi tam olarak şöyle eklemen gerekiyordu...
    Kod:
    $query = "SELECT * , (TO_DAYS(NOW()) - TO_DAYS(tarih)) as fark  ";
    $query.=" FROM table ";
    $query.= " ORDER By tarih DESC ";
    
    $rs = mysql_query ($query);
    
    while ($row = mysql_fetch_array ($rs) ) {
      echo "<a href=\"$row[0]\">$row[1]</a>";
    
      if ($row['fark']< 4 ) echo "yeni";
    
     echo "<br>";
    
    }
    
    mysql_free_result ($rs);
    
    mysql_result () ile mysql_fetch_array() kullanımına gelince...
    mysql_result() , mysql_fetch_array() fonksiyonuna göre önemli ölçüde yavaş çalışan bi fonksiyondur... Onun için bu fonksiyonun yerine mümkün olduğu kadar fetch_array fonksiyonunu kullanmanı öneririm..
    Eğer bu kodu mysql_result() ile yazsaydık ..
    Kod:
    @mysql_connect("localhost", "root" , "deneme") or die("Ulaşılamadı..."); 
    @mysql_select_db("php") or die("veritabanı yok"); 
    $rey = "SELECT * , (TO_DAYS(NOW()) - TO_DAYS(tarih)) as fark  ";
    $rey.=" FROM table ";
    $rey.= " ORDER By tarih DESC ";
    $num = mysql_numrows($rey); 
     $a = 0; 
     while ( $a < $num) :  
     $ad = mysql_result($rey,$a,"ad"); 
     $id = mysql_result($rey, $a, "id"); 
     $hit = mysql_result($rey, $a, "hit" ); 
      $url = mysql_result($rey, $a, "url" ); 
      $fark = mysql_result ($rey,$a,"fark");
     $a++; 
     echo ("• <a href=\"java script:Item('$url?id=$id')" >$ad</a>"); 
     if ($fark < 4 ) echo "yeni";
     echo "<br>";
     endwhile; 
    
    sanırım bu kod işini görür, yalnız dediğim gibi mysql_Result () kullanımını önermiyorlar... Oldukça yavaş çünkü..

    Kolay gelsin..
     
  6. RakyoL

    RakyoL Üye

    Kayıt:
    12 Eylül 2002
    Mesajlar:
    101
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    CHoRLu
    saol

    saol kodları deniyecem inş. çalışır :)) çünkü böyle zor oluyo llinkleri eklerken yanına yeni yazıyom sora siliyorum felan :)) hade hoşcakal saol...
     
  7. RakyoL

    RakyoL Üye

    Kayıt:
    12 Eylül 2002
    Mesajlar:
    101
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    CHoRLu
    olmadı :( olmiyor
    oradaki fark kelimesi neyin nesi onu anlamadım mesela fark değil de başka bir şey yassam olurmu db ye tarih ekledim date olarak ama olmadı yine de farkı bulmiyor değişik şekillerde oluyor mesela db deki günü ve şimdiki gün arasında ilişki kurabiliyorum ayın 9 ise göster deilse gösterme delan yapabiliyorum ama farkın 4 ten bükse gösterme olayını yapamadım :((
     
  8. mkarabulut

    mkarabulut Misafir

    Hata nedir ?
    mysql_error() ile hatayı yazdırdın mı ?
     
  9. RakyoL

    RakyoL Üye

    Kayıt:
    12 Eylül 2002
    Mesajlar:
    101
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci
    Şehir:
    CHoRLu
    yokh hata değil de olmiyo yani tarihi değiştirince oradaki yeni silinmiyor felan ayarlayamadım işte dedim ya "as fark" ne dir fark kelimesi yerine başka bir şey yazssak olur mu ya da bu fark kelimesi db ye kayıtlı mı olacak nasıl yani orayı anlayamadım :confused:
     
  10. mkarabulut

    mkarabulut Misafir

    Vakitsizlik... Ama genede kısa bi açıklama :

    fark kelimesi yerine sorgu içinde istediğin başka bi şey yazabilirsin, tabii sonucu php ile fetch ederken oraya ne yazarsan onun ile alman gerekiyor..