v2.5.2
Giriş yap

id ye göre tablodan veri saydırma

yeni2021
752 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba iki tablom var biri koleksiyon_tr bunun içinde koleksiyon tanımlayıcı bilgilerini tutuyorum (ID,k_baslik,k_adi, k_id,seflink,tablo).
Diğer tablomda makalelerin olduğu tablo: makale_tr (ID,yazar,baslik,link,koleksiyon_id). Ortak noktaları ise
koleksiyon_tr.k_id = makale_tr.koleksiyon_id

panelimde koleksiyon adlarının listesini çektim ve bu koleksiyon adlarının kaç makalede kullanıldığını saydırmak için fonksiyon yazmaya çalıştım.
Fakat makale_tr tablosu koleksiyon_id sütununa göre saydırtamadım. Toplam makale sayısını veriyor. Kod konusunda yardımcı olur musunuz?

public function sayKoleksiyon($koleksiyon_id){
	$sql="SELECT koleksiyon_id FROM makale_tr 
	inner join koleksiyon_tr 
	on koleksiyon_tr.k_id = makale_tr.koleksiyon_id";
	
	$calistir=$this->baglanti->prepare($sql);
	$calistir->execute(['k_baslik'=>$koleksiyon_id]);
	$count = $calistir->rowCount();
	return $count;
}
<tr>
  <th>#</th>
  <th>Koleksiyon Adı</th>
  <th>Makale Sayısı</th>
  </tr>
</thead>
<tbody>

<?php
 $veriler=$VT->VeriGetir("koleksiyon_tr","","","ORDER BY ID ASC");
   if($veriler!=false)
    {
        $sira=0;
        for($i=0;$i<count($veriler);$i++)
        {
          $sira++;
          ?>
            <tr>
            <td><?=$sira?></td>
            <td><?php
            echo stripslashes($veriler[$i]["k_baslik"]);
            ?>
            </td>
            <!-- koleksiyon_id ye göre saydırtmam lazım koleksiyon saydırması başarılı değil.-->
            <td><span class="badge bg-success"><?=$count->sayKoleksiyon($i)?></span></td>
           
            </tr>
          <?php
        }

      }

      ?>
 </tbody>
Cevap yaz
Cevaplar (8)
makifgokce
1264 gün önce
foreach($veriler AS $sira => $veri)
{
  ?>
    <tr>
    <td><?=$sira + 1?></td>
    <td><?php
    echo stripslashes($veri["k_baslik"]);
    ?>
    </td>
    <!-- koleksiyon_id ye göre saydırtmam lazım koleksiyon saydırması başarılı değil.-->
    <td><span class="badge bg-success"><?=$count->sayKoleksiyon($veri['k_id'])?></span></td>
   
    </tr>
  <?php
}
yeni2021
1264 gün önce

@makifgokce , tesekkür ederim hocam sorunsuz oldu.

yeni2021
1264 gün önce

Fonksiyonun son hali:

public function sayKoleksiyon($koleksiyon_id){
	$sql="SELECT COUNT(`makale_tr`.`koleksiyon_id`) AS `adet` FROM `makale_tr` 
	INNER JOIN `koleksiyon_tr` ON `koleksiyon_tr`.`k_id` = `makale_tr`.`koleksiyon_id` 
	WHERE `koleksiyon_tr`.`k_id` = :k_baslik";
	
	$calistir=$this->baglanti->prepare($sql);
	$calistir->execute([':k_baslik'=>$koleksiyon_id]);
	$data = $calistir->fetch(PDO::FETCH_ASSOC);
	return $data['adet'];
	}

Aşağıdaki şu kısım ne olmalı?
<td><span class="badge bg-success"><?=$count->sayKoleksiyon($i)?></span></td>

Bu haliyle:

@makifgokce hocam, bir terslik var, sıralama kaymış gibi sayıyor.

qplot
1264 gün önce

kodları `php tagları ıcıne yazarsan fark edebiliriz renklı olmadıgı ıcın dıkkat etmemısım pardon :)

makifgokce
1264 gün önce

Öncelikle aşağıdaki kısma anlam veremedim.Sql kodunun içerisinde parametre alacak bir yer yok ama burda parametre göndermişsin.

$calistir->execute(['k_baslik'=>$koleksiyon_id]);

Sql kodunu aşağıdaki gibi yapıp denermisin.

SELECT COUNT(`makale_tr`.`koleksiyon_id`) AS `adet` FROM `makale_tr` INNER JOIN `koleksiyon_tr` ON `koleksiyon_tr`.`k_id` = `makale_tr`.`koleksiyon_id` WHERE `koleksiyon_tr`.`k_id` = :k_baslik
$calistir->execute([':k_baslik'=>$koleksiyon_id]);
$data = $calistir->fetch(PDO::FETCH_ASSOC);
return $data['adet'];
yeni2021
1264 gün önce

@qplot hocam zaten fonksiyonumda inner join var.
Ama doğru çalıştıramadım.
ortak id ye göre saymıyor toplu rakamı veriyor.
ben her koleksiyona kaç makale var ayrı ayrı saydırmak istiyorum.

qplot
1264 gün önce

inner join ile birleştir count() ilede saydır

https://www.youtube.com/watch?v=TqmmpDQniL0

yeni2021
1264 gün önce

yardımcı olacak kimse yok mu?