PHP 8 Php 8 Yönetim Paneli 2026 Güncel

Php 8 Çoka Çok Tablo Tasarımı

5 dk okuma süresi 590 görüntülenme 2024-09-22 4.9 (14 değerlendirme)

PHP 8 ile çoka çok ilişki (many-to-many relationship) tablosu tasarımı, genellikle iki tablo arasında bağlantı kurmak için bir üçüncü tablo kullanmayı içerir. Bu örnekte, "kurslar" ve "kategoriler" tabloları arasındaki çoka çok ilişkisini nasıl kuracağınızı göstereceğim.

1. Veritabanı Tablolarını Oluşturma

Öncelikle, aşağıdaki tabloları oluşturmalısınız:

Kategoriler Tablosu

CREATE TABLE kategoriler ( id INT AUTO_INCREMENT PRIMARY KEY, isim VARCHAR(100) NOT NULL );

Kurslar Tablosu

CREATE TABLE kurslar ( id INT AUTO_INCREMENT PRIMARY KEY, isim VARCHAR(100) NOT NULL, aciklama TEXT, fiyat DECIMAL(10, 2) );

Kurs Kategori İlişkisi Tablosu

Çoka çok ilişkiyi kurmak için, bir "kurs_kategori" tablosu oluşturmalısınız:

CREATE TABLE kurs_kategori ( kurs_id INT, kategori_id INT, PRIMARY KEY (kurs_id, kategori_id), FOREIGN KEY (kurs_id) REFERENCES kurslar(id) ON DELETE CASCADE, FOREIGN KEY (kategori_id) REFERENCES kategoriler(id) ON DELETE CASCADE );

2. Tablo Açıklamaları

  • kategoriler Tablosu: Kategorilerin bilgilerini saklar. Her kategori bir ID'ye sahiptir.

  • kurslar Tablosu: Kursların bilgilerini saklar. Her kurs da bir ID'ye sahiptir.

  • kurs_kategori Tablosu: Bu tablo, her kursun hangi kategorilere ait olduğunu belirtir. kurs_id ve kategori_id alanları, kurslar ve kategoriler tablolarındaki ID'lere referans eder. Bu alanlar, aynı zamanda birincil anahtar olarak da tanımlanmıştır, böylece aynı kurs ve kategori için birden fazla kayıt olamaz.

3. PHP ile Veri Ekleme

Kurs ve kategori eklemek için basit bir form oluşturalım ve ardından ilişkileri ekleyecek bir PHP dosyası yazalım.

HTML Formu (kurs_ekle_form.php)

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Kurs Ekle</title> </head> <body> <h1>Kurs Ekle</h1> <form action="kurs_ekle.php" method="post"> <label for="isim">Kurs İsmi:</label> <input type="text" id="isim" name="isim" required> <br> <label for="aciklama">Açıklama:</label> <textarea id="aciklama" name="aciklama" required> </textarea> <br> <label for="fiyat">Fiyat:</label> <input type="number" id="fiyat" name="fiyat" step="0.01" required> <br> <label for="kategori">Kategori Seç:</label> <select id="kategori" name="kategori_id[]" multiple required> <?php // Kategorileri veritabanından al $conn = new mysqli("localhost", "kullanici_adiniz", "sifreniz", "veritabani_adiniz"); $result = $conn->query("SELECT id, isim FROM kategoriler"); while ($row = $result->fetch_assoc()) { echo "<option value='" . $row['id'] . "'>" . $row['isim'] . "</option>"; } $conn->close(); ?> </select> <br> <input type="submit" value="Ekle"> </form> </body> </html>

PHP Kodu (kurs_ekle.php)

<?php // Veritabanı bağlantısı $servername = "localhost"; $username = "kullanici_adiniz"; $password = "sifreniz"; $dbname = "veritabani_adiniz"; // Bağlantıyı oluştur $conn = new mysqli($servername, $username, $password, $dbname); // Bağlantıyı kontrol et if ($conn->connect_error) { die("Bağlantı başarısız: " . $conn->connect_error); } // Formdan gelen verileri kontrol et if ($_SERVER["REQUEST_METHOD"] == "POST") { $isim = $_POST['isim']; $aciklama = $_POST['aciklama']; $fiyat = $_POST['fiyat']; $kategori_ids = $_POST['kategori_id']; // Kursu ekle $stmt = $conn->prepare("INSERT INTO kurslar (isim, aciklama, fiyat) VALUES (?, ?, ?)"); $stmt->bind_param("ssd", $isim, $aciklama, $fiyat); if ($stmt->execute()) { $kurs_id = $stmt->insert_id; // Yeni eklenen kursun ID'sini al // Seçilen kategorileri ekle foreach ($kategori_ids as $kategori_id) { $stmt2 = $conn->prepare("INSERT INTO kurs_kategori (kurs_id, kategori_id) VALUES (?, ?)"); $stmt2->bind_param("ii", $kurs_id, $kategori_id); $stmt2->execute(); $stmt2->close(); } echo "Yeni kurs ve kategorileri eklendi!"; } else { echo "Kurs eklenemedi: " . $stmt->error; } // Sorgu nesnesini kapat $stmt->close(); } // Bağlantıyı kapat $conn->close(); ?>

4. Açıklama

  • HTML Formu: Kullanıcıdan kurs ismini, açıklamasını, fiyatını ve kategorilerini alır. Kategoriler, çoklu seçim yapılabilecek bir select kutusunda gösterilir (multiple özelliği ile).

  • PHP Kodu: Formdan gelen verileri alır, önce kursu kurslar tablosuna ekler. Ardından, seçilen kategori ID'lerini kurs_kategori tablosuna ekleyerek kursun hangi kategorilere ait olduğunu belirtir.

5. Kullanım

  1. kategoriler tablosuna birkaç kategori eklemelisiniz.
  2. Yukarıdaki HTML formunu bir dosyaya (örneğin, kurs_ekle_form.php) kaydedin.
  3. PHP kodunu başka bir dosyaya (örneğin, kurs_ekle.php) kaydedin.
  4. Web sunucunuzda bu dosyaları çalıştırarak kurs ekleme ve kategori atama işlemini deneyin.

Bu adımlarla, kurslar ile kategoriler arasında çoka çok ilişkiyi yönetebileceğiniz bir uygulama oluşturmuş oldunuz.

Bu Dersi Değerlendirin

Bu ders size yardımcı oldu mu? Puan verin!

Geri bildiriminiz içeriğimizi sürekli güncel ve kaliteli tutmamızı sağlar.

4.9 / 5 (Toplam 14 oy kullanıldı)

Sıkça Sorulan Sorular (SSS)

Bu ders ve konuyla ilgili en çok merak edilenler

Php 8 Çoka Çok Tablo Tasarımı dersini öğrenmek için ön koşul var mı?

Bu eğitim temel seviyeden ileri seviyeye adım adım hazırlanmıştır. Kodları kopyalayıp Canlı Editör üzerinde test ederek kolayca pratik yapabilirsiniz.

Örnek kodları kendi projelerimde ücretsiz kullanabilir miyim?

Evet, PHP Hocası üzerindeki tüm kod örnekleri açık kaynak mantığıyla sunulmaktadır. Ticari veya kişisel projelerinizde serbestçe kullanabilirsiniz.

Takıldığım bir yerde nereden soru sorabilirim?

Dersin altındaki topluluk yorumları bölümünden sorunuzu sorabilirsiniz. Eğitmenlerimiz ve topluluk üyelerimiz kısa sürede yanıt verecektir.

Paylaş:
PHP Hocası Akademi

Topluluk Yorumları (0)

Ders Hakkında Yorum Yap veya Soru Sor

Henüz yorum yapılmamış. İlk yorumu siz yazın!