PHP和JS在多页面环境中
我提前道歉,因为这有点长。 我一直试图弄清楚这一点没有成功,所以我想发布我的大部分代码,以便帮助我的神奇人物可以更好地了解我在做什么。 在我的上一篇文章中向我建议 – 不能在表单POST上调用.js – 我创建了一个新线程
我有一个项目,所有代码都发生在一个页面,html,php,javascript和一堆SQL查询。 我试图摆脱这一点,使用单独的页面,并将AJAX纳入其中,这样我就可以更新数据库,这是页面的核心,无需刷新。
我有两个主要页面 – test.php和getuser.php ,以及两个较小的位, update.php和update.js 。
test.php是我首先加载的页面。 它分为两个
,顶部div,其中包含一个SQL查询到我的数据库以选择一个用户,以及底部div,当从下拉菜单中选择一个用户时,启动脚本showUser(),并向getuser.php发送一个AJAX请求,以加载下面的其余页面。
test.php的
body { padding-top: 50px; padding-bottom: 20px; } function showUser(str) { if (str !==".PM") { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } } xmlhttp.open("GET","getuser.php?q="+str,true); xmlhttp.send(); } Select a name from the dropdown menu above...
getuser.php
body { padding-top: 50px; padding-bottom: 20px; } <?php $q = $_GET['q']; include('./db.php'); $LimitStart = 0 ; $LimitItems = 10 ; //THIS IS THE SQL COMMAND THAT ACTUALLY GRABS THE CORRECT PM $sqlPM= "SELECT * FROM report WHERE PMName = '".$q."' and REGNSB 0.000 ORDER BY TrackNumber ASC Limit $LimitStart,$LimitItems"; $result = mysqli_query($con, $sqlPM); // THIS IS FOR THE PAGE COUNT TOTAL OF THAT SPECIFIC PM $sqlCommand = "SELECT COUNT(*) FROM report where PMName = '".$q."' AND REGNSB 0.000"; $query = mysqli_query($con, $sqlCommand) or die(mysqli_error()); $pages = mysqli_fetch_row($query); $totalPages = round($pages[0] / 10); mysqli_free_result($query); if (isset($_POST['previous'])) { $postedLimit = (isset($_POST['previous']) ? (int) $_POST['previous'] : 0); $prevLimit = 1; $_SESSION['page'] = ((int) $nextLimit / 10)+1; $result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB 0.000 ORDER BY TrackNumber ASC Limit $LimitStart,$LimitItems"); } if (isset($_POST['next'])) { $postedLimit = (isset($_POST['next']) ? (int) $_POST['next'] : 0); $nextLimit = $postedLimit + 10; $_SESSION['page'] = ((int) $nextLimit / 10)+1; $result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB 0.000 ORDER BY TrackNumber ASC, RegNSB DESC Limit $nextLimit,$LimitItems"); } if (isset($_SESSION['page'])) { } else { $_SESSION['page'] = 1 ; } ?> DW1 Invoice-Backlog Report