搜索脚本,搜索txt文件并打印或回显结果

时间:2013-09-19 18:01:58

标签: php mysql excel search

我有部分网站,我需要更新搜索脚本。我有一个包含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);

}
?>

1 个答案:

答案 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']));
}