0

我有一点问题。我有一个导航栏

|  home  |  view  |  view(active)  |  view(deleted)  | 

当我点击查看时,我会被带到view.php仅检索所有数据库记录的位置:

SELECT * FROM inventory  

在我的库存表中,我有一个名为的列status,其值为yor n。(y对于活动,n对于不活动(或已删除))。

当我单击view(active)view(deleted)链接时,我想执行不同的查询,例如:

SELECT * FROM inventory WHERE status LIKE 'y' (for retrieval of active records)  
SELECT * FROM inventory WHERE status LIKE 'n' (for retrieval of deleted records)  

如果我附加?view=y到我的view.php 链接的末尾,它工作正常。我的表单的表单操作引用自身(view.php),除了附加的视图类型:?view=y或者?view=n然后有条件确定要执行的 mysql 查询。但是,我想用 POST 处理这种情况,但它不起作用。我不希望我的 URL 中有任何值。$_GET虽然工作得很好。

谢谢。

CODE(用于查询的 view.php 条件)

    if ($_POST['view'] == "y") {
        $result = mysql_query("SELECT * FROM inventory WHERE status LIKE 'y'"); }
    else if ($_POST['view'] == "n")  {
        $result = mysql_query("SELECT * FROM inventory WHERE status LIKE 'n'"); }
    else if ($_POST['submit'] == "search") {
        $result = mysql_query("SELECT * FROM inventory WHERE descrip LIKE '%$searchString%'"); }
    else {
        $result = mysql_query("SELECT * FROM inventory"); }

CODE(我的导航栏)

<div id="navigation">
    <a href="add.php"><input type="button" value="ADD" /></a>
    <a href="view.php"><input type="button" value="VIEW" /></a>
    <a href="view.php?view=y"><input type="button" value="view active" /></a>
    <a href="view.php?view=n"><input type="button" value="view deleted" /></a>
    <div><br />
        <form action="view.php" method="POST">
            <input type="text" name="searchDescription" id="search" placeholder="search for text in description" value="<?php echo $_POST['searchDescription']; ?>"/>
            <input type="submit" value="SEARCH" name="submit" id="searchDescriptionButton" />
        </form>
    </div>
</div>
4

3 回答 3

0

如果你正在做一个 POST 也没关系,如果你传递的值是请求页面的 URL 的一部分,那么它将在 $_GET 中。

一种快速/肮脏/糟糕的解决方法是简单地使用 $_REQUEST,它是 _GET 和 _POST 的组合,但不建议这样做,因为无法保证您的 PHP 是如何配置的以及哪种方法将优先。例如有

<form action="example.php?somevar=value" method="post">
   <input type="submit" name="somevar" value="othervalue" />
</form>

不确定,具体取决于您的 PHP 安装variable_order设置。

请注意,这somefield LIKE 'someconstantvalue'有点毫无意义,完全等同于somefield='someconstantvalue'. LIKE 用于通配符搜索,通常应该与常量值比较混合使用。

于 2012-10-20T01:34:06.840 回答
0

您可以使用隐藏的输入类型将 POST 参数传递给您的 php 脚本。有很多更优雅的解决方案,但这里有一个需要最少代码更改的解决方案。

添加<input type="hidden" name="view" id="viewvalue">您的表单,并让您的按钮调用一个 javascript 函数,该函数将值设置为yorn并提交表单。

<script>
function setView(wanted)
{
   document.getElementById("viewvalue").value = wanted;
   document.getElementById("viewform").submit();
}
</script>

请注意,此函数假定您已将 id 指定给viewform表单。

然后将按钮中的链接更改a hrefjavascript:setView('y')and javascript:setView('n),您应该已设置好。

编辑:因为你不能使用 javascript,所以它应该是这样的

<div id="navigation">
<a href="add.php"><input type="button" value="ADD" /></a>
<a href="view.php"><input type="button" value="VIEW" /></a>
<form name="viewactiveform" action="view.php" method="POST">
    <input type="hidden" name="view" value="y">
    <input type="submit" value="view active" />
</form>
<form name="viewdeletedform" action="view.php" method="POST">
    <input type="hidden" name="view" value="n">
    <input type="submit" value="view deleted" />
</form>
<div><br />
    <form action="view.php" method="POST">
        <input type="text" name="searchDescription" id="search" placeholder="search for text in description" value="<?php echo $_POST['searchDescription']; ?>"/>
        <input type="submit" value="SEARCH" name="submit" id="searchDescriptionButton" />
    </form>
</div>

于 2012-10-20T01:36:17.173 回答
0

您可以这样做 - 您可以为此目的在页面中添加一个表单,并使用隐藏字段来存储帖子值 (y, n)

<form name="gotoview" action="view.php" method="POST">
  <input type="hidden" name="view" id="view" value="" />
</form>

您的链接应该张贴表格

<a href="#" onclick="document.forms['gotoview'].view='n';document.forms['gotoview'].submit();">View discontinued</a>

使用 JavaScript 填充隐藏字段,然后将表单发布到操作中的 url。

于 2012-10-20T01:32:25.590 回答