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();
?>