yazi=yazi_id--yazi_ad--kategori_id
kategori=kategori_id,kategori_ad
Yapmak istediğim şey yazıya birden çok kategori ekleyip index sayfasında da id olarak çektiğim kategorileri ad olarak yazdırmak. Örneğin Bir yazıya implode ederek 3 kategori ekliyorum. Çekerken ise explode edip çekiyorum. Aşağıda yazdığım kod sorunsuz çalışıyor ama inner join yapmadan çalıştı.
<?php
ob_start();
include 'tools/trigger.php';
$yazisor=$db->prepare("SELECT * FROM yazi ORDER BY yazi_id");
$yazisor->execute();
?>
<form method="post" action="tools/trigger.php">
<table border="1" align="center">
<tr>s
<td><input type="submit" value="coklu sil" name="submit">
</td>
<td>AD</td>
<td>KATEGORI</td>
</tr>
<?php
while ($yazicek=$yazisor->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td><center><input type="checkbox" value="<?php echo $yazicek['yazi_id']; ?>" name="chk[]"></center></td>
<td><?php echo $yazicek['yazi_ad']; ?></td>
<td>
<?php
$a=$yazicek['kategori_id'];
$b=explode(",",$a);
foreach ($b as $kategoribas) {
$kategorisor=$db->prepare("SELECT * FROM kategori where kategori_id=$kategoribas");
$kategorisor->execute();
$kategoricek=$kategorisor->fetch(PDO::FETCH_ASSOC);
?>
<button><?php echo $kategoricek['kategori_ad']; ?></button>
<?php } ?>
</td>
</tr>
<?php }?>
</table>
</form>Sormak istediğim şey bu kod verimli mi yoksa inner join kullanmadıgım için sistemi gereksiz yorar mı? Sorgu gereksiz yere 2 kere while döngüsüne girdiği için tereddüt yaşıyorum. Inner join ile denedim, fakat bu defa da explode ederken sorun yaşadım. Sadece ilk kategori adını çekiyor aşağıdaki kod gibi yapınca.
<?php
ob_start();
include 'tools/trigger.php';
$yazisor=$db->prepare("SELECT
yazi.yazi_id,
yazi.kategori_id,
yazi.yazi_ad,
yazi.yazi_resimyol,
kategori.kategori_id,
kategori.kategori_ad
FROM
kategori
INNER JOIN yazi ON kategori.kategori_id = yazi.kategori_id");
$yazisor->execute();
?>
<form method="post" action="tools/trigger.php">
<table border="1" align="center">
<tr>s
<td><input type="submit" value="coklu sil" name="submit">
</td>
<td>AD</td>
<td>KATEGORI</td>
</tr>
<?php
while ($yazicek=$yazisor->fetch(PDO::FETCH_ASSOC)) { ?>
<tr>
<td><center><input type="checkbox" value="<?php echo $yazicek['yazi_id']; ?>" name="chk[]"></center></td>
<td><?php echo $yazicek['yazi_ad']; ?></td>
<td>
<?php
$a=$yazicek['kategori_id'];
$b=explode(",",$a);
foreach ($b as $kategoribas) { ?>
<button><?php echo $yazicek['kategori_ad']; ?></button>
<?php } ?>
</td>
</tr>
<?php }?>
</table>
</form>İlk kod sorunsuz çalışıyor ama inner join ile daha sadece şekilde dediğimi yapabilir miyim? Umarım sorunu anlatabilmişimdir. Teşekkürler.