【问题标题】:Returning same value of array in DB even after refresh即使刷新后在数据库中返回相同的数组值
【发布时间】:2018-01-03 17:30:29
【问题描述】:

有一个arr 变量保存了我在用户在视频中暂停时捕获的所有时间元素,但arr 的值在我每次刷新页面时保持不变,即使我执行活动以另一种方式。

谁能告诉我为什么数据库中的值没有改变???

以下是重定向到用于数据库连接的 PHP 文件的 HTML 文件。

HTML

 <html lang="en">
   <head>
     <title>Video.js | HTML5 Video Player</title>
     <link href="http://vjs.zencdn.net/5.19/video-js.css" rel="stylesheet">
     <script src="http://vjs.zencdn.net/ie8/1.1/videojs-ie8.min.js"></script>
     <script src="http://vjs.zencdn.net/5.19/video.js"></script>
     <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" 
             integrity="sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g=" 
             crossorigin="anonymous"></script>
   </head>

   <body> 
     <video id="example_video_1" class="video-js vjs-default-skin" controls 
            preload="none" width="640" height="264" 
            poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
       <source src="C:\xampp\htdocs\Ai_Edutech_trial_project\video js\video-js-
                    6.4.0\examples\simple-embed\HTML Tutorial for Beginners - 00 - 
                    Introduction to HTML.mp4" type="video/mp4">
       <track kind="captions" src="C:\xampp\htdocs\Ai_Edutech_trial_project\video 
                   js\video-js-6.4.0\examples\simple-embed\HTML Tutorial for Beginners - 00 - 
                   Introduction to HTML [English].vtt" srclang="en" label="English" default>
       <p class="vjs-no-js">To view this video please enable JavaScript, and 
          consider upgrading to a web browser that 
          <a href="http://videojs.com/html5-video-support/" 
             target="_blank">supports HTML5 video</a>
       </p>
     </video>

     <script type="text/javascript">
       function ajax_post_one(count, duration, tot_time, arr) {
         // Create our XMLHttpRequest object 
         var hr = new XMLHttpRequest();
         var url = "my_parse_file_one.php";

         alert(count);
         alert(tot_time);

         var num_pause = count;
         var tt = tot_time;
         var time_arr = arr;
         var dur = duration;
         var vars = "count=" + num_pause + "&tot_time=" + tt +
                    "&arr=" + time_arr + "&duration=" + dur;

         hr.open("POST", url, true);
         hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
         hr.onreadystatechange = function () {
           if (hr.readyState == 4 && hr.status == 200) {
             var return_data = hr.responseText;
             document.getElementById("status").innerHTML = return_data;
           }
         }

         hr.send(vars);
         document.getElementById("status").innerHTML = "processing..."; 
       }

       $(document).ready(function () {
         var player = videojs('example_video_1');
         var pause_t = 0;
         var tot_time = 0;
         var duration = 0;
         var count = 0;
         var arr = new Array();

         player.ready(function () {
           // alert("Working");
         });

         player.on("pause", function () {
           pause_t = player.currentTime();
           tot_time = tot_time + pause_t;
           arr = arr + pause_t;
         });

         player.on("play", function () {});
         player.on("play", function () {
           count = count + 1;
         });

         // This tells the total duration of the video... 
         player.one('loadedmetadata', function () {
           duration = player.duration();
         });

         var video = videojs('example_video_1').ready(function () {
           var player = this;
           player.on('ended', function () {
             alert(tot_time);
             alert(arr);
             ajax_post_one(count, duration, tot_time, arr);
           });
         });
       });
     </script>

     <p> Status down here</p>
     <div id="status"></div>
   </body>
 </html>

PHP

 <?php
   $servername = "localhost"; 
   $username = "root";
   $password = "";

   // Create connection
   $conn = new mysqli($servername, $username, $password);

   // Check connection
   if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
   } 
   echo "Connected successfully";

   // $db = mysqli_select_db("ajax", $conn);

   // Selecting Database
   mysqli_select_db($conn,"videojs"); 

   //MySQL Query to read datao
   $num_pause =($_POST['count']);
   $tot_time =($_POST['tot_time']);
   $time_arr =($_POST['arr']);
   $duration =($_POST['duration']);

   echo "$num_pause";
   echo "$tot_time";

   $sql = "INSERT INTO info (num_pause, duration, tot_time, time_arr)
   VALUES ('$num_pause', '$tot_time','$duration','$time_arr')";
   if ($conn->query($sql) === TRUE) {
     echo "New record created successfully";
   } else {
     echo "Error: " . $sql . "<br>" . $conn->error;
   }
 ?>

【问题讨论】:

  • 是从sql中吐出错误信息吗?
  • 没有错误消息,“arr”变量正在存储正确的值,可以在警报消息中看到,并且在 php 文件中也可以看到正确的值,我使用 echo 进行检查,但在数据库中,它的值对于每个事件。
  • 尝试改变 arr= arr +pause_t;到 arr.push(pause_t);
  • 它在执行任何事件时将数据库中的值更改为 1 是否存在我声明的一些错误... var arr = new Array();在暂停功能之外??????

标签: javascript php arrays ajax mysqli


【解决方案1】:

我认为您的 php 有错误,要从数据库更新一些数据,请使用“UPDATE”,而不是“INSERT”。您可以使用 jquery $.post 进行 POST 请求,方便。用于测试 php 代码直接从浏览器控制台提供不同的数据

var address = './my_parse_file_one.php';
var data = {count:11, tot_time:11, arr:11, duration:11};
$.post(address, data, function(response){
    console.log(response);
});

【讨论】:

  • 不,它会更新我数据库的所有值,但“arr”的值仍然保持不变...... :(
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2018-02-13
  • 1970-01-01
  • 2012-05-12
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
相关资源
最近更新 更多