• 19-10-2009, 14:06:55
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Veritabanında timestamp diye bir hücre
    ip adresi için bir hücre
    ve kullanıcının o an hangi sayfada olduğunu kayıt eden bir hücre var

    Sorun şu: Kullanıcı siteye giriş yaptı 1 kayıt açıldı veritabanından nerede olduğu kaydıda yapıldı. Sonra kullanıcı 2.nci sayfaya geçti sonra 3.ncü sayfaya geçti.

    Benim sorunum şu sorguyu kullanıyorum:
    select DISTINCT ip from usersonline  group by ip order by timestamp desc
    Bu bana ip adresinin 1 tane olduğunu group yaptı ama kullanıcının en son hangi sayfada olduğunu verisini göstermiyor.

    Kullanıcının en son hangi sayfada olduğunu nasıl çekebilirim
  • 19-10-2009, 14:16:15
    #2
    group by yaptıgın ıcın distinct demene gerek yok zaten group by ip deyınce ip bazında tekilleştirir. istediğin bilgiyi tek bir select le yapamazsın aşağıdaki gibi bir sorgu yazman lazım.
    eğer sorun çıkarsa tablo yapılarını gonder ben sana çalışır sorgu hazırlayıp gonderırım.
    select ip,timestampalani,hangisayfada from useronline t1
    inner join (select ip,max(timestampalani) as yenitimestampalani from useronline group by ip ) t2
    on t1.ip = t2.ip and t1.timestampalani = t2.yenitimestampalani
  • 19-10-2009, 14:40:53
    #3
     
    CREATE TABLE `usersonline` (
      `timestamp` int(15) NOT NULL default '0',
      `ip` varchar(40) NOT NULL default '',
      `nerede` varchar(200) NOT NULL,
      `username` varchar(100) NOT NULL,
      `browser` varchar(30) NOT NULL,
      KEY `timestamp` (`timestamp`),
      KEY `ip` (`ip`),
      KEY `nerede` (`nerede`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin5;
    çok teşekkür ederim
  • 19-10-2009, 14:47:05
    #4
    Column 'ip' in field list is ambiguous

    bu hatayı veriyor ilk kez gördüm bu tarz bir uyarıyı
  • 19-10-2009, 15:15:35
    #5
    select t1.ip,t1.timestampalani,t1.hangisayfada from useronline t1
    inner join (select ip,max(timestampalani) as yenitimestampalani from useronline group by ip ) t2
    on t1.ip = t2.ip and t1.timestampalani = t2.yenitimestampalani

    sorguyu yukardakı gıbı yap. normal bır hata. iki tablodada aynı kolonlar oldugu ıcın hata vermıstır
  • 19-10-2009, 15:23:31
    #6
    şu an sitede 8 kişi var ama bu kodu çalıştırınca şu an sitede 1 kişi var diyor
  • 19-10-2009, 15:34:55
    #7
    vertibanında tutulan bilgileri incele bence.
    bir ip logın oldu sonra log off oldugu zaman sen verıtabından bunu sılıyomusun yoksa bır kolonda durumunumu degıstıroyosun. eger hıc bısey yapmıyor ve her gelenı ınsert edıyosan bu yontem cope gıder. cunku en son dun baglanan birisi bile bu sorgu sonucunda lısteye gırecektır. eger bır durum kolonu yaparsa ve where cumlesınde bunu fıltrelersen daha saglıklı olur.
  • 19-10-2009, 15:36:32
    #8
    veya bir sure belirle( mesela en fazla 20 dakıka) timestamp alanı 20 dk oncekılerı fıltrele.
  • 19-10-2009, 15:51:46
    #9
    timeout=300 var zaten.

    şimdi kullanıcı 1 dakika içinde 5 sayfa gezerse ben o 1 dakika içindeki girdiği en son sayfanın neresi olduğunu bulmak istiyorum.

    2009-10-29 13:20:23 68.209.182.4 a.php
    2009-10-29 13:20:44 68.209.182.4 b.php
    2009-10-29 13:20:50 68.209.182.4 c.php
    2009-10-29 13:19:06 68.75.94.158 a.php
    2009-10-29 13:19:03 68.97.33.69 b.php

    68.209.182.4 ip adresli adam 1 dakika içinde en son c.php sayfasına girmiş. bunu nasıl çekebilirim onu çözmem gerek ama nasıl