MySQL tabloki bir sütununun içerisinde yer alan aynı ip'leri saydırarak yazdırma
Merhaba, bir tablom var ismi myips;
Ben bu tablo içerisindeki "ip" isimlü sütunda yer alan IP numaralarını bir amaç için kaydediyorum ancak her birinden kaç adet olduğunu bulabilmem gerekiyor. Zira bazı IP'ler gün içerisinde 5-6 defa giriş yapıyor bu nedenle aynı ipleri seçtirterek saydırmam ve sonucu da yazdırmam gerekiyor. Bunun için şöyle bir yol denedim ama beceremedim. Rica etsem en pratik yol ile nasıl yapıldığını gösterir misiniz?
Hocam tekrardan merhaba, dediğinizi yaptım ancak sonuç değişmedi. Ben de oldukça yeniyim PHP'de kusura bakmayın belki de kolay bir yöntemi var ancak ben bilmiyorum.
Tam olarak yapmaya çalıştığım şey şu, nerede yanlış yaptığımı gösterirseniz çok daha iyi olabilir.
Öncelikle kayıtlı ipleri veritabanından çekiyor ve zamana göre sıralatıyorum:
<?php
$veriler = $db->prepare("SELECT * FROM myips ORDER BY zaman DESC");
$veriler->execute();
$arr = $veriler->fetchAll(PDO::FETCH_ASSOC);
foreach ($arr as $deger):
?>
Bundan sonraki süreçte sizin verdiğiniz kodu, tablo değerindeki ip kısmı için kullanıyorum:
<td><?php echo $deger ['ip'];
$query = $db->prepare('SELECT *, COUNT(*) AS say FROM myips GROUP BY ip HAVING say>1');
$query->execute();
if( $query->rowCount() ):
while( $row = $query->fetch(PDO::FETCH_OBJ) ){
echo " $row->say";
}
endif;
?>
Bundan sonra gelen çıktı IP adresi yanında IP'lerin adetini ve kaç farklı adet varsa yan yana yazdırıyor. Benim istediğim sadece o IP'ten kaç adet girmişse yanına (2) veya (5) gibi rakam yazmak.
Örnek veriyorum A IP'ınden 4 tane varsa bunun diğer bloklara karışmaması lazım sadece ilgili IP sayısı ilgili IP'lerin yanında yazmalı.
Kusura bakmayın vaktinizi alıyorum, eğer böyle bir şey mümkünse nasıl yapabilirim uykularım kaçtı bir türlü beceremedim :)