PHP

PHP MySQL ile ortak kategoriye ait toplam yazı sayısı nasıl gösterilir?

PHP MySQL ile ortak kategoriye ait toplam yazı sayısı nasıl gösterilir?

Merhaba arkadaşlar bu yazımızda PHP PDO yapısını kullanarak herhangi bir kategori ait toplam kaç tane yazı var bunu göstereceğim.

Öncelikle veri tabanımızda bloglar, kurslar ve kategoriler tablosunu oluşturalım içine aşağıdaki resim gibi sütunlarımızı ekleyelim

MySQL kategoriler tablosu
Kategoriler tablosu
MySQL bloglar tablosu
Bloglar tablosu
MySQL kurslar tablosu
Kurslar tablosu

Tablolarımızı eklediğimize göre artık başlayabiliriz. Öncelikle veri tabanı bağlantımızı PHP PDO yapısını kullanarak yapıyoruz.

<?php
  $servername = "localhost";
  $username = "root";
  $password = "";
  $dbname = "veritabani";
  $options = [
    PDO::ATTR_EMULATE_PREPARES   => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
  ];
  try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password, $options);
    $conn->exec("SET CHARACTER SET utf8");
    $conn->query("SET NAMES 'utf8'");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
  }catch(PDOException $e){
      echo "Bağlantı Hatası: " . $e->getMessage()."<br />";
      exit('hata oldu-0');
  }
?>

Config.php dosyasını index.php sayfasına dahil etmek için inlcude ("config.php"); kodunu sayfanın en üst kısmına yazıyoruz.

<?php
include ("config.php");

SQL oluşturma

SELECT * FROM kategoriler WHERE kategori_durum = 1

Bütün kategorileri listeletmek için ise yukarıdaki SQL kodunu yazıyorduk fakat bizim amacımız bir kategoriye ait olan bütün yazılar, kurslar ve bloglar gibi toplamlarını bulup kategorilerin karşısına yazdırmaktı. Şimdi ise aşağıdaki SQL kodunda ise COUNT(), JOIN ve UNION ALL önemli olan yerler burasıdır. Eğer bu terimleri bilmiyorsanız anlamanız biraz zorlaşır, bu terimleri daha iyi anlamanız için aşağıdaki bağlantılara tıklamanız yeterli.

SQL COUNT nedir?SQL JOIN nedir?SQL UNION nedir?

$sql="SELECT kategori_adi, COUNT(kategoriler.kategori_id) AS toplamlar FROM kategoriler 
        JOIN (
            SELECT blog_kategori_id AS kate_id FROM bloglar 
            UNION ALL 
            SELECT kurs_kategori_id AS kate_id FROM kurslar
            ) a ON (kategoriler.kategori_id = a.kate_id)
        WHERE kategori_durum=:katdurum GROUP BY kategoriler.kategori_id";

SQL kodumuzu $sql değişkenine yazdığımıza göre artık kategorilerimizi listelemek PHP kodunu oluşturuyoruz.

$kategori=$conn->prepare($sql);
$kategori->execute(array(
        'katdurum' => 1
    )); 
$kategorilist=$kategori->fetchAll(PDO::FETCH_ASSOC);
$categorytotal=$kategori->rowCount();
<table>
    <tr>
        <th>Kategori Adı</th>
        <th>Toplam</th>
    </tr>
    <?php
        if ($categorytotal) {
            foreach ($kategorilist as $sidecatyshow ) {
    ?>
    <tr>
        <td><a href="#"><?=$sidecatyshow['kategori_adi'] ?></a></td>
        <td><?=$sidecatyshow['toplamlar'] ?></td>
    </tr>
    <?php
            }
        }
    ?>
    
</table>
PHP kategoride toplam yazı sayısı gösterme
Bu makale yardımcı oldu mu?
EvetHayır

Paylaş

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir