Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ';查看更多信息';从数据库中显示的每100篇文章的php页面链接_Javascript_Php_Mysqli - Fatal编程技术网

Javascript ';查看更多信息';从数据库中显示的每100篇文章的php页面链接

Javascript ';查看更多信息';从数据库中显示的每100篇文章的php页面链接,javascript,php,mysqli,Javascript,Php,Mysqli,我有一个PHP页面,它从DB表中提取数据,并输出echo。但是,当表列大约为1000到5000或更多时,页面加载速度太慢,需要几分钟的时间 我试图在页面底部添加一个查看更多链接,每点击100篇文章,查看更多链接就会显示另外100篇文章 我知道由于某些原因我不想采用分页方式。 希望我能清楚地解释我的情况 我的代码如下: <html> <head> <?php include('db.php'); ?> </head> <body>

我有一个PHP页面,它从DB表中提取数据,并输出echo。但是,当表列大约为1000到5000或更多时,页面加载速度太慢,需要几分钟的时间

我试图在页面底部添加一个查看更多链接,每点击100篇文章,查看更多链接就会显示另外100篇文章

我知道由于某些原因我不想采用分页方式。

希望我能清楚地解释我的情况

我的代码如下:

   <html>
<head>
<?php include('db.php'); ?>

</head>
<body>

<?php 
$page = 0;

if(isset($_GET["Page"])){
   $page = $_GET["Page"];
}
    $sql2 = "SELECT * FROM smf_log_digest WHERE note_type = 'topic' ORDER BY id_msg DESC";
    $result2 = $conn->query($sql2);
    if ($result2->num_rows > 0) { 
    while($row2 = $result2->fetch_assoc()) { 
        $number = $row2["id_msg"];
?>
<?php 
    $sql3 = "SELECT * FROM smf_messages WHERE id_msg = $number AND id_board = 4 LIMIT 100 OFFSET " . $page * 100;
    $result3 = $conn->query($sql3);
    if ($result3->num_rows > 0) { 
        while($row3 = $result3->fetch_assoc()) { 
        $member = $row3["id_member"];
        $replies = $row3["id_topic"];
?>
<script>
var page = 0;

function GetData(){
    page++;

    var xhr = new XMLHttpRequest();
    xhr.open('GET', "/getData?page="+page, true);
    xhr.send();

    xhr.onreadystatechange = processRequest;

    function processRequest(e) {
        if (xhr.readyState == 4) {
             <?php echo substr($row3['body'], 0, 150); ?>
        }
    }
}
</script>


<?php     }
    } else {
        echo "";
    }
?>
<?php     }
    } else {
        echo "";
    }
?>
<div onclick="GetData()">Show More</div>
</body>
</html>


修改您的查询以包含一个“页面”计数器,该计数器将作为“显示更多”的点击次数来计算查询的偏移量

$page = 0;

if(isset($_GET["Page"])){
   $page = $_GET["Page"];
}

"SELECT * FROM smf_messages WHERE id_msg = $number AND id_board = 4 LIMIT 100 OFFSET " . $page * 100; 
现在,JavaScript,向php页面发出请求,我称之为“getData”,并在计数器中包含Get参数

var page = 0;

function GetData(){
    page++;

    var xhr = new XMLHttpRequest();
    xhr.open('GET', "/getData?page="+page, true);
    xhr.send();

    xhr.onreadystatechange = processRequest;

    function processRequest(e) {
        if (xhr.readyState == 4 && xhr.status == 200) {
            // Append the results here.
        }
    }
}
您希望在每次单击DOM时都运行此函数

<div onclick="GetData()">Show More</div>
您可以使用
document.body.innerHTML+=

因此,您的最终函数现在将变为

function processRequest(e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
        document.body.innerHTML += xhr.responseText;
    }
}
我在php文件中添加了结束括号,以结束while循环和if语句。 如果不想使用括号,则需要确保从未打开过括号以避免语法错误,如果不将括号放在括号中,则只有下一行对应于loop/If语句,以防您不知道


快乐学习。

如果你使用关键词“分页”,你应该能够找到足够多的原理解释。如果您不想转到不同的结果“页面”,而是将新条目附加到当前页面的现有条目下,那么将AJAX加入其中。嘿,谢谢您的时间。我试过你的方法,但我好像错过了什么。。请检查更新的问题。谢谢等待您的答复。@HarishKolliparat是的,您没有将数据添加到页面本身。。。查看注释“//将结果附加到此处”。您还需要将php分离到单独的文件中,否则将把整个HTML文档附加到文档中。您甚至没有更改Ajax url。正如我所说的,我不会用勺子喂你完整的代码,做点努力吧。你已经需要做一些小的改变了。很抱歉打扰你,基本上,我是一名化学工程师。这是我个人的兴趣。请看更新的问题。到目前为止,这是我所理解的。再次感谢您的时间。@HarishKolliparat答案是正确的,但您必须使用JavaScript附加结果。当页面加载时,PHP在服务器上运行,您需要客户端代码来处理AJAX结果。@HarishKolliparat请参阅我的编辑。我还介绍了如何集成“动态”加载内容的其他信息。
function processRequest(e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
        // Append the results here.
    }
}
function processRequest(e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
        document.body.innerHTML += xhr.responseText;
    }
}