Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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
php mysql结果分页问题_Php_Html_Mysql_Pagination - Fatal编程技术网

php mysql结果分页问题

php mysql结果分页问题,php,html,mysql,pagination,Php,Html,Mysql,Pagination,我对php mysql结果的分页有问题。用户必须能够在文本字段中输入一些内容,当按下“发送”按钮时,它必须立即显示前十个结果(现在这样做很好)。问题是链接(1、2、3等)不起作用:在某种程度上,它们返回到初始状态,即对mysql数据库中包含的所有数据进行分页 在我看来,问题在于我的这行代码:echo“-”,这里的链接出错。我已经在互联网上搜索了很多,特别是在stackoverflow.com上,寻找我的问题的可能解决方案,但我没有找到任何详尽的方法来解决我的问题。你认为我错在哪里?文件名为pro

我对php mysql结果的分页有问题。用户必须能够在文本字段中输入一些内容,当按下“发送”按钮时,它必须立即显示前十个结果(现在这样做很好)。问题是链接(1、2、3等)不起作用:在某种程度上,它们返回到初始状态,即对mysql数据库中包含的所有数据进行分页

在我看来,问题在于我的这行代码:
echo“-”,这里的链接出错。我已经在互联网上搜索了很多,特别是在stackoverflow.com上,寻找我的问题的可能解决方案,但我没有找到任何详尽的方法来解决我的问题。你认为我错在哪里?文件名为prova.php

<!-- The code may contain words taken from the Italian language -->
<html lang="it-IT">
<head>
    <link rel="icon" href="https://image.flaticon.com/icons/png/512/1427/1427106.png">
    <title>Pagination tests</title>
</head>
<body style="background: #ECF0F1;font-family: Myanmar Text;margin-top:90px;">
<form action="prova.php?page=1" method="get"><input value="<?php echo $_GET['text']; ?>" type="text" name="text"><button name="send">INVIA</button><br></form>
<?php 
include 'functions.php';
$con = mysqli_connect('localhost', 'root', '', 'cherubini');

$search = $_GET['text'];
if(isset($_GET['send'])) {
    $search = $_GET['text'];
}
$result = mysqli_query($con, "SELECT * 
                                FROM lemmi 
                                WHERE LemmaNo LIKE '%".$search."%'");
$number_of_results = mysqli_num_rows($result);

$number_of_pages = ceil($number_of_results / 10);
if(!isset($_GET['page'])) { 
    $page = 1; 
} else { 
    $page = $_GET['page']; 
}
$this_page_first_result = ($page - 1) * 10; 
$result = mysqli_query($con, "SELECT * FROM lemmi WHERE LemmaNo LIKE '%".$search."%' LIMIT ".$this_page_first_result.',10');

while ($row = mysqli_fetch_array($result)) {
    echo "<b>". highlight($search, $row['Lemma']) . '</b> ' . $row['Definizione'] . "<br>";
}

for($page = 1; $page <= $number_of_pages; $page++) {
    echo "<a href='prova.php?page=".$page."'>".$page."</a> --  ";
}
?>
</body>
</html>

分页测试

您的链接没有设置
文本
发送
,因此搜索查询将针对:

SELECT * FROM lemmi WHERE LemmaNo LIKE '%%'
您可能应该:

for($page = 1; $page <= $number_of_pages; $page++) {
    echo "<a href='prova.php?page=".$page."&text=" . htmlspecialchars($search, ENT_QUOTES) . "&send=1'>".$page."</a> --  ";
}
在那之后,这句话也没有意义,像这样的话可能会更好:

if(!isset($_GET['send'])) {
    echo 'a search term must be entered.';
} else {
    $search = $_GET['text'];
    ...continue with search code in this block
}

请参阅关于sql注入和准备好的和绑定的查询的重要性以及“准备好的和绑定的查询的重要性”,您的意思是我必须在php中使用准备好的语句,对吗?你认为这个网页对我有用吗?不,看。始终使用php.net.IMO,w3schools上的任何内容都不会对您有用。但是我有偏见。警告:您完全可以使用参数化的预处理语句,而不是手动构建查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。
if(!isset($_GET['send'])) {
    echo 'a search term must be entered.';
} else {
    $search = $_GET['text'];
    ...continue with search code in this block
}