繁体   English   中英

两个搜索字段(一个下拉列表)- PHP & MYSQL 代码

[英]Two Search Fields (One a drop down list) - PHP & MYSQL Code

我真的很想得到一些帮助,因为我正在拔头发,,。 我有两个领域。 一个是输入框,另一个是搜索数据库并显示结果的下拉列表。 但是我似乎无法弄清楚......这是我到目前为止所拥有的......

这是实际的搜索表单:

<form id="myform" name="myform" action="<?php echo $_SERVER['PHP_SELF']?>"             method="get"><br />
<div class="T1"><br /><p></div> &nbsp;&nbsp;<input name="term" type="text" value="<?    php echo $_GET['searched']; ?>" size="10" maxlength="4" placeholder="e.g.     BS1"/> 
<select>
  <option value="">I feel like...</option>
  <option value="">Anything</option>
  <option value="Indian">Indian</option>
  <option value="Chinese">Chinese</option>
  <option value="Thai">Thai</option>
</select>
<input type="submit" name="submit" value="Go"/>
</form>

这是 PHP 代码:

<?php

if (isset($_GET['submit'])){
mysql_connect ("host", "user","password")  or die (mysql_error());
mysql_select_db ("database");
$term = $_GET['term'];  
$term = $_GET['option value'];  

}

else

$sql = mysql_query("select pagetitle from Restaurant where extra like '%$term%' and     showing like '1'"); 
$sql = mysql_query("select cuisine from Restaurant where cuisine like 'option value'     and showing like '1'"); 

echo Restaurants in $term and Cuisine $option value:";


}

while ($row = @mysql_fetch_array($sql)){
    echo ''.$row['pagetitle'];
    echo '<br/>';

}

}

?>

该数据库有一个名为 Restaurant 的表,它有两个列,一个名为“Extra”,其中包含邮政编码,另一个名为“Cuisine”,其中包含美食。 我希望它返回与“额外”和“美食”相匹配的餐厅列表。任何帮助将不胜感激。

  • 在脚本中的任何位置(甚至在表单操作中)回显 $_SERVER['PHP_SELF'] 或 $_GET['searched'] 都会使您的站点受到 XSS 攻击。 除非您先对其进行消毒,否则不要这样做。

  • 对于所有新项目,建议对 mysql 查询使用准备好的语句。 您可以使用 mysqli 或 PDO 来执行此操作。 您的代码只是要求 SQL 注入您正在尝试做的事情。

  • 您的代码中缺少一个括号,最后还有一些额外的括号。 在 echo 之后,您还缺少引号。 我不确定那里发生了什么。 试着把那些修好。

  • mysql_fetch_array() 之前的@ 是什么? 在 PHP 中使用 @ 的情况确实很少。 这通常表明您的代码中某处存在某种错误,应该修复而不是抑制。

  • 如果您希望能够在 PHP 中使用它,您需要一个名称属性。

  • 在您的 SQL 查询中,当您应该使用 equals 时,您不应该使用LIKE 此外,您不应引用整数。

  • 为什么要回显一个空字符串,例如echo ''.$somevar; ? 只需回显变量。

我不确定“显示”是什么意思,但我认为是可以显示的记录。 首先要做的是更新您的查询:

$sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value')");

您还需要检查用户是否没有输入选项或选择“任何内容”,在这种情况下需要稍微更改查询:

$sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value' or 'option value' = '')"); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM