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 * のような単純なクエリを実行します。しかし、mysqlクエリで結合を使用するとエラーが発生します(最初のページにはエラーはありませんが、ページ分割されたページをクリックすると結果が表示されず、エラーが発生します)。---エラー---
1.通知: 未定義の変数: 71 行目の F:\xampplite\htdocs\chem\view_all_chemicallab.php の lab_id
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 などを保持することもできます。

また、コードはインジェクション攻撃を受けやすくなります。PDOまたはMysqliを使用するようにコードを変更する必要があります。古い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 タグに 2 つの ? が含まれないように、コード内のリンクの一部を変更する必要があります。それら$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;

つまり、2 つを組み合わせると、次のようになります。

$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 に答える