2012-07-09 64 views
0

這不是重複的條目。我讀過以前的帖子,內容相同,但我找不到解決方案。這就是爲什麼我決定發佈這個。
分頁錯誤 - >未定義索引

編輯02

<!-- language: lang-php --> 

    <?php 



if (isset($_POST['lab_id']) && is_numeric($_POST['lab_id'])) 
    {   
    $lab_id = $_POST['lab_id']; 
    } 
else if (isset($_GET['lab_id']) && is_numeric($_GET['lab_id'])) 
    {   
    $lab_id = $_GET['lab_id']; 
    } 


//$targetpage = "view_all_chemicallab.php";  
    $limit  = 2; 

    $query = "SELECT COUNT(*) as num FROM chemical 
JOIN lab_inventory_chemical ON chemical.chemical_code = lab_inventory_chemical.chemical_code 
WHERE lab_inventory_chemical.lab_id= '$lab_id' ";   // this is line 71 
    $total_pages = mysql_fetch_array(mysql_query($query)); 
    $total_pages = $total_pages['num']; 

    $stages = 3; 
    $page =isset($_GET['name'])?mysql_escape_string($_GET['page']): ''; 
    if($page){ 
     $start = ($page - 1) * $limit; 
    }else{ 
     $start = 0;  
     }  

    // Get page data 
    $query1 = "SELECT * FROM chemical 
JOIN lab_inventory_chemical ON chemical.chemical_code = lab_inventory_chemical.chemical_code 
WHERE lab_inventory_chemical.lab_id='$lab_id' LIMIT $start, $limit"; //this is line 86 
    $result = mysql_query($query1); 

    // Initial page num setup 
    if ($page == 0){$page = 1;} 
    $prev = $page - 1;  
    $next = $page + 1;        
    $lastpage = ceil($total_pages/$limit);   
    $LastPagem1 = $lastpage - 1;      


    $paginate = ''; 
    if($lastpage > 1) 
    {  


    // $paginate.= "<a href='$targetpage?page=$counter'>$counter</a> 

     $paginate .= "<div class='paginate'>"; 
     // Previous 
     if ($page > 1){ 
      $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$prev'>previous</a>"; 
     }else{ 
      $paginate.= "<span class='disabled'>previous</span>"; } 



     // Pages  
     if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up 
     {  
      for ($counter = 1; $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page){ 

        $paginate.= "<span class='current'>$counter</span>"; 
       }else{ 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=1&page=$counter'>$counter</a>";} 
       // $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
      } 
     } 
     elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few? 
     { 
      // Beginning only hide later pages 
      if($page < 1 + ($stages * 2))   
      { 
       for ($counter = 1; $counter < 4 + ($stages * 2); $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         //$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>"; 
         $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$counter'>$counter</a>";}      
       } 
       $paginate.= "..."; 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$LastPagem1'>$LastPagem1</a>"; 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$lastpage'>$lastpage</a>";   
      } 
      // Middle hide some front and some back 
      elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2)) 
      { 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=1'>1</a>"; 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=2'>2</a>"; 
       $paginate.= "..."; 
       for ($counter = $page - $stages; $counter <= $page + $stages; $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$counter'>$counter</a>";}      
       } 
       $paginate.= "..."; 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$LastPagem1'>$LastPagem1</a>"; 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$lastpage'>$lastpage</a>";   
      } 
      // End only hide early pages 
      else 
      { 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=1'>1</a>"; 
       $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=2'>2</a>"; 
       $paginate.= "..."; 
       for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page){ 
         $paginate.= "<span class='current'>$counter</span>"; 
        }else{ 
         $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$counter'>$counter</a>";}      
       } 
      } 
     } 

       // Next 
     if ($page < $counter - 1){ 
      $paginate.= "<a href='view_all_chemicallab.php?lab_id=$lab_id&page=$next'>next</a>"; 
     }else{ 
      $paginate.= "<span class='disabled'>next</span>"; 
      } 


    $paginate.= "</div>"; 

} 


// get results from database 
    // $result = mysql_query("SELECT * FROM members") 
     //   or die(mysql_error()); 

     // display data in table 
     echo "<div>"; 
     echo "<table id='table1'>"; 
     echo "<tr> <th>Chemical Name</th> <th>Chemical Code</th> <th>Type</th> <th>Edit</th><th>Delete</th><th>Stock</th> </tr>"; 

     // loop through results of database query, displaying them in the table 
     while($row = mysql_fetch_array($result)) 
     { 

       // echo out the contents of each row into a table 
       echo "<tr>"; 
       echo '<td>'. $row['name'] . '</td>'; 
       echo '<td>' . $row['chemical_code'] . '</td>'; 
       echo '<td>' . $row['type'] . '</td>'; 
       echo '<td><a href="editchemical.php?chemical_code=' . $row['chemical_code'] . '">Edit</a></td>'; 
       echo "<td><a href=\"delete_chemical.php?chemical_code=" . $row['chemical_code'] ."\" * onclick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td>"; 
       echo '<td><a href="stock_chemical.php?chemical_code=' . $row['chemical_code'] . '">Stock</a></td>'; 
       echo "</tr>"; 


     } 
     echo "</table>"; 
     echo $paginate; 
     echo "</div>"; 


    ?> 

我有在PHP分頁的問題。我已經花了3天的時間,但我找不到錯誤。所以最後決定向你們尋求幫助。這種分頁腳本簡單的查詢,比如Select * from employee。但是,當我在mysql查詢中使用連接時出現錯誤(第一頁沒有錯誤,但是當我點擊分頁頁面時沒有結果並且出現錯誤)。 --- ---錯誤
1.Notice:未定義變量:lab_id在F:\ Xampplite文件\ htdocs中\化學\ view_all_chemicallab.php上線71
2.Notice:未定義變量:lab_id在F:\ Xampplite文件\ htdocs目錄\化工\ view_all_chemicallab.php上線86

(誤差線使用註釋選項顯示在上面的代碼中)

請幫助我。在此先感謝

回答

0

在腳本的頂部定義$ lab_id = null;希望它能爲你工作。

+0

都能跟得上它doent :( – viddz 2012-07-09 05:16:52

0

它看起來像你的​​變量通過一個表格發送POST。在你的分頁鏈接中,你不再提及它。所以當你點擊鏈接時,服務器不再知道查詢是什麼。您需要像其他變量($targetPage$counter)一樣再次將它傳遞迴頁面,以便您的查詢仍能夠被寫入 - 或者保留其中的會話或cookie或其他內容。

此外,您的代碼很容易發生注入式攻擊。你真的應該改變你的代碼來使用PDOMysqli。不應使用舊的mysql_query類型命令。

編輯:試試這個在標題:

if (isset($_POST['lab_id']) && is_numeric($_POST['lab_id'])) 
{   
    $lab_id = $_POST['lab_id']; 
} 
else 
{ 
    if(!isset($_GET['lab_id'])) 
    { 
     $lab_id=""; 
     // this means that the query will fail and you need to 
     // make sure that your script never gets to here 
    } 
    else 
    { 
     // Do any other checking/verification here 
     $lab_id=$_GET['lab_id']; 
    } 
} 

這將確保lab_id始終設置(雖然它可能會仍然是空的,看到上面的代碼)。但隨後在$targetpage變量,有這樣的事情:

$targetpage = "view_all_chemicallab.php?lab_id=".$lab_id; 

編輯2: 你將不得不修改一些代碼的鏈接,以便在href標籤不作出包含兩個?在他們如$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>因爲已經有一個?在變量$targetpage中。

編輯3: 你此刻的代碼是:

$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>"

的問題是,$targetpage已經在上文中被定義爲:

$targetpage = "view_all_chemicallab.php?lab_id=".$lab_id;

當你結合這意味着兩個你最終會得到:

$paginate.= "<a href='view_all_chemicallab.php?lab_id=1?page=$counter'>$counter</a>" // I used lab_id as 1 fot this example

這是一個無效的鏈接。傳遞多個參數的方法是將它們與&符號結合使用。這將爲PAGINATE但是工作:

$paginate.= "<a href='$targetpage&page=$counter'>$counter</a>"

這將導致該鏈接的存在:

<a href='view_all_chemicallab.php?lab_id=1&page=$counter'>$counter</a>

這是正確的方式來形成它。

+0

$ targetpage = 「view_all_chemicallab.php lab_id = {$ _ REQUEST [ 'lab_id']}?」;我這樣做butsame結果 – viddz 2012-07-09 05:20:51

+0

在編輯2,A HREF鏈路不能:'HREF = 「somepage.php?link = 1?page = 2」'我的意思是你必須看看你的代碼來糾正它,以便它顯示出上面的鏈接,比如'href =「somepage.php?link = 1&page = 2「'。你不能在鏈接中使用兩次?更多的參數是通過'&'符號連接的 – Fluffeh 2012-07-09 06:19:16

+0

對不起,以前的評論中有我的錯誤,這是正確的,我試過編輯1 - >我得到了正確數量的分頁頁面,但是當我點擊它們時沒有任何反應沒有得到任何結果,只有表格標題顯示,特別是沒有錯誤
我沒有得到你在編輯02中說過的。我不是母語英語 – viddz 2012-07-09 06:23:37