重新加载动态网站后php没有回显sql表

Posted

技术标签:

【中文标题】重新加载动态网站后php没有回显sql表【英文标题】:php not echoing sql table after reload dynamic website 【发布时间】:2018-03-14 13:12:32 【问题描述】:

你好,我正在编写一个简单的动态网站,其中 div.container 的内容由 jquery 动态加载,因为我还需要在不重新加载页面的情况下更新 url,所以我使用这个脚本:

function ChangeUrl(page, url) 
  if (typeof (history.pushState) != "undefined") 
    var obj =  Page: page, Url: url ;
    history.pushState(obj, obj.Page, obj.Url);
  


$('ul.menu li a').on('click', function()
    var page = $(this).attr('href');
    var pageUrl = page.split("/");
    pageUrl = pageUrl[1];

    $('.container').load(page + '.php', function()
      //fadeout old content
      //fadein new content
    );

    ChangeUrl('Page1', '?page=' + page);

    return false;
)

此脚本还允许我重新加载 (cmd+r // ctrl+r) 具有确切 div 内容的页面。 现在的问题是我写了一个特定的页面,其中在 div.content 中我显示了一个 sql 表:

<div class="section-inner main-content page">
 <?php
   $pdo = new PDO('mysql:host=localhost;port=8889;dbname=Table','user','pass');
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $smtm = $pdo->query("SELECT item1, item2, item3,item4 FROM Table");
   echo '<table border="1">'."\n";
   while ($row = $smtm->fetch(PDO::FETCH_ASSOC)) 
     echo "<tr><td>";
     echo($row['item1']);
     echo("</td><td>");
     echo($row['item2']);
     echo("</td><td>");
     echo($row['item3']);
     echo("</td><td>");
     echo($row['item4']);
     echo("</td></tr>\n");
   
   echo "</table>\n";
 ?>
</div>

但是当我从浏览器重新加载此页面时,表格不会显示。 有什么建议吗?

【问题讨论】:

您是说重新加载时不显示,但第一次显示?您的 PHP 代码在哪里?它返回什么?您是否称您的数据库为“表”? dbname=Table 是的,是的,第一次显示没有问题……所以我猜所有的变量都是正确的 【参考方案1】:

如果你想重新加载之前加载的页面,在刷新你的主页时,只需将其保存在 cookie 中

  function ChangeUrl(page, url) 
  if (typeof (history.pushState) != "undefined") 
    var obj =  Page: page, Url: url ;
    history.pushState(obj, obj.Page, obj.Url);
  


$('ul.menu li a').on('click', function()
    var page = $(this).attr('href');
    // Save your cookie here
    document.cookie = "lastpage=" + page;
    var pageUrl = page.split("/");
    pageUrl = pageUrl[1];

    $('.container').load(page + '.php', function()
      //fadeout old content
      //fadein new content
    );

    ChangeUrl('Page1', '?page=' + page);

    return false;
)
// When page is loaded
$(document).ready(function() 
    var lastpage = getCookie("lastpage");
    if (lastpage) 
        // Do the load stuff
    
);

希望这会有所帮助!

你会在那里找到 getCookie 和 setCookie 函数:https://www.w3schools.com/js/js_cookies.asp

【讨论】:

我正在研究以前从未使用过的 cookie,但与此同时:为什么我不需要使用 cookie 来重新加载其他与数据库无关的内容?他们加载得很好......【参考方案2】:

在 php 中,您可以关闭 php 标签编写 html 或 js 代码,然后通过打开 php 标签再次继续。喜欢;

$row = mysql_fetch_array($query, MYSQL_ASSOC);    
while($mysql_num_rows($query))
    ?>
    <table>
    <td><? echo $row[col1]; ?></td>
    <td><? echo $row[col2]; ?></td>
    <?
    

and go on....

不,您可以通过将此 php 文件动态加载到您的 div 中来轻松显示您的 html 代码。

$('div').load('url.....');

【讨论】:

我更正了我的代码,因为问题实际上不是表格格式,而是刷新页面时它不会重新加载的事实...... 如果你动态加载它,你可以用一些变量设置js的“$(document).ready(function()”来检查是否匹配并用$(...).reload(url ) 函数。【参考方案3】:

即使认为 cookie 建议非常有效,我还是找到了解决问题的最简单方法(我找到了 here)

我现在初始化 pdo 连接,包括 pdo.php:

require_once (__DIR__.'/pdo.php');

我在其中复制:

$pdo = new PDO('mysql:host=localhost;port=8889;dbname=Table','user','pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

指定__DIR__以确保在页面加载时解决相对路径。

希望对你有帮助

【讨论】:

以上是关于重新加载动态网站后php没有回显sql表的主要内容,如果未能解决你的问题,请参考以下文章

如何动态回显php $ _GET变量的多个结果

使用php在一段时间后动态更改网站背景

网站框架的动态编译的实现原理

在 AWS Amplify 控制台上部署为 SPA 后,Nuxtjs 动态路由在页面重新加载时不起作用

在 ipad 中查看动态 Flash 网站

使用 phonegap 将动态网站转换为应用程序