0

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

}
?>
4

1 回答 1

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']));
}
于 2013-09-19T18:23:09.143 回答