• 10-05-2024, 16:05:03
    #1
    Merhaba, yapmak istediğim olay basit, combobox tan kategori seçince o kategoriye ait videolarımı listeleyeceğim, her video için de izlenme geçmişi oluşturacağım, atıyorum ahmet xxx videosunu 15 saniye izlemiş , mehmet xxx vdeosunu 50 saniye izlemiş, ahmet abc videosunu 13 saniye izlemiş mehmet abc videosunu 13 saniye izlemiş. yapmak istediğim bu ama kodda hata alıyorum.

    javascript kodum bu


      function videolarıGetir() {
                var kategori_id = document.getElementById("kategori").value;
                if (kategori_id !== "") {
                    $.ajax({
                        type: "POST",
                        url: "videolari_getir.php",
                        data: { kategori_id: kategori_id },
                        success: function(response) {
                            $("#videolar").html(response);
                        }
                    });
                } else {
                    $("#videolar").empty();
                }
            }
           
    
    
    
    
    
    
            function izlenmeKaydet(video_id, videoElement) {
        if (videoElement && videoElement.duration && !isNaN(videoElement.duration)) {
            var izlenme_suresi = Math.round(videoElement.duration);
            $.ajax({
                type: "POST",
                url: "izlenme_kaydet.php",
                data: { video_id: video_id, izlenme_suresi: izlenme_suresi },
                success: function(response) {
                    console.log(response); // Başarılı veya hata mesajını konsola yazdır
                }
            });
        } 
    }
    $(document).ready(function() {
        // Video oynatıcılarına izleme kaydetme olayını ekle
        $("video").each(function() {
            var video_id = this.id;
            var video = this;
            // Video yüklendiğinde izleme süresini kaydetme olayını ekle
            video.addEventListener('loadedmetadata', function() {
                // Oynatıcı durduğunda veya video bittiğinde izlenme süresini kaydet
                video.addEventListener('play', function() {
                    var interval = setInterval(function() {
                        if (!video.paused && !video.ended) {
                            izlenmeKaydet(video_id, video);
                        } else {
                            clearInterval(interval);
                        }
                    }, 1000); // Her saniye kontrol et
                });
            });
        });
    });

    index.php


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Kategoriye Göre Videolar</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    </head>
    <body>
        <h2>Kategoriye Göre Videolar</h2>
        <select id="kategori" onchange="videolarıGetir()">
            <option value="">Kategori Seçiniz</option>
            <option value="1">Kategori 1</option>
            <option value="2">Kategori 2</option>
            <option value="3">Kategori 3</option>
            <!-- Diğer kategori seçenekleri buraya eklenebilir -->
        </select>
        <div id="videolar"></div>
        <script>
            function videolarıGetir() {
                var kategori_id = document.getElementById("kategori").value;
                if (kategori_id !== "") {
                    $.ajax({
                        type: "POST",
                        url: "videolari_getir.php",
                        data: { kategori_id: kategori_id },
                        success: function(response) {
                            $("#videolar").html(response);
                        }
                    });
                } else {
                    $("#videolar").empty();
                }
            }
           
    
    
    
    
    
    
            function izlenmeKaydet(video_id, videoElement) {
        if (videoElement && videoElement.duration && !isNaN(videoElement.duration)) {
            var izlenme_suresi = Math.round(videoElement.duration);
            $.ajax({
                type: "POST",
                url: "izlenme_kaydet.php",
                data: { video_id: video_id, izlenme_suresi: izlenme_suresi },
                success: function(response) {
                    console.log(response); // Başarılı veya hata mesajını konsola yazdır
                }
            });
        } 
    }
    $(document).ready(function() {
        // Video oynatıcılarına izleme kaydetme olayını ekle
        $("video").each(function() {
            var video_id = this.id;
            var video = this;
            // Video yüklendiğinde izleme süresini kaydetme olayını ekle
            video.addEventListener('loadedmetadata', function() {
                // Oynatıcı durduğunda veya video bittiğinde izlenme süresini kaydet
                video.addEventListener('play', function() {
                    var interval = setInterval(function() {
                        if (!video.paused && !video.ended) {
                            izlenmeKaydet(video_id, video);
                        } else {
                            clearInterval(interval);
                        }
                    }, 1000); // Her saniye kontrol et
                });
            });
        });
    });
    
    
    
    
    
    
    
    
    
        </script>
    </body>
    </html>

    videolari_getir.php


    <?php
    // Veritabanı bağlantısı
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "video";
    // 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);
    }
    // Kategori ID'sini al
    $kategori_id = $_POST['kategori_id'];
    // Videoları veritabanından al
    $sql = "SELECT * FROM videos WHERE kategori_id = '$kategori_id'";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        // Her bir video için video etiketi oluştur
        while($row = $result->fetch_assoc()) {
            echo '<video id="video_' . $row["id"] . '" controls>';
            echo '<source src="' . $row["src"] . '" type="video/mp4">';
            echo 'Your browser does not support the video tag.';
            echo '</video>';
            echo '<script>';
            echo 'document.getElementById("video_' . $row["id"] . '").addEventListener("play", function() {';
            echo 'izlenmeKaydet(' . $row["id"] . ');';
            echo '});';
            echo '</script>';
        }
    } else {
        echo "Bu kategoriye ait video bulunamadı.";
    }
    // Bağlantıyı kapat
    $conn->close();
    ?>

    izlenme_kaydet.php


    <?php
    // Veritabanı bağlantısı
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "video";
    // 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);
    }
    // Gelen verileri al
    $video_id = $_POST['video_id'];
    $izlenme_suresi = $_POST['izlenme_suresi'];
    // İzlenme geçmişini kaydet
    $sql = "INSERT INTO izlenme_gecmisi (video_id, izlenme_suresi) VALUES ('$video_id', '$izlenme_suresi')";
    if ($conn->query($sql) === TRUE) {
        echo "İzlenme geçmişi kaydedildi.";
    } else {
        echo "Hata: " . $sql . "<br>" . $conn->error;
    }
    // Bağlantıyı kapat
    $conn->close();
    ?>
  • 11-05-2024, 11:36:49
    #2
    Aldığın hatayı paylaşabilirmisin