我对php很新,我正在开发一个带搜索栏的网站。
我使用了一些代码来实现搜索查询以搜索我的数据库中的产品。搜索查询可以处罚,并显示需要显示的所有必需产品。
但是,我希望这些项目包含指向产品详细信息页面的链接,该页面显示有关该特定产品的更多信息。但是,我不知道如何使用html将其表示为链接。
我的搜索代码如下:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
$searchquery = preg_replace('#[^a-z 0-9?]#i', '', $_POST['searchquery']);
if($_POST['filter1'] == "Food"){
$sqlCommand = "SELECT * FROM tbl_product WHERE pd_name LIKE '%$searchquery%'";
}
include_once("config.php");
//Database connections below
mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
mysql_select_db($dbName) or die(mysql_error());
$query = mysql_query($sqlCommand) or die(mysql_error());
$count = mysql_num_rows($query);
if($count >= 1){
$search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />";
while($row = mysql_fetch_array($query))
{
$pd_name = $row["pd_name"];
$search_output .= "$pd_name<br />";
} // close while
} else {
$search_output = "<hr />0 results for <strong>$searchquery</strong><hr />";
}
}
?>
<html>
<head>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Search for dishes :
<input name="searchquery" type="text" size="30" maxlength="100">
In:
<select name="filter1">
<option value="Food">Food</option>
</select>
<input name="myBtn" type="submit" value="Search">
<br />
</form>
<div>
<?php echo $search_output; ?>
</div>
</body>
</html>
我希望它引用的链接是:
<a href="" . $_SERVER['PHP_SELF'] . "?c=$catId&p=$pd_id" . "">$pd_name</a>
但是,添加此引用时,它似乎不起作用。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:1)
尝试切换:
$pd_name = $row["pd_name"];
$search_output .= "$pd_name<br />";
有了这个:
$pd_name = $row["pd_name"];
$pd_id = $row["pd_id"];
$search_output .= '<a href="' . $_SERVER['PHP_SELF'] . '"?c=$catId&p=' . $pd_id . '">' . $pd_name . '</a><br>';
顺便说一句,您需要阅读SQL注入,因为您应该在将用户输入数据传递到数据库之前将其转义。至少改变一下:
$sqlCommand = "SELECT * FROM tbl_product WHERE pd_name LIKE '%$searchquery%'";
对此:
$sqlCommand = "SELECT * FROM tbl_product WHERE pd_name LIKE '%".mysql_real_escape_string($searchquery)."%'";