Sırayla gidelim. Öncelikle veritabanı yapısını oluşturmamız lazım.
Veritabanı yapısı
-
Musteriler
– Musteri_id (int)
– Musteri adi (String)
– musteri soyadi (String)
– musteri telefonu (String)
– musteri mail (String)
– musteri sifresi (String)
– create (timestamp)
– update (timestamp)
-
Tiyatro Oyunlari
– Tiyatro_id (int)
– Tiyatro basligi (String)
– Tiyatro aciklamasi (String)
– Tiyatro resmi (String)
– Tiyatro zamani (timestamp)
– Tiyatro ucreti (String)
– create (timestamp)
– update (timestamp)
-
Sepet_gecici
– sepet_g_id (int)
– Tiyatro_id (int)
– Musteri_id (int)
– Koltuk numarasi (int)
– seans saati (timestamp)
– salon (int)
– tarih (timestamp)
– aciklama (String)
– create (timestamp)
– update (timestamp)
-
Satilanlar
– sepet_id (int)
– Tiyatro_id (int)
– Musteri_id (int)
– Koltuk numarasi (int)
– seans saati (timestamp)
– salon (int)
– tarih (timestamp)
– aciklama (String)
– Ucret (String)
– create (timestamp)
– update (timestamp)
Mysql ile bu tablo yapısını hazırlayalım:
-- Musteriler tablosu
CREATE TABLE Musteriler (
Musteri_id INT AUTO_INCREMENT PRIMARY KEY,
Musteri_adi VARCHAR(255) NOT NULL,
Musteri_soyadi VARCHAR(255) NOT NULL,
Musteri_telefonu VARCHAR(20),
Musteri_mail VARCHAR(255),
Musteri_sifresi VARCHAR(255),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Tiyatro_Oyunlari tablosu
CREATE TABLE Tiyatro_Oyunlari (
Tiyatro_id INT AUTO_INCREMENT PRIMARY KEY,
Tiyatro_basligi VARCHAR(255) NOT NULL,
Tiyatro_aciklamasi TEXT,
Tiyatro_resmi VARCHAR(255),
Tiyatro_zamani TIMESTAMP,
Tiyatro_ucreti VARCHAR(20),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Sepet_gecici tablosu
CREATE TABLE Sepet_gecici (
sepet_g_id INT AUTO_INCREMENT PRIMARY KEY,
Tiyatro_id INT,
Musteri_id INT,
Koltuk_numarasi INT,
seans_saati TIMESTAMP,
salon INT,
tarih TIMESTAMP,
aciklama TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (Tiyatro_id) REFERENCES Tiyatro_Oyunlari(Tiyatro_id),
FOREIGN KEY (Musteri_id) REFERENCES Musteriler(Musteri_id)
);
-- Satilanlar tablosu
CREATE TABLE Satilanlar (
sepet_id INT AUTO_INCREMENT PRIMARY KEY,
Tiyatro_id INT,
Musteri_id INT,
Koltuk_numarasi INT,
seans_saati TIMESTAMP,
salon INT,
tarih TIMESTAMP,
aciklama TEXT,
Ucret VARCHAR(20),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (Tiyatro_id) REFERENCES Tiyatro_Oyunlari(Tiyatro_id),
FOREIGN KEY (Musteri_id) REFERENCES Musteriler(Musteri_id)
);
Musteri ekleme sayfasi
Bu alanda oncelikle bir veritabani baglanti dosyasi olusturacagiz, boylece bunu diger sayfalarda da kullanabiliriz. Sonrasinda Musteri ekleme sayfasi (bootstrap) ve ekle dedigimizde bilgileri veritabanina gonderecek olan php dosyasi. Sirayla gidelim.
Elbette, güvenli bir uygulama geliştirmek için PDO (PHP Data Objects) kullanarak MySQL bağlantısı ve SQL sorguları gerçekleştirmek önemlidir. Aşağıda, PDO kullanarak MySQL bağlantısı kurma ve müşteri ekleme işlemi için bir örnek bulunmaktadır.
PDO ile MySQL bağlantısı kurma (db_connection.php):
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "sifre";
$dbname = "veritabani_adi";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
// Hata modunu etkinleştir
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// İsteğe bağlı: Sorgu sonuçlarını dizi olarak al
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
die();
}
// kayitli musterilerden birini cekiyor. Bunu idarelik yapiyorum, normalde musteri girisi sayfasi eklenmeli. Oda size kalsin :) Ben ornek ekli olan 1 id li musteriyi cekiyorum, her yerde onu kullanacagiz. Yazacaginiz giris ozelligiyle her musteri icin sessiondan islem yaptirabilirsiniz.
try {
// Tiyatro Oyunu bilgilerini al
$sql_musteri = "SELECT * FROM Musteriler WHERE Musteri_id = :Musteri_id";
$stmt = $conn->prepare($sql_musteri );
$stmt->bindParam(':Musteri_id', "1");
$stmt->execute();
$musteri = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION['musteri_id'] = $musteri["Musteri_id"];
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
Müşteri ekleme işlemi için PDO kullanımı (add_customer.php):
<?php
require_once 'db_connection.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Formdan gelen verileri al
$musteri_adi = $_POST['musteri_adi'];
$musteri_soyadi = $_POST['musteri_soyadi'];
$musteri_telefonu = $_POST['musteri_telefonu'];
$musteri_mail = $_POST['musteri_mail'];
$musteri_sifresi = $_POST['musteri_sifresi'];
try {
// SQL sorgusu
$sql = "INSERT INTO Musteriler (Musteri_adi, Musteri_soyadi, Musteri_telefonu, Musteri_mail, Musteri_sifresi)
VALUES (:musteri_adi, :musteri_soyadi, :musteri_telefonu, :musteri_mail, :musteri_sifresi)";
// PDO prepare ve execute kullanımı
$stmt = $conn->prepare($sql);
$stmt->bindParam(':musteri_adi', $musteri_adi);
$stmt->bindParam(':musteri_soyadi', $musteri_soyadi);
$stmt->bindParam(':musteri_telefonu', $musteri_telefonu);
$stmt->bindParam(':musteri_mail', $musteri_mail);
$stmt->bindParam(':musteri_sifresi', $musteri_sifresi);
// Sorguyu çalıştır
$stmt->execute();
echo "Müşteri başarıyla eklendi.";
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
}
Bu örnekte, PDO’nun avantajlarından biri olan prepared statements kullanarak SQL sorgusunu gerçekleştirdik. Bu, SQL enjeksiyon saldırılarına karşı daha güvenli bir yaklaşımdır. Ayrıca, bağlantı ve sorgu hatalarını ele almak için try-catch blokları kullanılmıştır.
HTML formu (Bootstrap kullanılarak) (musteri_ekle.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Müşteri Ekle</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<h2>Müşteri Ekle</h2>
<form action="add_customer.php" method="POST">
<div class="form-group">
<label for="musteri_adi">Müşteri Adı:</label>
<input type="text" class="form-control" id="musteri_adi" name="musteri_adi" required>
</div>
<div class="form-group">
<label for="musteri_soyadi">Müşteri Soyadı:</label>
<input type="text" class="form-control" id="musteri_soyadi" name="musteri_soyadi" required>
</div>
<div class="form-group">
<label for="musteri_telefonu">Müşteri Telefonu:</label>
<input type="text" class="form-control" id="musteri_telefonu" name="musteri_telefonu">
</div>
<div class="form-group">
<label for="musteri_mail">Müşteri Mail:</label>
<input type="email" class="form-control" id="musteri_mail" name="musteri_mail">
</div>
<div class="form-group">
<label for="musteri_sifresi">Müşteri Şifresi:</label>
<input type="password" class="form-control" id="musteri_sifresi" name="musteri_sifresi" required>
</div>
<button type="submit" class="btn btn-primary">Ekle</button>
</form>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
Sira Tiyatro oyunlarini listeleme sayfasina geldi. Tiyatro Oyunları’nı listelemek için bir HTML sayfası (Bootstrap kullanılarak) ve sunucu tarafında PHP ile listeleme işlemini gerçekleştiren örnek bir dosya:
HTML (tiyatro_oyunlari.php):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tiyatro Oyunları</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<h2>Tiyatro Oyunları</h2>
<table class="table">
<thead>
<tr>
<th>Tiyatro Adı</th>
<th>Açıklama</th>
<th>Tarih</th>
<th>Resim</th>
<th></th>
</tr>
</thead>
<tbody>
<?php include 'get_tiyatro_oyunlari.php'; ?>
</tbody>
</table>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
PHP (get_tiyatro_oyunlari.php):
<?php
require_once 'db_connection.php';
try {
// SQL sorgusu
$sql = "SELECT Tiyatro_id, Tiyatro_basligi, Tiyatro_aciklamasi, Tiyatro_zamani, Tiyatro_resmi FROM Tiyatro_Oyunlari";
$stmt = $conn->query($sql);
// Sonuçları al
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td>{$row['Tiyatro_basligi']}</td>";
echo "<td>{$row['Tiyatro_aciklamasi']}</td>";
echo "<td>{$row['Tiyatro_zamani']}</td>";
echo "<td><img src='{$row['Tiyatro_resmi']}' alt='Tiyatro Resmi' style='max-width: 100px;'></td>";
echo "<td><a href='bilet_satin_al.php?tiyatro_id={$row['Tiyatro_id']}' class='btn btn-primary'>Bilet Satın Al</a></td>";
echo "</tr>";
}
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
Bu örnekte, get_tiyatro_oyunlari.php
dosyası, Tiyatro Oyunları tablosundan verileri alıp HTML tablosu içinde listeleyen bir PHP dosyasıdır. Ayrıca, her bir tiyatro oyunu için “Bilet Satın Al” butonu eklenmiştir. Bu butona tıklandığında, kullanıcıyı bilet satın alma sayfasına yönlendirmek için bilet_satin_al.php
sayfasına tiyatro oyunu kimliği (tiyatro_id
) ile bir sorgu parametresi gönderilmektedir.
Bilet satın alma sayfasını tasarlamak için, ilgili bilgileri almak ve kullanıcıya bilet seçme seçeneklerini sunmak gibi adımları içeren bir HTML sayfası oluşturmanız gerekecek.
Tiyatro oyunu satin alma sayfasi
Bu sayfada, belirli bir tiyatro oyunu için bilet satın alma işlemi gerçekleştirilecektir.
HTML (bilet_satin_al.php):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bilet Satın Al</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<h2>Bilet Satın Al</h2>
<?php
require_once 'db_connection.php';
if (isset($_GET['tiyatro_id'])) {
$tiyatro_id = $_GET['tiyatro_id'];
try {
// Tiyatro Oyunu bilgilerini al
$sql = "SELECT * FROM Tiyatro_Oyunlari WHERE Tiyatro_id = :tiyatro_id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':tiyatro_id', $tiyatro_id);
$stmt->execute();
$tiyatro_oyunu = $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
<form action="process_bilet.php" method="POST">
<input type="hidden" name="tiyatro_id" value="<?php echo $tiyatro_id; ?>">
<div class="form-group">
<label for="film_adi">Film Adı:</label>
<input type="text" class="form-control" id="film_adi" name="film_adi" value="<?php echo $tiyatro_oyunu['Tiyatro_basligi']; ?>" readonly>
</div>
<div class="form-group">
<label for="koltuk_numarasi">Koltuk Numarası:</label>
<input type="text" class="form-control" id="koltuk_numarasi" name="koltuk_numarasi" required>
</div>
<div class="form-group">
<label for="seans_saati">Seans Saati:</label>
<input type="text" class="form-control" id="seans_saati" name="seans_saati" value="<?php echo $tiyatro_oyunu['Tiyatro_zamani']; ?>" readonly>
</div>
<div class="form-group">
<label for="salon">Salon:</label>
<input type="text" class="form-control" id="salon" name="salon" value="<?php echo $tiyatro_oyunu['Tiyatro_salon']; ?>" readonly>
</div>
<div class="form-group">
<label for="tarih">Tarih:</label>
<input type="text" class="form-control" id="tarih" name="tarih" value="<?php echo $tiyatro_oyunu['Tiyatro_zamani']; ?>" readonly>
</div>
<div class="form-group">
<label for="aciklama">Açıklama:</label>
<textarea class="form-control" id="aciklama" name="aciklama" rows="3" readonly><?php echo $tiyatro_oyunu['Tiyatro_aciklamasi']; ?></textarea>
</div>
<div class="form-group">
<label for="fiyat">Fiyat:</label>
<input type="text" class="form-control" id="fiyat" name="fiyat" value="<?php echo $tiyatro_oyunu['Tiyatro_ucreti']; ?>" readonly>
</div>
<input type="hidden" id="Musteri_id" name="Musteri_id" value="<?php echo $tiyatro_oyunu['Musteri_id']; ?>"
<button type="submit" class="btn btn-success">Bilet Satın Al</button>
</form>
<?php
} else {
echo "Geçerli bir tiyatro oyunu belirtilmedi.";
}
?>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
PHP (process_bilet.php):
<?php
require_once 'db_connection.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Formdan gelen verileri al
$tiyatro_id = $_POST['tiyatro_id'];
$koltuk_numarasi = $_POST['koltuk_numarasi'];
$Musteri_id= $_POST['Musteri_id'];
try {
// Satilanlar tablosuna ekleme işlemi
$sql = "INSERT INTO Sepet_gecici (Tiyatro_id, Koltuk_numarasi, Musteri_id)
VALUES (:tiyatro_id, :koltuk_numarasi, :Musteri_id)";
// PDO prepare ve execute kullanımı
$stmt = $conn->prepare($sql);
$stmt->bindParam(':tiyatro_id', $tiyatro_id);
$stmt->bindParam(':koltuk_numarasi', $koltuk_numarasi);
$stmt->bindParam(':Musteri_id', $musteri["Musteri_id"]);
// Sorguyu çalıştır
$stmt->execute();
echo "Bilet başarıyla satın alındı.";
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
}
?>
Bu örnekte, bilet_satin_al.php
sayfasında belirtilen tiyatro oyunu için bilet satın alma formunu oluşturduk ve ilgili bilgileri görüntüledik. Kullanıcı sadece koltuk numarasını girebilecektir. Bilet satın alındığında, process_bilet.php
sayfası bilet bilgilerini Sepet_gecici
tablosuna ekleyecektir. Gecici bolumdur, satin alinmak icin eklenen ve henuz satin alinmayan oyunlar burda kullanici id sine gore kaydedilir. Sonraki islem biletleri satin alma bolumudur. Hadi sepete gidelim.
HTML (sepet.php):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sepet</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<h2>Sepet</h2>
<?php
require_once 'db_connection.php';
if (isset($_SESSION['musteri_id'])) {
$musteri_id = $_SESSION['musteri_id'];
try {
// Sepet_gecici tablosundaki belirli müşteri_id'ye sahip kayıtları al
$sql = "SELECT sg.Koltuk_numarasi, tov.Tiyatro_basligi, tov.Tiyatro_aciklamasi, tov.Tiyatro_zamani,
tov.Tiyatro_resmi, sg.seans_saati, sg.salon, sg.tarih, sg.aciklama, sg.Ucret
FROM Sepet_gecici sg
JOIN Tiyatro_Oyunlari tov ON sg.Tiyatro_id = tov.Tiyatro_id
WHERE sg.Musteri_id = :musteri_id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':musteri_id', $musteri_id);
$stmt->execute();
$sepet_kayitlari = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($stmt->rowCount() > 0) {
?>
<table class="table">
<thead>
<tr>
<th>Tiyatro Adı</th>
<th>Açıklama</th>
<th>Tarih</th>
<th>Resim</th>
<th>Seans Saati</th>
<th>Salon</th>
<th>Ücret</th>
<th>Koltuk Numarası</th>
</tr>
</thead>
<tbody>
<?php
$toplam_fiyat = 0;
foreach ($sepet_kayitlari as $sepet_kaydi) {
echo "<tr>";
echo "<td>{$sepet_kaydi['Tiyatro_basligi']}</td>";
echo "<td>{$sepet_kaydi['Tiyatro_aciklamasi']}</td>";
echo "<td>{$sepet_kaydi['Tiyatro_zamani']}</td>";
echo "<td><img src='{$sepet_kaydi['Tiyatro_resmi']}' alt='Tiyatro Resmi' style='max-width: 100px;'></td>";
echo "<td>{$sepet_kaydi['seans_saati']}</td>";
echo "<td>{$sepet_kaydi['salon']}</td>";
echo "<td>{$sepet_kaydi['Ucret']}</td>";
echo "<td>{$sepet_kaydi['Koltuk_numarasi']}</td>";
echo "</tr>";
$toplam_fiyat += floatval($sepet_kaydi['Ucret']);
}
?>
</tbody>
</table>
<div class="alert alert-info">
<strong>Toplam Fiyat:</strong> <?php echo $toplam_fiyat; ?> TL
</div>
<form action="process_odeme.php" method="POST">
<button type="submit" class="btn btn-success">Ödeme Yap</button>
</form>
<?php
} else {
echo "<p>Sepetiniz boş.</p>";
}
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
} else {
echo "Oturum hatası. Lütfen giriş yapın.";
}
?>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
Bu versiyonda, Tiyatro_Oyunlari
tablosu ile Sepet_gecici
tablosu arasında bir JOIN işlemi gerçekleştirilmiştir. Böylece Tiyatro_Oyunlari tablosundan gelen diğer bilgiler de eklendi.
PHP (process_odeme.php):
<?php
require_once 'db_connection.php';
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_SESSION['musteri_id'])) {
$musteri_id = $_SESSION['musteri_id'];
try {
// Sepet_gecici tablosundaki belirli müşteri_id'ye sahip kayıtları al
$sql_select = "SELECT * FROM Sepet_gecici WHERE Musteri_id = :musteri_id";
$stmt_select = $conn->prepare($sql_select);
$stmt_select->bindParam(':musteri_id', $musteri_id);
$stmt_select->execute();
$sepet_kayitlari = $stmt_select->fetchAll(PDO::FETCH_ASSOC);
foreach ($sepet_kayitlari as $sepet_kaydi) {
// Satilanlar tablosuna ekleme işlemi
$sql_insert = "INSERT INTO Satilanlar (Tiyatro_id, Musteri_id, Koltuk_numarasi, seans_saati, salon, tarih, aciklama, Ucret)
VALUES (:tiyatro_id, :musteri_id, :koltuk_numarasi, :seans_saati, :salon, :tarih, :aciklama, :ucret)";
// PDO prepare ve execute kullanımı
$stmt_insert = $conn->prepare($sql_insert);
$stmt_insert->bindParam(':tiyatro_id', $sepet_kaydi['Tiyatro_id']);
$stmt_insert->bindParam(':musteri_id', $musteri_id);
$stmt_insert->bindParam(':koltuk_numarasi', $sepet_kaydi['Koltuk_numarasi']);
$stmt_insert->bindParam(':seans_saati', $sepet_kaydi['seans_saati']);
$stmt_insert->bindParam(':salon', $sepet_kaydi['salon']);
$stmt_insert->bindParam(':tarih', $sepet_kaydi['tarih']);
$stmt_insert->bindParam(':aciklama', $sepet_kaydi['aciklama']);
$stmt_insert->bindParam(':ucret', $sepet_kaydi['Ucret']);
// Sorguyu çalıştır
$stmt_insert->execute();
}
// Sepet_gecici tablosundaki kayıtları sil
$sql_delete = "DELETE FROM Sepet_gecici WHERE Musteri_id = :musteri_id";
$stmt_delete = $conn->prepare($sql_delete);
$stmt_delete->bindParam(':musteri_id', $musteri_id);
$stmt_delete->execute();
echo "Ödeme başarıyla tamamlandı.";
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
} else {
echo "Oturum hatası. Lütfen giriş yapın.";
}
}
?>
Bu düzeltilmiş versiyonda, process_odeme.php
dosyası içinde, Sepet_gecici
tablosundaki bilgilerin Satilanlar
tablosuna eklenmesi ve ardından Sepet_gecici
tablosundan ilgili kayıtların silinmesi işlemleri yapılmıştır.
Sanirim bu kadar yardim baslamak icin yeterli olacaktir. Para ustu kisimlarini anlamadim, ama bu asamadan sonra basit olacaktir. Sirayla ilerlerseniz halledebilirsiniz. Takildiginiz yerde yada problemde buradan yazarsaniz yardimci olurum gun icerisinde.