我正在尝试为一个网站创建一个插件,用户可以在Wordpress仪表板中看到客户订单表,这是一个自定义db,但我使用的是wp列表,我已经花了好几个小时的时间试图让内置搜索工作正常
我想创建一个搜索表单,用户可以在其中搜索此表,并将结果返回到一个漂亮的小表格中。
这是我到目前为止搜索表单的代码
<form name="search" method="get">
Order Number: <input type="text" name="find" />
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</form>
<?php
//This is only displayed if they have submitted the form
if ($searching =="yes") {
echo "<h2>Results</h2><p>";
//If they did not enter a search term we give them an error
if ($find == "") {
echo "<p>Please Enter a search term";
exit; }
// filtering
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
global $wpdb;
//Now we search for our search term
$database = $wpdb->get_row("SELECT * FROM storeuserdata2 WHERE orderno = \'%$find%\'");
//And we display the results
echo "<table>";
echo "<tr>";
echo "<td>".$database->firstname."</td>";
echo "<td>".$database->lastname."</td>";
echo "<td>".$database->email."</td>";
echo "<td>".$database->address."</td>";
echo "<td>".$database->towncity."</td>";
echo "<td>".$database->contactnumber."</td>";
echo "</tr>";
echo "</table>";
echo "<b>Searched For:</b> " .$find;
}
这只是挂在一个空白页上,没有显示atm。我想在仪表板的同一页上显示结果
说到php和Wordpress开发,我还是一个新手,所以希望我错过了一些简单的东西
SO网友:Tim Malone
欢迎使用Wordpress开发!
关于你的问题,有几个问题需要回答,第一个是关于挂在空白页上的问题。通常这意味着存在某种错误;在开发过程中,您会发现最有用的事情之一是打开Wordpress的调试模式,这将指示PHP在出现任何错误时打印错误。这将立即帮助您追踪问题。
要打开调试模式,请打开wp config。在Wordpress安装的根目录中,查找WP\\u DEBUG,并将其设置为true。请确保在站点上线之前将此设置回false,因为除了您自己之外,任何人都会收到错误,这是不安全的。
一旦你这样做了,再次尝试使用搜索表单应该会给你一个有意义的错误,这将帮助我们找到问题所在。
现在还有几件事:
除非PHP的register\\u globals设置已打开(不应该打开,因为这是一种安全风险,而且实际上在PHP的最新版本中已被删除),否则您的代码实际上不会工作,因为您调用的变量尚未设置。要使用表单数据,您需要访问$\\u POST superglobal。基本上,每次尝试访问表单字段时$_POST["searching"]
而不是$searching
. 如果用这个替换每个字段引用,您可能会发现这解决了问题(除非我没有注意到其他内容)。
另一个需要注意的重要事项是,您的应用程序存在SQL注入的风险。用户可以在该搜索字段中输入任何内容。。。如果精心制作,它可能会对数据库造成不可估量的破坏。你会想仔细阅读http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks 并且很可能使用$wpdb->prepare()函数来保护您的查询。
我知道这可能有很多需要接受的东西;希望它能很好地指导您,如果您有任何问题或者在打开调试模式后出现不同的错误,请告诉我,我们可以解决这个问题!