PHP 8 ile kursların kategori ataması yapabilmek için öncelikle iki temel tablo oluşturmanız gerekiyor: bir "kategoriler" tablosu ve bir "kurslar" tablosu. Bu işlem, her kursun bir kategoriye atanmasını sağlayacak. Aşağıda, gerekli adımları açıklayacağım.
1. Veritabanı Tablolarını Oluşturma
Öncelikle, gerekli veritabanı tablolarını 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),
kategori_id INT,
FOREIGN KEY (kategori_id) REFERENCES kategoriler(id)
);
2. HTML Kurs Ekleme Formu ile Kategori Seçimi
Kullanıcının kurs eklerken bir kategori seçebilmesi için HTML formunu güncelleyelim. Aşağıda, kurs ekleme formuna kategori seçimi eklenmiş hali bulunmaktadır:
<!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" 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>
3. PHP Kodu (kurs_ekle.php)
Formdan gelen verileri işleyerek yeni bir kurs eklemek için bir PHP dosyası oluşturalım:
<?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_id = $_POST['kategori_id'];
// Prepared sorgu oluştur
$stmt = $conn->prepare("INSERT INTO kurslar (isim, aciklama, fiyat, kategori_id) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssdi", $isim, $aciklama, $fiyat, $kategori_id);
// Sorguyu çalıştır
if ($stmt->execute()) {
echo "Yeni kurs eklendi!";
} else {
echo "Kurs eklenemedi: " . $stmt->error;
}
// Sorgu nesnesini kapat
$stmt->close();
}
// Bağlantıyı kapat
$conn->close();
?>
4. Açıklama
- Kategoriler Tablosu: Her bir kategori için bir kayıt tutulur.
-
Kurslar Tablosu: Her kursun hangi kategoriye ait olduğunu belirtmek için
kategori_id
alanı eklenmiştir. Bu alan,kategoriler
tablosundakiid
alanına referans eder. - HTML Formu: Kurs eklerken, kullanıcıdan kurs ismi, açıklaması, fiyatı ve kategorisini alır. Kategoriler veritabanından çekilip, dropdown menü (select) olarak sunulur.
-
PHP Kodu: Formdan gelen verileri alır ve yeni bir kursu veritabanına ekler.
kategori_id
alanı, kullanıcının seçtiği kategoriye göre ayarlanır.
5. Kullanım
-
kategoriler
tablosuna birkaç kategori eklemelisiniz. - Yukarıdaki HTML formunu bir dosyaya (örneğin,
kurs_ekle_form.php
) kaydedin. - PHP kodunu başka bir dosyaya (örneğin,
kurs_ekle.php
) kaydedin. - Web sunucunuzda bu dosyaları çalıştırarak kursları kategori ile birlikte ekleme işlemini deneyin.
Bu adımlarla, kursların kategori ataması yapılmasını sağlayan bir uygulama oluşturmuş oldunuz.