Reputation: 281
I need to get the current playback time for multiple videos from database.
I want to save the playback video time in the database, so I can later set the correct position for the user when he comes in.
I am using setInterval
to fire ajax every 4 seconds. Any help please?
Code
<?php
$tl="channel";
$ooa="playing";
$played="played";
$timeline = mysqli_query($con, "SELECT * FROM plays WHERE streamers_type ='$tl' AND played !='$played' GROUP BY streamers_id ORDER BY id ASC") or die ();
while($row = mysqli_fetch_array($timeline)) {
$id = $row['id'];
$file1 = $row['file1'];
$video_name = $row['video_name'];
$video_type = $row['video_type'];
$about_video = $row['about_video'];
$streamers_type = $row['streamers_type'];
$streamers_id = $row['streamers_id'];
$time_start = $row['time_start'];
$time_stop = $row['time_stop'];
$date = $row['date'];
$streamers_name = $row['streamers_name'];
$views = $row['views'];
$played = $row['played'];
?>
<li class="col-lg-4 col-sm-5 col-xs-12 spinal">
<b style="border:1px solid; color:red; margin-left:3px!important;"><?php echo $streamers_name ?></b>
<span class="pull-right"><span id = "fhkj"><?php echo $views?></span> <i class="fa fa-eye"></i></span>
<a class="fg" title="<?php echo $video_name ?>">
<button data-toggle="modal" data-target="#modal-1" data-backdrop="static" data-keyboard="false" class="fire" id="<?php echo $id ?>">
<video class="uopi " id="<?php echo $video_name ?>" style="height:180px; width:100%!important;" autoplay muted onended="run();"><source src="plays/<?php echo $file1 ?>" type="<?php echo $video_type ?>"></video>
<h2 style="background-color:#fff;color:orange; line-height:30px; font-size:1.3em;"><?php echo $video_name ?></h2>
<span class="glyphicon glyphicon-play-circle"></span></button>
</a>
</li>
}
?>
<script type='text/javascript'> //function to update time
var vid = $('.uopi').attr('id');
var ok = vid.currentTime;
$(document).ready(function() {
setInterval(function () {
$.ajax({
type : 'POST',
url : 'updatetime.php',
data : {ok: ok}, .
success : function(r)
{
alert('Yay'); //would be commented out later dont really need any success just save
}
});
}, 4000);
})
</script>
Upvotes: 1
Views: 403
Reputation: 445
First of all, fix the SQL Injection vulnerability in your SQL query (How can I prevent SQL injection in PHP?) :P
My reply to your problem is that you could use the 'beforeunload' event. If the user click a link or close the actual tab/window the code will be executed. You can use a code like that:
window.addEventListener("beforeunload", function(e){
var vid = $('.uopi').attr('id');
var ok = vid.currentTime;
$.ajax({
type : 'POST',
url : 'updatetime.php',
data : {ok: ok},
success : function(r)
{
console.log('Yay');
}
});
}, false);
EDIT: You can also use video events like 'pause' to update the current time.
Upvotes: 1