我通过阅读源代码和教程编写了我的第一个搜索过滤器,现在我有了自己的搜索过滤器。代码是有效的,但问题是我找不到让代码更精确的方法:就是我想如何使用它
这些是代码的重要部分(我删除了回波代码和连接部分,因为一切都可以):
<p><a href="?by=A">A</a> | <a href="?by=B">B</a> | <a href="?by=C">C</a> | <a href="?by=D">D</a> | <a href="?by=E">E</a> | <a href="?by=F">F</a> | <a href="?by=G">G</a> | <a href="?by=H">H</a> | <a href="?by=I">I</a> | <a href="?by=J">J</a> | <a href="?by=K">K</a> | <a href="?by=L">L</a> | <a href="?by=M">M</a> | <a href="?by=N">N</a> | <a href="?by=O">O</a> | <a href="?by=P">P</a> | <a href="?by=Q">Q</a> | <a href="?by=R">R</a> | <a href="?by=S">S</a> | <a href="?by=T">T</a> | <a href="?by=U">U</a> | <a href="?by=V">V</a> | <a href="?by=W">W</a> | <a href="?by=X">X</a> | <a href="?by=Y">Y</a> | <a href="?by=Z">Z</a></p>
<?php
if(isset($_GET['by'])){
$letter=$_GET['by'];
//-query the database table
$sql="SELECT Name, Land FROM interpret WHERE Name LIKE '%" . $letter . "%'";
//-run the query against the mysql query function
$result=mysql_query($sql);
//ergebnisse zählen
$numrows=mysql_num_rows($result);
echo "<p>" .$numrows . " results found for " . $letter . "</p>";
//loopy '(^_^)/
while($row=mysql_fetch_array($result)){
$Name =$row['Name'];
$Land=$row['Land'];
}
}
?>
我删除了连接到数据库的代码行和回显结果行,因为我怀疑它们在这里是否重要。
最好的最终结果是,当按下搜索栏中的按钮A时,所有结果都带有A(并且仅在开头带有A)。
%
。
$sql="SELECT Name, Land FROM interpret WHERE Name LIKE '" . $letter . "%'";
它允许$letter
之前和之后的任何字符。现在它只匹配后面的任何字符。
%
是一个通配符,所以您得到的是任何东西$letter
所有东西。只需使用尾部的%
,就可以得到$letter
任何东西:
$sql = "SELECT Name, Land FROM interpret WHERE Name LIKE '$letter%'";
如果你想得到像按下A这样的即时结果,就会弹出每个艺术家的名字和A,你必须使用AJAX。