PHP没有从表单返回数据


PHP not returning data from form

这会让我抓狂,因为这可能是我错过的东西,但我有一个表单,用户可以选择一个国家和联赛名称,并返回一个找到的结果表。

我遇到的问题是,如果提交了搜索表单,它不会返回任何结果,但如果我只是正常刷新页面而不提交,它会正常工作并返回所有结果。正如你在下面看到的,如果表单还没有提交,它会设置$subbaguesearch和$countrysearch变量,这很好,只是在提交时没有,我似乎找不到原因。任何帮助都会很棒!谢谢

p.s我没有收到任何错误消息,只是根本没有返回任何信息。在表单提交后,我已经将变量回显到屏幕上,它们用正确的值回显,所以我知道变量设置得很好!。

       <form action="" method="post" autocomplete="off">
        <table id="searchsubleaguetable" width="670px" align="left" cellpadding="1" cellspacing="0">    
                    <tr colspan="2">
                    <th colspan="2" align="left"><label>SEARCH SUBLEAGUES</th>
                    </tr>
                    <tr>
                    <td align="right"><label>COUNTRY&nbsp;&nbsp;</td>
                    <td align="left"><SELECT NAME="country" style="font-size:12px; padding:4px;"><OPTION VALUE="0">All Countries<?php echo $options;?></option></SELECT></label></td>
                    </tr>
                    <tr>
                    <td align="right"><label>SEARCH&nbsp;&nbsp;</td>
                    <td align="left"><input class="searchinputs" type="text" name="subleaguesearch" size="40" value=""></label></td>
                    </tr>
                    <tr width="100%" height="20px" colspan="2">
                    <td align="right"><label></td>
                    <td align="left"><input class="searchbutton" type="submit" value="Search" name="searchsubnow"></label></td>
                    </tr>
                </table>
            </form>


      if (isset($_POST['searchsubnow'])){
           $subleaguesearch = mysql_real_escape_string($_POST['country']);
           $countrysearch = mysql_real_escape_string($_POST['subleaguesearch']);        
           if($countrysearch == 0){
           $countrysearch = "%%";
           }
        }else{
           $subleaguesearch = "";
           $countrysearch = "%%";
        }
        $rowsPerPage = 15;
        $pageNum = 1;
        if(isset($_GET['page'])){
            $chosenpage = mysql_real_escape_string($_GET['page']);
            $pageNum = $chosenpage;
        }
        $offset = ($pageNum - 1) * $rowsPerPage;
        $result = mysql_query(" SELECT s.league_id, s.leaguename, s.private, s.date, u.flag, u.firstname, u.country,
                                COALESCE(SUM(r.total_points),0) as totalpoints,
                                count(m.member_id) participants
                                from sub_leagues s
                                Left Join members_leagues m
                                On m.league_id = s.league_id  
                                Left Join member_results r
                                On r.member_id = m.member_id
                                join members u
                                on s.admin = u.member_id
                                WHERE u.country LIKE '$countrysearch'
                                AND s.leaguename LIKE '$subleaguesearch%'
                                Group By s.league_id
                                Order By r.total_points DESC, participants DESC, s.date ASC " . " LIMIT $offset, $rowsPerPage") 
                        or die ("<br/>&nbsp;Error - could not display league");

想象你的问题在这个代码中:

$subleaguesearch = mysql_real_escape_string($_POST['country']);
$countrysearch = mysql_real_escape_string($_POST['subleaguesearch']);        
if($countrysearch == 0){
   $countrysearch = "%%";
}

首先,您应该检查并确保$_POST["country"]和$_POST["publiceaguesearch"]包含您认为它们包含的内容。如果他们没有,那么你在表单中对字段的命名很可能是错误的。

其次,您似乎将错误的post字段分配给了错误的搜索变量。请注意$subbaguessearch=$_POST['country'],而不是等于$_POST['publiceaguesearch']。$countrysearch也是如此。所以它应该是这样的:

$subleaguesearch = mysql_real_escape_string($_POST['subleaguesearch ']);
$countrysearch = mysql_real_escape_string($_POST['country']);