2014-02-23 82 views
0

我在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>"; 
} 

回答

1
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; } 
+0

哦,我的上帝,你是在跟我開玩笑。我在這上面花了大約3個小時。我是一個小菜鳥,我應該知道這一點。非常感謝你!我愛你! – user3243547

+0

當你的聲望是911時,你保存了@ user3243547的生命。這很有趣。現在我要用銳利的眼神來解決它。 – Floris

+0

hehehheheehe謝謝你們:) – CodeBird