使用PHP根据输入值更改操作

时间:2017-04-17 18:19:43

标签: php forms action perch

我正在处理一个表单,我希望根据表单提交的输入值更改表单操作。这需要使用PHP来完成。

这是我迄今为止所做的尝试:

<?php
    $action = "";
    $input = (isset($_POST["hp"])); 
    if($input == "") {
      $action = "action1"; 
    } else {
      $action = "action2"; 
    }   
?>
<form name="contactForm" id="contactForm" method="post" action="<?php echo $action; ?>">

    <!-- form stuff here -->

    <input id="hp" name="hp" type="text" class="hp"/>
    <input type="submit" name="submit" id="submit" value="Submit Query" class="button" />
</form>

这不起作用,因为hp的{​​{1}}字段从一开始就没有值,所以它总是转到action1。

我也尝试过:

(isset($_POST["hp"]))

这没有用,因为Perch(正在建立的CMS)会引发一个<?php if(isset($_POST['submit'])){ $input = ($_POST['hp']); $action = ""; if($input == "") { $action = "action1"; } else { $action = "action2"; } } ?> <form name="contactForm" id="contactForm" method="post" action="<?php echo $action; ?>"> 尚未定义的错误。

当我尝试时:

$action

它在提交时根本没有做任何事情,因为它将操作设置为&#34;&#34;。

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

以简短的方式写作

$action = isset($_POST['hp'])?'action2':'action1';

就是这样。

答案 1 :(得分:1)

差异化可能性:

相同的操作和重定向

最简单的方法可能是将表单发送到同一个PHP文件,在此文件中,通过POST获取此输入的内容并重定向到正确的文件。

阻止默认提交并通过JavaScript

添加提交事件

第二个选项,可以通过JavaScript在提交时添加事件,防止默认操作阻止提交,然后检查输入值,设置操作和提交表单:

<form name="contactForm" id="contactForm" method="post" action="">
    ...
</form>

<script>
    document.querySelector('#contactForm').addEventListener('submit', function(e) {
        //Prevent default submit
        e.preventDefault();

        //Check input value
        if (...) {
            this.action = "page1.php";
        } else if (...) {
            this.action = "page1.php";
        }

        //perform submit form.
        this.submit();
    });
</script>

使用数据绑定库

这可能是最好的形式,但最简单的是,这个表单是基于使用像Vue.js,KnockoutJS或RactiveJS这样的数据绑定库来根据输入值在模型对象中设置动作字符串

然后,在HTML表单标签中,使用所选库的绑定语法设置模型数据的值:

//Vue.js syntax
<form name="contactForm" id="contactForm" method="post" :action="action">

//Ractive.js syntax
<form name="contactForm" id="contactForm" method="post" action="{{action}}">

我建议什么?

如果您对PHP很新颖并且不了解JavaScript,那么第一个选项可能是最适合您的,如果您知道JavaScript并且您知道如何使用事件,但从未使用过绑定库,那么更推荐第二个选项。

如果您使用某些数据绑定库(或实现数据绑定的框架,如Angular),第三个选项可能是最适合您的。

答案 2 :(得分:0)

如果第2版和第3版不起作用,则必须缺少输入:

<input type="submit" name="submit">

您可以将该按钮添加到表单,也可以更改代码以使用if isset($_POST['hp'])

<?php   
  $action = "";
  if(isset($_POST['hp'])){ 
    $input = ($_POST['hp']); 
    if($input == "") {
      $action = "action1";
    } else {
      $action = "action2";
    }
  }    
?>

答案 3 :(得分:0)

以上答案对我都没有用,所以这就是我最后要做的事情。

用例:

  1. 我有一个包含两个字段的“搜索”表单。当用户点击“搜索”时, 这些值应添加到URL,以便以前的搜索 可能被加了书签。然后应该执行搜索。
  2. 首次加载页面或不使用搜索条件时,所有 应该显示可能的结果。

代码说明:

  • 在文件顶部,检查用户是否提交了表单。 如果是这样的话:
    • 从所需字段中获取值,并将其保存到局部变量中。
    • 导航到同一PHP文件,这次传递您感兴趣的变量
  • 如果用户未提交表单:
    • 检查URL参数
    • 如果存在网址参数,请将其保存到本地变量中, 并使用这些局部变量来运行搜索

代码段:

candWord