• 27-10-2012, 11:41:29
    #1
    Benim sorunum şöyle bişey

    Bir tabloda online olan yani online=1 olanları bulup bunların IP = adresini alıp aynı IP den girmiş kullanıcı isimlerini döktürmek istiyorum fakat aşağıdaki kodu yaptığımda tek IP'den 2 farklı kullanıcı ile girmişse 2'şer kez döküyor kullanıcıları, hatayı nerde yapıyorum ?

    Bu arada durum sıfırdan büyük sayılar oluyor kullanıcıya göre değişiyor...

    $sql1 = "select * from tablo1 where durum > '0' ";
    $res1 = mysql_query($sql1);
    while ($ipbulunan = mysql_fetch_array($res1))
    {
    $ipbu = $ipbulunan[18] ;

    $sql = "select * from tablo1 where ip = '$ipbu'";
    $res = mysql_query($sql);
    $i2 = 0;
    while ($ipbul = mysql_fetch_array($res))
    {
    if ($i2 % 2)
    {
    $kat1_renk[] = "tbl_light";
    }
    else
    {
    $kat1_renk[] = "tbl_light2";
    }
    $i2++;

    $userler[] = $ipbul['loginname'];
    $ipno[] = $ipbul['ip'];
    $onlinemi = $ipbul[9];

    if ($onlinemi > 0)
    {
    $online[] = "<font style=\"color:green\"><b>Online</b></font>";

    }
    if ($onlinemi == 0 )
    {
    $online[] = "<font style=\"color:#ff0000\"><b>Offline</b></font>";
    }
    }
    }
    __________________________________________________ ____
  • 27-10-2012, 11:47:29
    #2
    Mesela A kullanıcısının IPsi ile B kullanıcısının IPsi aynıysa hem A'yı kontrol ederken A ile B'yi yazdırıyor hem de B'yi kontrol ederken. Kontrol edilen IP adresleri bir yere kaydedilerek, daha önce kotrol edilmiş mi diye bakılabilir yazdırmadan önce.
  • 27-10-2012, 11:49:02
    #3
    nilbek adlı üyeden alıntı: mesajı görüntüle
    Mesela A kullanıcısının IPsi ile B kullanıcısının IPsi aynıysa hem A'yı kontrol ederken A ile B'yi yazdırıyor hem de B'yi kontrol ederken. Kontrol edilen IP adresleri bir yere kaydedilerek, daha önce kotrol edilmiş mi diye bakılabilir yazdırmadan önce.
    Evet database kullanarak yapabilirim ama yapmadan sorgu ile yapmam mümkünmü diye sordum.. Dün gece resmen kilitlendim kafam durdu sanırım
  • 27-10-2012, 11:54:43
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    kodlara bakıyorum soruna bakıyorum anlamıyorum anlamıyorum )

    Tam olarak ne yapmaya calisiyorsun veya yazını kontrol edermisin anlam veya cümle düşmesi falan varmı?
  • 27-10-2012, 11:58:01
    #5
    Romansanta adlı üyeden alıntı: mesajı görüntüle
    kodlara bakıyorum soruna bakıyorum anlamıyorum anlamıyorum )

    Tam olarak ne yapmaya calisiyorsun veya yazını kontrol edermisin anlam veya cümle düşmesi falan varmı?
    Mesela A kullanıcısının IPsi ile B kullanıcısının IPsi aynıysa hem A'yı kontrol ederken A ile B'yi yazdırıyor hem de B'yi kontrol ederken A ile B yazdırıyor..
    Ben istiyorumki 1 kez yazsın Aynı IP den 2. kişiye geldiğinde bunu döktüğünü bilsin
  • 27-10-2012, 12:52:26
    #6
    Eğer istediğin şeyi yanlış anlamadıysam, şöyle bir kod kullandım:

    <?php
    $sql = mysql_query("SELECT * FROM tablo1");
    $degerler = array();
    
    while($deger = mysql_fetch_object($sql)){
    	$degerler[] = array('loginname' => $sql->loginname,'ip' => $sql->ip,'durum' => $sql->durum);
    }
    
    $i = 1; $say = count($degerler)-1;
    foreach($degerler as $deger){
    	if($i <= $say){
    		if($deger['durum'] > 0){
    			if(($deger['loginname']!= $degerler[$i]['loginname']) AND ($deger['ip'] == $degerler[$i]['ip'])){
    				echo $deger['loginname'].' ile '. $degerler[$i]['loginname'].' aynı yerden giriyor.<br />';
    			}
    			if($i == $say){
    				if($degerler[$say]['ip'] == $degerler[0]['ip']){
    					echo $degerler[$say]['loginname'].' ile '. $degerler[0]['loginname'].' aynı yerden giriyor.<br />';
    				}
    			}
    		}
    	}
    	$i++;
    }
    
    ?>
    Bana çıktı olarak şunu verdi:

    a5 ile b1 aynı yerden giriyor.
    b5 ile a1 aynı yerden giriyor.

    Veritabanından dönen değerler de şu şekildeydi:

    Array
    (
        [0] => Array
            (
                [loginname] => a1
                [ip] => 192.168.2.1
                [durum] => 1
            )
    
        [1] => Array
            (
                [loginname] => a2
                [ip] => 192.168.2.2
                [durum] => 1
            )
    
        [2] => Array
            (
                [loginname] => a3
                [ip] => 192.168.2.3
                [durum] => 1
            )
    
        [3] => Array
            (
                [loginname] => a4
                [ip] => 192.168.2.1
                [durum] => 0
            )
    
        [4] => Array
            (
                [loginname] => a5
                [ip] => 192.168.2.4
                [durum] => 1
            )
    
        [5] => Array
            (
                [loginname] => b1
                [ip] => 192.168.2.4
                [durum] => 1
            )
    
        [6] => Array
            (
                [loginname] => b2
                [ip] => 192.168.2.5
                [durum] => 1
            )
    
        [7] => Array
            (
                [loginname] => b3
                [ip] => 192.168.2.6
                [durum] => 1
            )
    
        [8] => Array
            (
                [loginname] => b4
                [ip] => 192.168.2.7
                [durum] => 1
            )
    
        [9] => Array
            (
                [loginname] => b5
                [ip] => 192.168.2.1
                [durum] => 1
            )
    
    )
    Sonuç olarak kontrol ettiğinizde doğru sonuç verdi
  • 27-10-2012, 19:07:43
    #7
    Benim istediğimi anlatamadım benim istediğim şöyle
    mesela ahmet mehmet kazım vs...

    Dökümü şöyle istiyorum..
    192.168.1.5 Ahmet , Mehmet
    10.10.0.2 kazım
    XX.xx.x.xx xxxxxx

    gibi arkadaşlar

    A Tablosunda a.b.c.xxxx 19 kolon var

    uyelik kolonunda 0 dan büyük olanları bulacak ve bulduklarının ip kolonuna bakıcak ve Bu ıp den uyelik kolonu 0 dan büyük olan başka varmı dökecek... Bilmem anlatabildim mi
  • 27-10-2012, 19:19:40
    #8
    myzade adlı üyeden alıntı: mesajı görüntüle
    Benim istediğimi anlatamadım benim istediğim şöyle
    mesela ahmet mehmet kazım vs...

    Dökümü şöyle istiyorum..
    192.168.1.5 Ahmet , Mehmet
    10.10.0.2 kazım
    XX.xx.x.xx xxxxxx

    gibi arkadaşlar

    A Tablosunda a.b.c.xxxx 19 kolon var

    uyelik kolonunda 0 dan büyük olanları bulacak ve bulduklarının ip kolonuna bakıcak ve Bu ıp den uyelik kolonu 0 dan büyük olan başka varmı dökecek... Bilmem anlatabildim mi
    [0] => Array
            (
                [loginname] => a1
                [ip] => 192.168.2.1
                [durum] => 1
            )
    
        [1] => Array
            (
                [loginname] => a2
                [ip] => 192.168.2.2
                [durum] => 1
            )
    böyle bir durumu elde ediyorsan ip anahtarı ile yeni bir dizi oluşturarak tekrar eden ip adreslerini tek elemanda toplarsın.

    Yani;
    $ip = array();
    foreach($result as $key => $value)
    {
        $ip[$value['ip']][] = $value['loginname'];
        // $ip[ip_adresi] = kullanıcının adı
        // şeklinde bir dizin olacak
    }
    Ekrana bastırırken kullanacağın kod ise

    foreach($ip as $key => $value)
    {
    echo $key . ' : ';
    print_r($value);
    echo '<hr>';
    }

    güzelleştirmesi sana kalmış
  • 27-10-2012, 20:47:06
    #9
    $query = mysql_query("SELECT * FROM tablo1");
    $i = 0;
    while($q = mysql_fetch_assoc($query)){
        $users[$q['ipsutunu']]['user'][$i]['kadi'] = $q['loginname'];
        $users[$q['ipsutunu']]['user'][$i]['durum'] = ($q['loginstatus']==0) ? 'offline' : 'online';
        ++$i;
    }
    sort($users);
    foreach($users as $ip => $degerler){
    
        echo $ip." Adresinden Giren Kullanıcı(lar)<br />";
        foreach($degerler['user'] as $kul){
        
            echo "--".$kul['kadi']. " - ".$kul['durum']."<br />";
        
        }
        echo "<hr>";
    }
    çıktıyı kendine göre uyarlarsın..