我有部分网站,我需要更新搜索脚本。我有一个包含3列的Excel表单,部件号,部件名称和页码。我只是想创建一个简单的搜索框,当你输入一个条目并点击提交时,它会搜索txt列表,并在网页上显示/回显/打印txt文件中对应的任何行,无论是部件号还是描述名称。这是为了帮助人们找到一个零件,然后将它们链接到可以找到的目录页面 - 所以页码是指向该页面的链接。
下面的搜索脚本正是我需要它做的,我没有写它,它是由一名前员工编写的 - 它连接到mySQL数据库 - 但我不能再这样做了,mySQL是在共享上托管服务和最小字符搜索设置为4,无法修改。我需要能够搜索3个字符的单词,例如'oil','brm','rod'。
我已经尝试了几天寻找替代方法。我希望能够连接或搜索包含部件号列表的txt或Excel文件以及可以找到它们的页面,而不是将它连接到mySQL数据库。
我不知道如何修改它以使其连接到txt文件而不是mySQL数据库。 这甚至可能吗?我需要使用其他类型的脚本吗?
我感谢任何指导。谢谢!
<?php
if ($_POST['action'] =="search") {
function make_page_url($pageno) {
return "../vwcatalog/2013/" . $pageno . ".html";
}
echo "<tr><td>Search Results : (HINT-If Nothing Is Listed Below, Try the Table of Contents at the Bottom of the Page<br>
Search Hint: If necessary, try using singular words, instead of plural, i.e.; 'seat' - instead of 'seats'.)</td></tr>\n";
$dbsearchlink=mysql_connect($db["host"],$db["user"],$db["pass"])
or die("Failed to make database connection: " . mysql_error());
mysql_select_db($db["used"])
or die("Failed to select database: " . mysql_error());
$query=sprintf("select partno,description,pageno from part_to_page where year=2013 and match(partno,description) against ('%s')",
mysql_real_escape_string($_POST['searchfor']));
$result=mysql_query($query) or die("Query failed: " . mysql_error());
echo "<tr><td><table>\n";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$url=make_page_url($row['pageno']);
echo "\t<tr>";
echo "<td>" . $row['partno'] . "</td>";
echo "<td><a href=$url>" . $row['description'] . "</a></td>";
echo "</tr>\n";
}
echo "</table></td></tr>\n";
mysql_free_result($result);
mysql_close($dbsearchlink);
}
?>
答案 0 :(得分:0)
为什么不切换查询
if(strlen($_POST['searchfor']) < 4){
$query=sprintf("select partno,description,pageno from part_to_page where year=2013 and ( partno LIKE '\%%s\%' OR description LIKE '\%%s\%')",
mysql_real_escape_string($_POST['searchfor']),
mysql_real_escape_string($_POST['searchfor']));
} else {
$query=sprintf("select partno,description,pageno from part_to_page where year=2013 and match(partno,description) against ('%s')",
mysql_real_escape_string($_POST['searchfor']));
}