Php 搜索查询在firefox中不起作用,但在其他浏览器中起作用?
我有一个搜索查询脚本,它在firefox、safari等中运行良好,但在chrome中不起作用 无论出于什么原因,一旦用户在查询中键入并点击submit,我就会注意到URL是非常不同的 在chrome中,我得到了一个有效且正确的结果Php 搜索查询在firefox中不起作用,但在其他浏览器中起作用?,php,mysql,firefox,Php,Mysql,Firefox,我有一个搜索查询脚本,它在firefox、safari等中运行良好,但在chrome中不起作用 无论出于什么原因,一旦用户在查询中键入并点击submit,我就会注意到URL是非常不同的 在chrome中,我得到了一个有效且正确的结果 http://localhost/ptb1/home.php?query=london&submit.x=0&submit.y=0&submit=Start+Search 但是在firefox中我得到了这个(注意stat+search丢失了
http://localhost/ptb1/home.php?query=london&submit.x=0&submit.y=0&submit=Start+Search
但是在firefox中我得到了这个(注意stat+search丢失了,我不知道为什么)
http://localhost/ptb1/home.php?query=london&submit.x=12&submit.y=10
请任何人告诉我为什么我会遇到这个问题,以及如何纠正它,谢谢
这是我的密码:
<form method="get" action="">
<input type="text" id="text" name="query" class="searchbox" placeholder="Search Name/Location" style="width:120px;"/>
<input type="image" src="../PTB1/assets/img/icons/search.png" height="19" width="20" class="searchbutton" name="submit" value="Start Search" />
</form>
<?php
//PHP CODE STARTS HERE
if(isset($_GET['submit'])){
// Change the fields below as per the requirements
$db_host="localhost";
$db_username="root";
$db_password="";
$db_name="";
$db_tb_atr_name="display_name";
//Now we are going to write a script that will do search task
// leave the below fields as it is except while loop, which will display results on screen
mysql_connect("$db_host","$db_username","$db_password");
mysql_select_db("$db_name");
$query=mysql_real_escape_string($_GET['query']);
$query_for_result=mysql_query("SELECT *,MATCH(display_name, location, sex, ethnicity, hobbies, station, age, weight_st, weight_lb, height_ft, height_in, build) AGAINST ('$query' IN BOOLEAN MODE) AS relevance FROM ptb_stats WHERE MATCH(display_name, location, sex, ethnicity, hobbies, station, age, weight_st, weight_lb, height_ft, height_in, build) AGAINST('$query' IN BOOLEAN MODE) ORDER BY relevance DESC LIMIT 5");
echo "<div class=\"search-results\">";
while($data_fetch=mysql_fetch_array($query_for_result))
{
echo "<div class=\"text\"><a href=\"profile.php?id={$data_fetch['user_id']}\" class=\"search\">";
echo "<div class=\"spacing\"><img width=35px height= 30px src=\"data/photos/{$data_fetch['user_id']}/_default.jpg\" class=\"boxgridsearch\"/> ";
echo substr($data_fetch[$db_tb_atr_name], 0,160);
echo "</a></div></div>";
}
echo "<div class=\"morebutton-search\"><a href=\"search_results.php?query=$query\" \">+ view more results</a></div>";
mysql_close();
}
?>
<style type="text/css">
.boxgridsearch{
width: 35px;
height: 30px;
margin-top:-3px;
margin-left:0px;
margin-right:10px;
float:left;
background:#161613;
border:4px solid #000 .8;
-moz-box-shadow: 0px 0px 8px #CCC;
-webkit-box-shadow: 0px 0px 0px #CCC;
box-shadow: 0px 3px 10px #030303;
}
.suggestionsBox {
position: relative;
left: 12px;
margin: 10px 0px 5px 0px;
width: 172px;
background-color: #FFF;
border: 1px solid #CCC;
color: #fff;
z-index:99;
}
.searchbutton {
padding-top: 2px;
padding-left:5px;
position:absolute;
z-index:70;
}
.spacing {
padding-top: 12px;
padding-bottom:12px;
border-bottom: solid #CCC 1px;
border-top: solid #CCC 1px;
text-align:left;
margin-left:0px;
margin-top:5px;
width:160px;
}
.text {
text-align:left;
margin-left:20px;
margin-top:0px;
width:200px;
}
.search-results {
width: 200px;
height:218px;
float: left;
margin-bottom: 20px;
margin-left: 0px;
margin-top:10px;
text-align: center;
/* [disabled]margin-left: 30px; */
overflow: hidden;
padding-top: 0px;
padding-bottom: 10px;
}
.searchbox {
margin-left: -25px;
}
.suggestionList {
margin: 0px;
padding: 0px;
}
.suggestionList li {
margin: 0px 0px 3px 0px;
padding: 3px;
cursor: pointer;
}
.suggestionList li:hover {
background-color: #659CD8;
}
a.search {
color: #646464;
text-decoration: none;
}
a.search:visited {
color: #646464;
}
a.search:hover {
color: #646464;
text-decoration: none;
}
a.search:active {
color: #646464;
}
</style>
您可以尝试使用$\u服务器['REQUEST\u METHOD']
来确定页面是否已提交,而不是isset($\u GET['submit'])
,因此基本上:
if(isset($_GET['submit'])){
// Change the fields below as per the requirements
$db_host="localhost";
$db_username="root";
你可以:
if($_SERVER['REQUEST_METHOD'] == 'GET'){
// Change the fields below as per the requirements
$db_host="localhost";
$db_username="root";
浏览器将以不同的方式解释表单的提交方式。您在Firefox中看到的行为实际上是起草的标准:
在这里,我们可以深入研究按钮样式与使用图像(提交、图像输入类型与按钮)-最简单的修复方法是在表单中添加一个隐藏的输入值:
<form method="get" action="">
<input type="hidden" name="dosearch" value="1">
<input type="text" id="text" name="query" class="searchbox" placeholder="Search Name/Location" style="width:120px;"/>
<input type="image" src="../PTB1/assets/img/icons/search.png" height="19" width="20" class="searchbutton" name="submit" value="Start Search" />
</form>
快速补丁
你应该考虑一个框架,如果你要做很多事情的话,你可以在非常干净和分层的代码(MVC)中获得很多这种免费的逻辑。.
是的,谢谢,但有一个问题,用户单击“提交”后,搜索结果将显示在搜索框下方的下拉列表中,但现在下拉框一直处于打开状态。有什么方法可以解决此问题吗?我已使用附加的css更新了代码。@EricJohnson因此您可以看到下拉列表,而不考虑e search已提交,您希望仅当用户已提交搜索时才显示它。是否正确?@EricJohnson您可以使用相同的if语句(if($\u SERVER['REQUEST\u METHOD']=='GET'))检查表单是否已提交。如果是,您可以显示下拉列表。这对您有用吗?
if(isset($_GET['dosearch'])){