<?php
// Hata raporlamayı etkinleştir
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Veritabanı bağlantısı
$servername = "localhost";
$username = "root";
$password = "12341234";
$dbname = "panel";
// Bağlantıyı oluştur
$conn = new mysqli($servername, $username, $password, $dbname);
// Bağlantıyı kontrol et
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
// Oturum başlatma işlemini kontrol edin ve sadece bir kez başlatıldığından emin olun
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// Kullanıcı ID'sini oturumdan al
if (!isset($_SESSION['id']) || empty($_SESSION['id'])) {
echo "Oturumda kullanıcı ID'si bulunamadı. Lütfen oturum açtığınızdan emin olun.<br>";
$conn->close();
exit;
}
$musteri_id = $_SESSION['id'];
// Kullanıcının mevcut bakiyesini al
$stmt = $conn->prepare("SELECT bakiye, sunucu FROM musteri WHERE id = ?");
$stmt->bind_param("i", $musteri_id);
$stmt->execute();
$stmt->bind_result($bakiye, $musteri_sunucu);
if (!$stmt->fetch()) {
echo "Kullanıcı bulunamadı veya geçersiz kullanıcı ID'si.<br>";
$stmt->close();
$conn->close();
exit;
}
$stmt->close();
// Seçili sunucu ID'lerini al
$sunucu_ids = isset($_POST['sunucu_ids']) ? $_POST['sunucu_ids'] : [];
if (!empty($sunucu_ids)) {
$total_cost = 0;
$sunucu_ids_to_update = [];
// Fiyatları hesapla ve toplam maliyeti bul
foreach ($sunucu_ids as $sunucu_id) {
$stmt = $conn->prepare("SELECT fiyat FROM sunucu WHERE id = ?");
$stmt->bind_param("i", $sunucu_id);
$stmt->execute();
$stmt->bind_result($fiyat);
if (!$stmt->fetch()) {
echo "Geçersiz sunucu ID'si: $sunucu_id.<br>";
$stmt->close();
continue;
}
$stmt->close();
$total_cost += (float)$fiyat; // Fiyatı float olarak işleyin
$sunucu_ids_to_update[] = $sunucu_id;
}
// Toplam maliyeti ve bakiyeyi yazdır
echo "Toplam maliyet: " . number_format($total_cost, 2) . "<br>";
echo "Mevcut bakiye: " . number_format((float)$bakiye, 2) . "<br>";
// Bakiyeyi kontrol et
if ((float)$bakiye >= $total_cost) {
// Bakiye güncelle
$new_bakiye = $bakiye - $total_cost;
$stmt = $conn->prepare("UPDATE musteri SET bakiye = ? WHERE id = ?");
$stmt->bind_param("di", $new_bakiye, $musteri_id);
if ($stmt->execute()) {
// Sunucuları güncelle
foreach ($sunucu_ids_to_update as $sunucu_id) {
// Kiralık olarak işaretle
$stmt = $conn->prepare("UPDATE sunucu SET kiralik = 1 WHERE id = ?");
$stmt->bind_param("i", $sunucu_id);
if (!$stmt->execute()) {
echo "Sunucu (ID: $sunucu_id) bilgileri güncellenirken bir hata oluştu.<br>";
}
// Kullanıcının sahip olduğu sunucu ID'sini güncelle
$new_sunucu_ids = ($musteri_sunucu) ? $musteri_sunucu . ',' . $sunucu_id : $sunucu_id;
$stmt = $conn->prepare("UPDATE musteri SET sunucu = ? WHERE id = ?");
$stmt->bind_param("si", $new_sunucu_ids, $musteri_id);
if (!$stmt->execute()) {
echo "Sunucu (ID: $sunucu_id) bilgileri güncellenirken bir hata oluştu.<br>";
}
}
echo "Seçili sunucular başarıyla satın alındı ve kaydedildi.";
} else {
echo "Bakiye güncellenirken bir hata oluştu.";
}
} else {
echo "Yeterli bakiyeniz yok. Toplam maliyet: " . number_format($total_cost, 2) . ", mevcut bakiye: " . number_format((float)$bakiye, 2);
}
} else {
echo "Seçili sunucu bulunamadı.";
}
$conn->close();
?>
bu kod Oturumda kullanıcı ID'si bulunamadı. Lütfen oturum açtığınızdan emin olun. böyle diyor nasıl çözerim ?