这会让我抓狂,因为这可能是我错过的东西,但我有一个表单,用户可以选择一个国家和联赛名称,并返回一个找到的结果表。
我遇到的问题是,如果提交了搜索表单,它不会返回任何结果,但如果我只是正常刷新页面而不提交,它会正常工作并返回所有结果。正如你在下面看到的,如果表单还没有提交,它会设置$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 </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 </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/> 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']);