重新加载动态网站后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表的主要内容,如果未能解决你的问题,请参考以下文章