【问题标题】:Pagination undefined index分页未定义索引
【发布时间】:2015-11-09 00:28:59
【问题描述】:

您好,我这里有一个代码,它将搜索名称然后返回分页结果。我在第 19 行和第 20 行遇到错误

注意:未定义索引: 在第 19 行的 C:\xampp\htdocs\eventreg\trypaginate2.php 中提交 - 现在可以

注意:未定义索引: 在第 20 行的 C:\xampp\htdocs\eventreg\trypaginate2.php 中搜索 - 现在可以

但它正在工作。当我转到下一页时,它不会显示任何结果,只是一个空白页。

这是我的html代码:

            <html>
            <head>
            <title>Title of your search engine</title>
            </head>
            <body>
            <form action='trypaginate2.php' method='POST'>
            <center>
            <h1>My Search Engine</h1>
            <input type='text' size='90' name='search'></br></br>
            <input type='submit' name='submit' value='Search source code' ></br></br></br>
            </center>
            </form>
            </body>
            </html>

然后这里是php代码:

                            <?php

                if(array_key_exists('search', $_GET))
                {
                    echo "hello";
                    $search = $_GET['search'];
                    echo "$search";
                }
                  if(isset($_POST['submit']))
                  {
                if(array_key_exists('search', $_POST))
                {
                    echo "hi";
                    $search = $_POST['search'];
                }
                  }


            if(strlen($search)<=1)
            echo "Search term too short";

            else
                {
            echo "You searched for <b>$search</b> <hr size='1'></br>";

            include("dbcon.php");

            $search_exploded = explode (" ", $search);

            $x = "";
            $construct = "";  

            foreach($search_exploded as $search_each)
                    {
                        $x++;
                        if($x==1)
                        $construct .="name LIKE '%$search_each%'";
                        else
                        $construct .="AND name LIKE '%$search_each%'";

                    }
             echo $construct;
            $constructs ="SELECT * FROM reginformation WHERE $construct";
            $run = mysql_query($constructs);

            $foundnum = mysql_num_rows($run);

            if ($foundnum==0)
            echo "Sorry, there are no matching result for <b>$search</b>.</br></br>1. 
            Try more general words. for example: If you want to search 'how to create a website'
            then use general keyword like 'create' 'website'</br>2. Try different words with similar
             meaning</br>3. Please check your spelling";
            else
                    { 

            echo "$foundnum results found !<p>";

            $per_page = 5;
            $start = isset($_GET['start']) ? $_GET['start']: '';
            $max_pages = ceil($foundnum / $per_page);
            if(!$start)
            $start=0; 
            $getquery = mysql_query("SELECT * FROM reginformation WHERE $construct LIMIT $start, $per_page");

            /*while($runrows = mysql_fetch_assoc($getquery))
                        {
                            $title = $runrows ['regID'];
                            $desc = $runrows ['name'];
                            $url = $runrows ['address'];

                            echo "
                            <a href='$url'><b>$title</b></a><br>
                            $desc<br>
                            <a href='$url'>$url</a><p>
                            ";
                        }*/

              if(mysql_num_rows($getquery)>0)
                        {
                    while ($row = mysql_fetch_assoc($getquery)) {
                    // echo data
                    echo "<tr onClick =window.location='infodetailsresp.php?id=$row[regID]'><td>$row[name]</td><td>$row[emailadd]</td><td>$row[contactno]</td><td>$row[event]</td><td>$row[date_register]</td></tr><br>";

                    } // end while
                        }
                    else
                        {
                            echo ("<SCRIPT LANGUAGE='JavaScript'>
                                window.alert('No record found.');
                                window.location.href='reglistresp.php';
                            </SCRIPT>");
                        }

            //Pagination Starts
            echo "<center>";

            $prev = $start - $per_page;
            $next = $start + $per_page;

            $adjacents = 3;
            $last = $max_pages - 1;

            if($max_pages > 1)
                        {   
            //previous button
            if (!($start<=0)) 
            echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$prev'>Prev</a> ";    

            //pages 
            if ($max_pages < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
                            {
            $i = 0;   
            for ($counter = 1; $counter <= $max_pages; $counter++)
                                {
            if ($i == $start)
                {
                    echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
                }
            else 
                {
                    echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'>$counter</a> ";
                }  
            $i = $i + $per_page;                 
                                }
                            }
            elseif($max_pages > 5 + ($adjacents * 2))    //enough pages to hide some
                {
            //close to beginning; only hide later pages
            if(($start/$per_page) < 1 + ($adjacents * 2))        
                    {
            $i = 0;
            for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                        {
            if ($i == $start)
                {
                    echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
                }
            else 
                {
                    echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'>$counter</a> ";
                } 
            $i = $i + $per_page;                                       
                        }

                    }
            //in middle; hide some front and some back
            elseif($max_pages - ($adjacents * 2) > ($start / $per_page) && ($start / $per_page) > ($adjacents * 2))
                {
                    echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=0'>1</a> ";
                    echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$per_page'>2</a> .... ";

                    $i = $start;                 
                    for ($counter = ($start/$per_page)+1; $counter < ($start / $per_page) + $adjacents + 2; $counter++)
                    {
                        if ($i == $start)
                        {
                            echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
                        }
                        else 
                        {
                            echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'>$counter</a> ";
                        }   
                        $i = $i + $per_page;                
                    }

                }
            //close to end; only hide early pages
            else
            {
                echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=0'>1</a> ";
                echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$per_page'>2</a> .... ";

                $i = $start;                
                for ($counter = ($start / $per_page) + 1; $counter <= $max_pages; $counter++)
                {
                    if ($i == $start)
                    {
                        echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'><b>$counter</b></a> ";
                    }
                    else 
                    {
                        echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$i'>$counter</a> ";   
                    } 
                    $i = $i + $per_page;              
                }
            }
                }

            //next button
            if (!($start >=$foundnum-$per_page))
            echo " <a href='trypaginate2.php?search=$search&submit=Search+source+code&start=$next'>Next</a> ";    
                        }   
            echo "</center>";
                    } 
                } 

            ?>

编辑! 更改了我的 php 代码现在我在第 34 行遇到错误。错误是
注意:未定义变量:在 C:\xampp\htdocs\ 中搜索eventreg\trypaginate2.php 第 34 行

【问题讨论】:

标签: php pagination


【解决方案1】:

您不应该通过盲目地将变量分配给这些值甚至使用isset 来检查数组中是否存在键(这就是 $_POST 和 $_GET ) - 即使我知道这看起来会感觉。这就是 PHP 向您发送警告的行为。该错误来自于尝试查找诸如 $_POST['search'] 或 $_GET['submit'] 之类的值,而这些值未在该数组中设置。

改为使用array_key_exists('submit', $_GET)array_key_exists('search', $_POST) 来检查是否设置了这些值。如果该表达式的计算结果为 true,那么您可以继续在代码中访问这些值,并且您应该不会在日志中收到任何通知。

【讨论】:

  • 实际上,使用array_key_exists 而不是isset 的原因实际上比我想象的要微妙和不重要,但是在检查是否或之前绝对不应该访问这些值如果这是您尝试设置的工作流程,它们不存在于数组中。
  • 感谢您的想法。你能帮我解决另一个问题吗?当我转到下一页时,我没有得到任何结果
  • 首先,您不需要拥有所有代码来处理获取和发布请求。您可以在 HTML 中将表单中的方法更改为使用“GET”而不是“POST”,这样您就可以始终获得 GET。无论如何,关于未定义索引的通知可能与您的其他问题无关。可能还有其他一些错误导致页面无法显示。当你说它不显示时,你的意思是没有任何 HTML 被渲染?如果是这种情况,那么日志中可能还有其他内容。
  • 如果某些 HTML 被渲染,但没有任何结果,那么您可以尝试将 $_GET 数组或 mysql 查询的输出打印到页面,看看它们在第一页之间有何不同和后续页面。
猜你喜欢
  • 2015-12-08
  • 1970-01-01
  • 2014-04-10
  • 2012-12-08
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 2018-08-02
相关资源
最近更新 更多