首先描述情况。我的索引页面分为两个div区域,其中显示了我的新闻文章。左边和后面的每个部分都有一个分页,因此用户不需要刷新页面。 一切都适用于我的旧代码,现在我将这些旧代码更改为php pdo以防止sql inj。攻击蚂蚁来更新自己:)
基本上一切顺利到现在为止。也许它为时已晚或是别的,这应该是简单的解决方案,因为我已经在页面的左侧使用了解决方案。差异仅在于选择要从中选择文本的字符和类别名称。 这是代码: 工作代码,在页面的左侧部分
$offset = ($pageNum - 1) * $rowsPerPage;
$selectString = '%News-BlockLeft%';
$STH = $DBH->prepare("SELECT ... " .
"FROM News, Categories, NewsCheck " .
"WHERE Name LIKE :selectString " .
"ORDER BY `NewsDate` DESC LIMIT :offset, :rowsPerPage");
$STH->bindParam(':selectString ', $selectString, PDO::PARAM_STR);
$STH->bindParam(':offset', $offset, PDO::PARAM_INT);
$STH->bindParam(':rowsPerPage', $rowsPerPage, PDO::PARAM_INT);
$STH->execute();
这些代码将触发onclick js,它将返回第二页,如下所示
if ($pageNum > 1) {
$opage = $pageNum - 1;
$prev = "<a href=\"javascript:goToPage(" . $opage . ");\"><img src=\"/firstPage.gif\" /> </a>";
$first = "<a href=\"javascript:goToPage(" . $opage . ");\">[<<]</a>";
} else {
$prev = ''; // we're on page one, don't enable 'previous' link
$first = ' <font size=\"3\">[<<] </font>'; // nor 'first page' link
}
ajaxRequest.js
function goToPage(page) {
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null) {
alert ("Your browser does not support AJAX!");
return;
}
var url="myPageBlockLeft.php";
url=url+"?opage="+page;
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
document.getElementById('contentRight').innerHTML=xmlhttp.responseText;
initLightbox();
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
选择字符串几乎相同,在左侧工作我选择
WHERE Name LIKE :selectString
另一个不起作用的我需要选择Where Name=:selectString
希望问题不是太混乱,因为我很累,如果你需要更多信息,请询问。
答案 0 :(得分:1)
Dunno您的问题是什么,但WHERE Name='%News-BlockLeft%'
条件几乎不会返回任何行。
你需要先在mysql控制台中运行你的查询,看看它们是否正常工作 只有在那之后你才可以开始动态构建它们。
另请注意WHERE Name LIKE '%News-BlockLeft%'
是一个巨大的设计缺陷
你必须使用一些不同的参数来指定左侧块新闻,而不是这个自制的字符串比较。