繁体   English   中英

PHP $ _GET来自同一页面上的网址

[英]PHP $_GET from url on same page

我正在用PHP进行分页,但是遇到了一些问题。 我进行了分页,并且一切正常,但是我想要的是在页面上添加一个表单,用户可以在其中输入每个页面上他想要多少个项目。 问题是,当我输入页数(例如3)时,它可以正常工作并列出3个项目,但是当我单击“下一页”时,它再次列出了默认的元素数(2)。 我已经搜索了所有内容,但找不到真正的问题。 我对php有点陌生,所以我想我还没有得到一些东西,但是我希望对您而言,看看这一点并告诉我您的想法没有太大的麻烦。 提前致谢! 我这样做是这样的:

形成:

<?php
    print("
        <form style='padding-left:5px;' method='get'>Broj komponenti po stranici:<input type='text' name='cpp'   /><input class='button3' type='submit' name='cppb' value='Promijeni' /></form>
    ");

检查cpp中是否存储了某些内容:

$rec_limit = ($_GET['cpp']);
if(!(isset($_GET['cpp']))) { $rec_limit = 2; } //if there is no  cpp set, let it be 2 (default)

就在这里是数据库和分页部分(我不认为这是造成麻烦的部分):

$sql = "SELECT count(id) FROM komponenta ";
$retval = mysql_query($sql, $conn);
if(!$retval) {
    die('Could not get data: ' . mysql_error());
}
$row = mysql_fetch_array($retval, MYSQL_NUM );
$rec_count = $row[0];
$max_pages = ($rec_count / $rec_limit) -1;


if(isset($_GET{'page'}) ) {
    $page = $_GET{'page'} + 1;
    $offset = $rec_limit * $page ;
} else {
    $page = 0;
    $offset = 0;
}
$left_rec = $rec_count - ($page * $rec_limit);

$sql = "SELECT * ".
    "FROM komponenta ".
    "LIMIT $offset, $rec_limit";

$retval = mysql_query($sql, $conn);
if(!$retval) {
    die('Could not get data: ' . mysql_error());
}
print("<TABLE class='tablica' border=‘1’>");
print("<TR>");
print("<TD></TD>");
print("<TD>Vrsta</TD>");
print("<TD>Proizvođač</TD>");
print("<TD>Frekv</TD>");
print("<TD>Izlazna</TD>");
print("<TD>Dobavljač</TD>");
print("<TD>Status</TD>");
print("<TD>Datum kupnje</TD>");
print("<TD>Datum zaprimanja</TD>");
print("<TD>Opis</TD>");
print("<TD>Napomena</TD>");
print("<TD>Komada</TD>");
print("<TD>Metara</TD>");
print("</TR>");

$br=0;
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
    print("<TR>");
    print("<TD>". $br . "</TD>");
    print("<TD>". $row["1"]. "</TD>");
    print("<TD>" . $row["2"]. "</TD>");
    print("<TD>" . $row["3"]. "</TD>");
    print("<TD>" . $row["4"]. "</TD>");
    print("<TD>" . $row["5"]. "</TD>");
    print("<TD>" . $row["6"]. "</TD>");
    print("<TD>" . $row["7"]. "</TD>");
    print("<TD>" . $row["8"]. "</TD>");
    print("<TD>" . $row["9"]. "</TD>");
    print("<TD>" . $row["10"]. "</TD>");
    print("<TD>" . $row["11"]. "</TD>");
    print("<TD>" . $row["12"]. "</TD>" );
    print("</TR>");
    $br++;
} 
print("</TABLE>");

这是困扰我的部分:

if( $page >= $max_pages ) {
    $last = $page - 2;
    echo "<b class='paragraf1'>Page: ". $page ." </b><a class='button3' href=\"protected_page.php?page=$last?cpp=$rec_limit\"><text class='buttontxt'>Last " . $rec_limit . " Records</text></a>";
    /*with ?cpp=$rec_limit i set the url
    (when i press "next") to have for eg ..."?cpp=3"... and it does appear so,
    but the $_GET['cpp'] from the beggining of code obviously doesn't read this..
    Well, at least it doesn't store it into $rec_limit*/
} else if($page > 0) {
    $last = $page - 2;
    echo "<b class='paragraf1'>Page: ". $page ." </b><a class='button3' href=\"protected_page.php?page=$last?cpp=$rec_limit\"><text class='buttontxt'>Last " . $rec_limit . " Records</text></a> ";
    echo "<a class='button3' href=\"protected_page.php?page=$page?cpp=$rec_limit\"><text class='buttontxt'>Next " . $rec_limit . " Records</text></a>";
} else if($page == 0) {
    echo "<b class='paragraf1'>Page: ". $page ." </b><a class='button3' href=\"protected_page.php?page=$page?cpp=$rec_limit\"><text class='buttontxt'>Next " . $rec_limit . " Records</text></a>";
}
protected_page.php?page=$page?cpp=$rec_limit

取代第二? &

protected_page.php?page=$page&cpp=$rec_limit

当您在脚本名称后的url中传递变量时,会有一个? 然后在每个变量和另一个变量之间, &分隔。

在您的位置,我也将替换它:

    if(!(isset($_GET['cpp']))){$rec_limit=2;} 

通过:

    if(!isset($_GET['cpp']) || (int)$rec_limit<=0){ $rec_limit=2; }  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM