Merhabalar, bir mysql tablomuz var bu tabloda birden fazla değer var fakat bu değerli tek olarak sayıyor örnek olarak göstermem gerekirse.
Bu şekilde birden fazla genre_id giriyor fakat sorun şurada başlıyor bu genre_id saydırıyorum ;
$id=$_GET['g_id'];
$sql=mysqli_query($mysqli,"SELECT * FROM tbl_genres WHERE gid='$id'");
$row=mysqli_fetch_assoc($sql);
if($row['genre_img']!="")
{
unlink('images/'.$row['genre_img']);
unlink('images/thumbs/'.$row['genre_img']);
}
Delete('tbl_genres','gid='.$id.'');
$_SESSION['msg']="12";
header( "Location:yonet_genre.php");
exit;
}
function get_total_item($id)
{
global $mysqli;
$sql="SELECT COUNT(*) as num FROM tbl_mov WHERE genre_id='".$id."'";
$total_movies = mysqli_fetch_array(mysqli_query($mysqli,$sql));
return $total_mov['num'];
}Sadece tek değer girilmiş idleri sayıp yazdırıyor ekrana 22 id tekse sayıyor 22,23,24 değerlerini de yazdırması lazım fakat bir türlü olmadı nerede yanlış yapıyorum ?
Öncelikle veritabanı tasarımınız hatalı.
Tablo ilişkilerini böyle virgül ile ayırarak kurarsanız böyle sorunlar almanız normal.
Çünkü siz 22 değerine eşit satırları çağırıyorsunuz ama 22,23,24 diye bir değer olduğunda bu 22 değerine eşit olmaz.
Böyle sorunlar almamak için, 2 farklı tabloda bir satırı birden çok satıra bağlamanız gerekiyorsa 3. bir taxonomy tablosu ile bağlamanız lazım inner join ile sorgulamanız lazım.
Geçici çözüm olarak sorgunuzu bu şekilde
WHERE genre_id='".$id."' OR genre_id='".$id.",%' OR genre_id=',".$id.",' OR genre_id='%,".$id."'
yapabilirsiniz.
Bu şekilde
ister 22 olsun
ister 22,23,24 olsun
ister 21,22,23 olsun
ister 20,21,22 olsun
sayar.
Ama dediğim gibi yol yakınken veritabanı yapınızı değiştirin.
Bir şarkıyı birden çok kategoriye bağlayacaksanız, şarkılar tablonuz, kategoriler tablonuz ve şarkı idleri ile kategori idlerini bağlayan bir taxonomy tablonuz olmalı.
Sizin tablo ilişkisi yapınız ancakher şarkının tek bir kategorisi olacaksa kullanılabilir.