şimdi bu kodlar ile çark çevirdiğinde sweetalert ile manuel girilen kodları gösteriyordum. sonra bu kodları otomatik oluşturup sql de kaydını alıyorum ama sweetalert kısmında ise json için koyduğum sunucu hatası ekrana basıyor ama konsolda json veriyi görüyorum ne yapmam gerek anlamadım
<?php session_start(); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Kullanıcı giriş durumu $girisYapildiMi = isset($_SESSION['kullanici_id']) ? true : false; $cevirmeHakki = 0; // Kod üretme fonksiyonu function rastgeleKodUret($uzunluk = 8) { return substr(str_shuffle("ABCDEFGHJKLMNPQRSTUVWXYZ23456789"), 0, $uzunluk); } // Kod kayıt işlemi if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) { try { $kod = rastgeleKodUret(); $aciklama = $_POST['aciklama'] ?? 'Kazandı'; $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)"); $stmt->execute([ 'kullanici_id' => $_SESSION['kullanici_id'], 'kod' => $kod, 'aciklama' => $aciklama ]); // Başarılı işlemi döndür echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama]); } catch (Exception $e) { // Hata durumunda JSON döndür echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()]); } exit; } // Eğer giriş yapılmışsa if ($girisYapildiMi) { $userId = $_SESSION['kullanici_id']; // Çark hakkını veritabanından sorgula $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id"); $stmt->bindParam(':id', $userId); $stmt->execute(); $cevirmeHakki = (int)$stmt->fetchColumn(); // Çark hakkı değeri // AJAX ile gelen çark çevirme isteğini işleme if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cevir'])) { if ($cevirmeHakki > 0) { // Çark hakkını 1 azalt $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id"); $stmt->bindParam(':id', $userId); $stmt->execute(); echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']); } exit; } } ?> <!-- Modal --> <?php if ($girisYapildiMi) { ?> <div class="modal fade custommodal" id="denemeSinavBasvuru" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <svg data-dismiss="modal" xmlns="http://www.w3.org/2000/svg" width="35px" height="35px"> <path fill-rule="evenodd" fill="rgb(244, 153, 51)" d="M32.975,23.311 L27.188,17.523 L32.975,11.736 C35.644,9.067 35.644,4.740 32.975,2.071 C30.307,-0.598 25.979,-0.598 23.311,2.071 L17.523,7.858 L11.736,2.071 C9.067,-0.598 4.740,-0.598 2.071,2.071 C-0.598,4.740 -0.598,9.067 2.071,11.736 L7.858,17.523 L2.071,23.311 C-0.598,25.979 -0.598,30.307 2.071,32.975 C4.740,35.644 9.067,35.644 11.736,32.975 L17.523,27.188 L23.311,32.975 C25.979,35.644 30.307,35.644 32.975,32.975 C35.644,30.307 35.644,25.979 32.975,23.311 Z" /> </svg> <main class="cd-main-content text-center"> <link rel="stylesheet" href="cark/css/reset.css"> <link rel="stylesheet" href="cark/css/sweetalert2.min.css"> <link rel="stylesheet" href="cark/css/superwheel.min.css"> <div class="wheel-letter-spacing"></div> <?php if ($cevirmeHakki > 0): ?> <button class="btn btn-round btn-border btn-default wheel-letter-spacing-spin-button">Çevir</button> <a href="?sayfa=satinalma_sayfasi" id="satinAlBtn" style="display:none;" class="btn btn-round btn-border btn-default">Satın Al</a> <?php endif; ?> </main> </div> </div> </div> <?php } ?> <script src="cark/js/jquery-2.1.1.js"></script> <script src="cark/js/jquery.superwheel.min.js"></script> <script src="cark/js/sweetalert2.min.js"></script> <script src="cark/js/lmcark.js"></script> <script> jQuery(document).ready(function($){ let cevirmeHakki = <?= json_encode($cevirmeHakki); ?>; const olasilikliDonus = () => { const olasiliklar = [ { value: 1, oran: 90 }, { value: 0, oran: 10 } ]; let rastgele = Math.random() * 100; let toplam = 0; for (let i = 0; i < olasiliklar.length; i++) { toplam += olasiliklar[i].oran; if (rastgele <= toplam) { return olasiliklar[i].value; } } return 0; }; $('.wheel-letter-spacing').superWheel({ slices: [ { text: "ÖDÜL1", value: 1, message: "Ödül1", discount: "kazanaılanödülkod1", background: "#f1c40f", color: "#fff" }, { text: "ŞANS YOK", value: 0, message: "Bugün Şansın Yok", discount: "********", background: "#e74c3c", color: "#fff" }, { text: "ÖDÜL2<br>TASARIM<br>%30", value: 1, message: "Ödül2", discount: "kazanaılanödülkod2", background: "#2980b9", color: "#fff" }, { text: "KAYBETTİN", value: 0, message: "Kaybettin :(", discount: "********", background: "#333333", color: "#fff" }, { text: "ÖDÜL3", value: 1, message: "Ödül3 ", discount: "kazanaılanödülkod3", background: "#27ae60", color: "#fff" }, { text: "HİÇBİR ŞEY", value: 0, message: "Hiçbir şey alamıyorsun :(", discount: "********", background: "#8e44ad", color: "#fff" } ], width: 500, frame: 1, type: "spin", center: { rotate: true, image: { url: "assets/img/genel/22636.jpg", width: 25 } }, marker: { background: "#f1c40f", animate: true } }); const tick = new Audio('cark/media/tick.mp3'); $(document).on('click', '.wheel-letter-spacing-spin-button', function(e){ if (cevirmeHakki > 0) { const secilenDeger = olasilikliDonus(); $('.wheel-letter-spacing').superWheel('start', 'value', secilenDeger); $(this).prop('disabled', true); } else { Swal.fire({ title: 'Çark Hakkınız Kalmadı', text: 'Yeni hak almak için satın alma yapmalısınız.', icon: 'info' }); $(".wheel-letter-spacing-spin-button").hide(); $("#satinAlBtn").show(); } }); $('.wheel-letter-spacing').superWheel('onStart', function(){ $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...'); }); $('.wheel-letter-spacing').superWheel('onStep', function(){ if (typeof tick.currentTime !== 'undefined') tick.currentTime = 0; tick.play(); }); $('.wheel-letter-spacing').superWheel('onComplete', function(results){ if (results.value === 1) { // Kazandıysa kodu kaydet $.post('', { kod_kaydet: true, aciklama: results.message }, function(response){ try { let data = JSON.parse(response); // JSON formatta mı kontrol ediyoruz console.log("Result:", data); // Tarayıcı konsolunda görebilirsin if (data.success === true) { Swal.fire({ icon: 'success', title: 'Tebrikler!', html: `<b>Kodunuz: ${data.kod}</b><br>${data.message}` }); } else { Swal.fire({ icon: 'error', title: 'Hata!', text: data.message || 'Bir sorun oluştu, lütfen tekrar deneyin.' }); } } catch (e) { console.error('JSON Parse Hatası:', e, response); Swal.fire({ icon: 'error', title: 'Sunucu Hatası!', text: 'Beklenmeyen bir cevap alındı. Lütfen sonra tekrar deneyin.' }); } }); } else { Swal.fire({ icon: 'error', title: "Üzgünüz!", text: results.message }); } cevirmeHakki--; if (cevirmeHakki > 0) { $('.wheel-letter-spacing-spin-button:disabled').prop('disabled', false).text('Çevir'); $("#satinAlBtn").hide(); } else { $('.wheel-letter-spacing-spin-button').hide(); $('#satinAlBtn').show(); } }); }); </script> <!-- Çarkı açmak için --> <script> document.addEventListener("DOMContentLoaded", function () { const cevirBtn = document.getElementById('cevirBtn'); const girisYapildi = <?= json_encode($girisYapildiMi); ?>; const cevirmeHakki = <?= json_encode($cevirmeHakki); ?>; if (cevirBtn) { cevirBtn.addEventListener('click', function (e) { if (girisYapildi && cevirmeHakki > 0) { $('#denemeSinavBasvuru').modal('show'); $.ajax({ url: '', method: 'POST', data: { cevir: true }, success: function(response) { const data = JSON.parse(response); if (data.success) { Swal.fire({ title: 'Çark dönmeye başladı!', text: 'Şansınızı deneyin!', icon: 'success' }); } else { Swal.fire({ title: 'Çark Hakkı Yok', text: data.message, icon: 'info' }); } }, error: function() { Swal.fire({ title: 'Hata', text: 'Bir şeyler yanlış gitti!', icon: 'error' }); } }); } else if (girisYapildi && cevirmeHakki <= 0) { Swal.fire({ title: 'Çark Hakkı Yok', text: 'Çark hakkınız bitmiş. Lütfen satın alınız.', icon: 'info', showCancelButton: true, confirmButtonText: 'OK', cancelButtonText: 'Satın Al', reverseButtons: true }).then((result) => { if (result.dismiss === Swal.DismissReason.cancel) { window.location.href = '?sayfa=satinalma_sayfasi'; } }); } else { e.preventDefault(); Swal.fire({ title: 'ÇEVİRME YOK!', text: 'Çark şansınız için giriş yapınız.', icon: 'warning' }); } }); } }); </script>