2012-10-20 70 views
0

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

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

当我点击查看,我被带到view.php这只是检索所有的数据库记录:

SELECT * FROM inventory 

在我的库存表,我有一个列叫做status有值为yn。 (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=yview.ph P之间的链路结束工作正常。除了附加的视图类型:?view=y?view=n之外,我的表单的表单操作引用自身(view.php),然后通过条件确定要执行哪个mysql查询。但是,我想用POST处理这种情况,它不工作。我不想在我的网址中添加任何值。虽然可以和$_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> 

回答

0

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

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

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

请注意,此功能假设您已将ID viewform提供给您的表单。

然后更改按钮'a hrefjavascript:setView('y')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> 

+0

没有JavaScript,对不起。 – eveo

+0

看到我编辑的帖子。 –

+0

完美地工作,你是一个天才。谢谢。 – eveo

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。

+0

老板不想要的JavaScript很遗憾。这不是我的决定,我会去那,但我不能。 – eveo

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用于通配符搜索,通常应该与常量值比较混合使用。

+0

搜索是因为我抓取搜索文本,将它存储在'$ searchString'中,然后在“description”中搜索该短语。如果搜索匹配1行或更多行描述中的单词,则会检索这些记录以及所有其他记录。它工作正常。感谢您的输入,我只是''_GET'哈哈太麻烦了。 – eveo