Dediğim gibi döngü içinde kullanmışsın, 2 ayrı sorguya ihtiyacın yok $veriler dediğin sorgu yerine verdiğim sorgu tek başına ihtiyacını karşılayacak zaten :)
Sanırım bir yanlışlık yaptın. Verileri çektiğin asıl sorgunu, dediğim örneğe göre düzenlemen gerekiyor. Verdiğim kodu ekstradan eklememelisin yani ki aynı ip adresinin birden fazla kez gelmesi GROUP BY kısmıyla çelişiyor. Verdiğim kodu bir döngü içinde kullandığını sanıyorum. Onun yerine asıl verilerini çektiğin sorgunu verdiğim örneğe göre düzenleyip denemelisin.
Ek olarak eğer sadece tekrarlanan ip adreslerini seçmek istiyorsan
"HAVING say" kısmını HAVING say > 1 şeklinde değiştirmelisin.
<?php
$query = $db->prepare('SELECT *, COUNT(*) AS say FROM myips GROUP BY ip HAVING say');
$query->execute();
if( $query->rowCount() ):
while( $row = $query->fetch(PDO::FETCH_OBJ) ){
echo "<strong>$row->ip</strong> adresi <strong>$row->say</strong> kez tekrarlandı <br>";
}
endif;
Htaccesste alışkanlıktan url yazmışım ?yazi=$1 olarak düşün sen onu :)
RewriteEngine On
RewriteRule ^([0-9a-zA-Z-_/]+)$ index.php?url=$1 [L]
<?php
$yazi = $_GET['yazi'];
RewriteEngine On
RewriteRule ^([0-9a-zA-Z-_/]+)$ index.php?url=$1 [L]
<?php
$yazi = $_GET['yazi'];
Tek sorgu kullanarakta şöyle yapılabilir:
<?php
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$banner = $db->prepare("
SELECT * FROM banner
INNER JOIN kategoriler ON kategoriler.kategori_id = banner.kategori_id
");
$banner->execute();
$banner_r = $banner->fetchAll(PDO::FETCH_OBJ);
$dizi = [];
foreach( $banner_r as $veriler ):
$dizi[$veriler->kategori_ad][] = $veriler->banner_ad;
endforeach;
foreach( $dizi as $kategori => $banners ):
echo "<h4>$kategori</h4>";
foreach( $banners as $banner ):
echo '<p style="margin-left:10px">'.$banner.'</p>';
endforeach;
endforeach;
/*
ÇIKTI:
Kategori 1
Banner 1
Banner 2
Kategori 2
Banner 1
Banner 2
*/
<?php
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$veriler = function($id = 0) use($db){
if( $id == 0 ){
$kategori = $db->prepare('SELECT * FROM kategoriler');
$kategori->execute();
if( $kategori->rowCount() ):
$kategori_r = $kategori->fetchAll(PDO::FETCH_OBJ);
return $kategori_r;
endif;
}else{
$banner = $db->prepare('SELECT * FROM banner WHERE kategori_id = :kID');
$banner->execute([':kID' => $id]);
if( $banner->rowCount() ):
$banner_r = $banner->fetchAll(PDO::FETCH_OBJ);
return $banner_r;
endif;
}
return false;
};
foreach( $veriler(0) as $kategori ):
echo "<h4>$kategori->kategori_ad</h4>";
foreach( $veriler($kategori->kategori_id) as $banner ):
echo "<p style="margin-left:10px">$banner->banner_ad</p>";
endforeach;
endforeach;
/*
ÇIKTI:
Kategori 1
Banner 1
Banner 2
Kategori 2
Banner 1
Banner 2
*/
Bir şekilde php değişkene aktardığını varsayalım, örneğin tayfunun dediği gibi cookiede tutarak.
Javascriptte resize kullandığın için dinamik olarak her değişiklikte istek yollamak zorunda kalcaksın ve dediği gibi şişme yapacak.
Çözünürlüğe göre veri sayısı belirlemek istiyorsan alternatif olarak; örneğin içinde 10 tane veri olan bir div ve 5 tane veri olan bir divin olabilir ve bunları çözünürlüğe göre show|hide yapabilirsin.
Veya yine çözünürlüğe göre örneğin width 650den küçükse 5.den sonraki divleri hide yapabilirsin
Iframe veya başka bir elemanın boyutu için zaten phpye ihtiyacın yok.