创建搜索表单并显示结果

时间:2015-02-26 作者:gidea

我正在尝试为一个网站创建一个插件,用户可以在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开发,我还是一个新手,所以希望我错过了一些简单的东西

1 个回复
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()函数来保护您的查询。

我知道这可能有很多需要接受的东西;希望它能很好地指导您,如果您有任何问题或者在打开调试模式后出现不同的错误,请告诉我,我们可以解决这个问题!

结束

相关推荐

Searching post types

是否可以从搜索表单中获取用户输入,使用该表单通过WP_Query 类,然后将用户重定向到页面模板以显示结果?例如假设您有一个搜索输入city, state 或zip 然后输入California,然后捕获该输入,然后使用WP\\U查询搜索自定义帖子类型“位置”。它会找到4个匹配的位置,然后重定向到“位置”页面,该页面将显示所有4个位置。你会怎么做?Note: 这不是家庭作业,而是客户端功能。是的,有插件,但由于这是如何定制的,以及他们希望它如何布局,它必须从头开始构建。