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 天时间,但我找不到错误。所以最后决定向你们寻求帮助。这个分页脚本简单的查询,比如从员工中选择 *。但是当我在 mysql 查询中使用 join 时它会出错(第一页没有错误。但是当我单击分页页面时没有结果并且存在错误)。---错误---
1.注意:未定义变量:F:\xampplite\htdocs\chem\view_all_chemicallab.php 中的lab_id 71
2.注意:未定义变量:F:\xampplite\htdocs\chem\view_all_chemicallab 中的lab_id .php 在第 86 行

(错误行通过使用注释选项显示在上面的代码中)

请帮我。提前致谢

4

2 回答 2

0

在脚本的顶部定义 $lab_id = null; 希望它对你有用。

于 2012-07-09T04:56:18.230 回答
0

看起来您的$lab_id变量是通过POST表单发送的。在您的分页链接中,您不再提及它。因此,当您单击链接时,服务器不再知道查询是什么。$targetPage您需要像其他变量(和)一样将其再次传递回页面,$counter以便您的查询仍然能够被写入 - 或者在其中保留会话、cookie 或其他内容。

此外,您的代码容易受到注入攻击。您确实应该更改代码以使用PDOMysqlimysql_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.= "<a href='$targetpage&page=$counter'>$counter</a>"

这将导致链接为:

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

这是形成它的正确方法。

于 2012-07-09T04:57:26.837 回答