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>";
}
}
}
__________________________________________________ ____
Sorgu sorunu
9
●584
- 27-10-2012, 11:49:02Evet database kullanarak yapabilirim ama yapmadan sorgu ile yapmam mümkünmü diye sordum.. Dün gece resmen kilitlendim kafam durdu sanırımnilbek adlı üyeden alıntı: mesajı görüntüle
- 27-10-2012, 11:54:43Kimlik 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:01Mesela 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..Romansanta adlı üyeden alıntı: mesajı görüntüle
Ben istiyorumki 1 kez yazsın Aynı IP den 2. kişiye geldiğinde bunu döktüğünü bilsin
- 27-10-2012, 12:52:26Eğ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:43Benim 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:40myzade adlı üyeden alıntı: mesajı görüntüle
[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
$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..