PHP 8 ile bir ürün düzenleme formu oluşturmak, kullanıcıların mevcut ürün bilgilerini güncelleyebilmesini sağlar. Bu rehberde, bir ürün düzenleme formunun nasıl oluşturulacağı, mevcut ürün verilerinin nasıl alınacağı ve bu verilerin güncellenerek veritabanına kaydedileceği açıklanacaktır.
1. Veritabanı Yapısı
Daha önce oluşturduğumuz products
tablosunu kullanacağız. Aşağıda tablo yapısını tekrar hatırlatacak SQL komutu verilmiştir:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL
);
2. Ürün Düzenleme Formu
Aşağıda, mevcut ürün bilgilerini güncellemek için bir HTML formu örneği verilmiştir. Form, ürün ID'sini alacak ve o ID ile ilişkili verileri düzenleyecektir.
2.1. Ürün Bilgilerini Getirme
Öncelikle, düzenlenecek ürünü bulmak için bir sorgu yazmalıyız. Kullanıcı bir ürün seçtiğinde, bu ürünün bilgileri formda gösterilecektir.
<?php
// edit_product.php
// Veritabanı bilgileri
$host = 'localhost';
$db = 'veritabani_adi';
$user = 'kullanici_adi';
$pass = 'sifre';
$charset = 'utf8mb4';
// DSN oluşturma
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Ürün ID'sini alma
if (isset($_GET['id'])) {
$id = $_GET['id'];
// Ürünü veritabanından alma
$stmt = $pdo->prepare("SELECT * FROM products WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
$product = $stmt->fetch(PDO::FETCH_ASSOC);
}
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
// Bağlantıyı kapatma
$pdo = null;
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ürün Düzenle</title>
</head>
<body>
<h1>Ürün Düzenle</h1>
<?php if ($product): ?>
<form action="edit_product.php?id=<?php echo $product['id']; ?>" method="post">
<label for="name">Ürün Adı:</label><br>
<input type="text" id="name" name="name" value="<?php echo htmlspecialchars($product['name']); ?>" required><br><br>
<label for="price">Fiyat:</label><br>
<input type="number" id="price" name="price" step="0.01" value="<?php echo htmlspecialchars($product['price']); ?>" required><br><br>
<label for="stock">Stok Miktarı:</label><br>
<input type="number" id="stock" name="stock" value="<?php echo htmlspecialchars($product['stock']); ?>" required><br><br>
<input type="submit" value="Güncelle">
</form>
<?php else: ?>
<p>Ürün bulunamadı.</p>
<?php endif; ?>
</body>
</html>
3. Verileri Güncelleme
Form gönderildiğinde, verilerin işlenmesi ve veritabanında güncellenmesi için PHP kodu eklememiz gerekiyor.
<?php
// edit_product.php
// (Önceki kod)
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Veritabanı bağlantısını tekrar oluşturma
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Formdan gelen verileri alma
$id = $_GET['id'];
$name = $_POST['name'];
$price = $_POST['price'];
$stock = $_POST['stock'];
// SQL sorgusu
$sql = "UPDATE products SET name = :name, price = :price, stock = :stock WHERE id = :id";
// Prepared statement oluşturma
$stmt = $pdo->prepare($sql);
// Değerleri bağlama
$stmt->bindParam(':name', $name);
$stmt->bindParam(':price', $price);
$stmt->bindParam(':stock', $stock);
$stmt->bindParam(':id', $id);
// Sorguyu çalıştırma
$stmt->execute();
echo "Ürün başarıyla güncellendi!";
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
// Bağlantıyı kapatma
$pdo = null;
}
?>
Açıklamalar
-
HTML Formu:
- Form, mevcut ürün bilgilerini düzenlemek için kullanılır. Ürün adı, fiyatı ve stok miktarı gibi alanlar bulunmaktadır.
- Form,
GET
yöntemiyle gelen ürün ID'sini kullanarak güncellenen ürünün ID'sini içerir.
-
Veri Alma:
- Form gönderildiğinde,
$_POST
süper globali aracılığıyla form verileri alınır. - Ürün bilgileri, veritabanından çekilerek formda gösterilir.
- Form gönderildiğinde,
-
Veri Güncelleme:
-
UPDATE
SQL sorgusu, kullanıcının girdiği yeni verileri veritabanında günceller. - Prepared statements, güvenliği artırmak için kullanılır.
-
-
Başarı Mesajı:
- Güncelleme işlemi başarılı olduğunda kullanıcıya bilgi verilir.
Sonuç
Bu örnek, PHP 8 ile bir ürün düzenleme formunun nasıl oluşturulacağını ve mevcut ürün bilgilerini güncelleyerek veritabanına kaydetmeyi göstermektedir. Geliştirmek isterseniz, form doğrulama, kullanıcı geri bildirimleri ve hata yönetimi gibi ek özellikler ekleyebilirsiniz.