【问题标题】:Php mysql is returning only the last row when i use the auto refresh当我使用自动刷新时,php mysql只返回最后一行
【发布时间】:2017-02-17 19:37:54
【问题描述】:

我有mysqli查询,当我使用下面的代码自动刷新时,它只返回所有行的最后一条记录的值,如果我不使用自动刷新,那么它工作正常。我使用自动刷新时唯一遇到的问题。

$(document).ready(function(){
  refreshTable();
});

function refreshTable(){
    $('.tableHolder').load('itemtotal_cart_checkout.php', function(){
       setTimeout(refreshTable, 1000);
    });
}

我该如何解决这个问题,请帮忙。

$ses_mem    =   $_SESSION['ses_user_id'];
$getItem    =   $_GET['item_id'];

$order_temp =   "select * from temp_cart where item_id='".$getItem."' AND ses_mem='".$ses_mem."' order by id";
$tordera = $db->query($order_temp);
$torder = $tordera -> fetch_assoc();

【问题讨论】:

    标签: javascript php jquery ajax mysqli


    【解决方案1】:

    您的 PHP 代码需要 item_id GET 参数。所以你应该从 JavaScript 传递它:

    $('.tableHolder').load('itemtotal_cart_checkout.php?item_id=' + itemId,
      function(){
         setTimeout(refreshTable, 1000);
      });
    

    以下是如何从 JavaScript 中的当前查询字符串中获取 item_id

    var m = location.search.match(/^.*[\?&]item_id\=(\d+)/);
    var itemId = m && m.length >= 2 ? m[1] : 0;
    

    但是,如果当前页面是 PHP 和 HTML 以及上面提到的 JavaScript 的混合体,那么只需将 PHP 嵌入到 JavaScript 中:

    <script>
    /* skipped original code */
    $('.tableHolder').load('itemtotal_cart_checkout.php?item_id=' + <?php
      echo isset($_GET['item_id']) ? (int) $_GET['item_id'] : 0;
    ?>,
      function(){
         setTimeout(refreshTable, 1000);
      });
    /* skipped original code */
    </script>
    

    最后,如果 JavaScript 在单独的文件中执行,那么您需要一个带有项目 ID 参数的 JavaScript 函数。例如,在某些 script.js 中,您可能具有类似于以下的函数:

    function refreshTable(itemId) {
        $('.tableHolder').load('itemtotal_cart_checkout.php?item_id=' + itemId, function() {
           setTimeout(function () { refreshTable(itemId) }, 1000);
        });
    }
    

    那么你可以这样从 PHP 中调用它:

    <script>
    $(document).ready(function(){
      refreshTable(<?php echo isset($_GET['item_id']) ? (int) $_GET['item_id'] : 0; ?>);
    });
    </script>
    

    顺便说一下,您可能希望使用setInterval 而不是递归调用setTimeout

    【讨论】:

    • 我想在 Javascript 中将 item_id 设为 ?item_id=&lt;?php echo $row_id; ?&gt; 并在 itemtotal_cart_checkout.php 中获取
    • @FahadAlmehaini,那么您需要将$_GET['item_id'] 传递给 JavaScript 代码。如果 JavaScript 代码嵌入到 PHP 脚本中(如果当前页面是 PHP、HTML 和 JavaScript 的混合体),那么只需 load('itemtotal_cart_checkout.php?item_id=' + &lt;?php echo $_GET['item_id']; ?&gt; ...
    • 能否请您根据它调整代码。很抱歉
    【解决方案2】:

    通过此代码将item_id 变量传递给php:

    $(document).ready(function(){
      refreshTable();
    });
    
    function refreshTable(){
        $('.tableHolder').load('itemtotal_cart_checkout.php<?php echo '?item_id=1'; ?>', function(){
           setTimeout(refreshTable, 1000);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 2015-10-08
      • 2016-04-14
      相关资源
      最近更新 更多