Php ile mysql deki satırları seçme ile ilgili (SORU)

Başlatan ecarpar, 08 Aralık 2011 - 13:22:41

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

ecarpar

mysql de 5 satırım var ve bunlardan birinin ismi tarih, kullanıcı işlem yaptığında tarih o günün tarihi olarak otomatik olarak atanıyor, benimde bunu sorgulayıp

07/12/2011 de 10 kişi üye olmuştur .
08/12/2011 de 5 kişi üye olmuştur gibisinden yazdırmak istedim :) ama beceremedim .


Eşşeğin uzun bir yolculuğa çıkmış olması onun at olarak döneceği anlamına gelmez.

alperensalih

Mesela bugün 3 Şubat. Geriye doğru 5 gün boyunca kaç kişinin üye olduğunu yazdırmak istediğinizde Ocak ve Şubat ayları arasındaki geçiş sorun yaratabilir sanki. Veritabanına direkt tarih şeklinde mi giriyorsunuz?
Yapabilmek için veritabanındaki ilgili sütun ile bugünü ilişkilendirmek ve geriye doğru saymak gerekiyor. Mesela bugünü 0 olarak kaydedersek, bugün ben bu foruma kaydoldum benim bilgilerimin bulunduğu satırda ilgili sütuna 0 yazdırmak gerekiyor. Bunu date ve mktime fonksiyonlarıyla yapanlar mevcuttu sanırım. Böylece yarın için değer 1 olacak, 4 gün sonra ise 4 olacak. Veriyi yazdırmak istediğiniz sayfa da 4'ten geriye doğru 5 gün giderse {4,3,2,1,0} şeklinde sonuç verecek, ayrı ayrı kayıt tarihih sütununda 4,3,2,1,0 olan satırları saydırarak sayfaya yazdırabilirsiniz sanırım.
Neden sen yapmadın derseniz, o kadar bilgim yok sanırım :) İnternette birşey ararken rastgeldim, bu aklıma gelince kayıt olup paylaşmak istedim, umarım size bir sonuç çıkaracak fikir verir.

risperdal

Bahsettiğiniz tarih kolonunun bulunduğu tablonun yapısını görmek lazım. Görmeden şu anlık somut bir şey söyleyemem.

cxerpw57

Bunun için basit bir SQL sorgusu yeterlidir.

select count(tarih_kolonu_adi), tarih_kolonu_adi from tablo_adi group by tarih_kolonu_adi order by  tarih_kolonu_adi desc


ilgili tarihte kaç kişi girmişi tarih bilgisi ile alabilirsiniz, tek yapmanız gereken bunu bir query nesnesine almak gerisi  size kalmış.

İyi çalışmalar dilerim.
Yarım hazırlıkla, yarım tedbirle yapılacak taarruz, hiç taarruz etmemekten çok daha fenadır (1922). M.Kemal ATATÜRK
http://canerblt.wordpress.com
twitter : cabulut

brooqs

risperdal ında dediği gibi hangi formatta kaydettiğini bilmeden cevap yazmak zor unixtime ile tutuyorsan başka mysql-date ile tutuyorsan başka olur.
Linux is an adventure!!!

fatihuzuner

Bu tür tarihleri time() den gelen değer ile tutun.tablodaki alan int olsun.
time(): fonksiyonun çalıştırıldığı süre ile 1 ocak 1970 arasında ki saniye farkını verir.
mktime():girilen tarih ile 1 ocak 1970 arasındaki saniye farkını verir.saat,dakika,saniye,ay,gun,yıl sırasında değer gönderin.
yani yapacağınız iş:

$bas=mktime(0,0,0,12,7,2011);
$son=mktime(23,59,59,17,2,2011);

//ardından sorgunuzda tarih kısmında between kullanın
mysql_query('select id from kullanicilar where kayit between '.$bas.' AND '.$son.'');
//size 7 aralık 2011 de kayıt yapan kullanıcıların idlerini verecektir.
//toplam için mysql_num_rows() yada 'select id' kısmını 'select count(id) as toplam' diyip gelen dizinin toplam değerini almanız yeterli olacaktır.



Date şeklindede tutabilirsiniz ancak bazen date veri tipinde uğraşmak gerekebiliyor.time() kullanmanızı ve tablodaki alan tipinizi int yapmanızı tavsiye ederim.