【问题标题】:if(isset($_POST["myvar"]) && isset($_POST["myvar2"]) failsif(isset($_POST["myvar"]) && isset($_POST["myvar2"]) 失败
【发布时间】:2016-01-20 09:16:58
【问题描述】:

如果我使用此代码将数字作为输入,它可以正常工作

<form  method = "post">
    Hours: <input type="text" name="myvar">
</form>

<?php
require 'connect.php';
if (isset($_POST["myvar"])) {

但以下获取 2 个数字的代码不会通过 if。我怎样才能做到这一点?

<form  method = "post">
    Hours: <input type="text" name="myvar">
</form>
<form  method = "post">
    Minutes: <input type="text" name="myvar2">
</form> 

<?php
require 'connect.php';
if (isset($_POST["myvar"]) && isset($_POST["myvar2"])) {

【问题讨论】:

  • 由于某种原因,您有 2 个表格?!两个输入 myvarmyvar2 应该在单个表单元素内。该单一表单的提交应该按您的预期工作。
  • 您能否在删除一个表单后更新您的新代码?

标签: php forms http post


【解决方案1】:

只使用一种形式。此外,需要多个输入,并且输入类型为submitimage,以便您可以提交表单。

<form  method = "post">
        Hours: <input type="text" name="myvar"/>

        Minutes: <input type="text" name="myvar2"/>

       <input type="submit"/>

</form> 

我假设您不想显示提交按钮,您可以做的是使用 css 将按钮推离屏幕。

<form  method = "post">
            Hours: <input type="text" name="myvar"/>

            Minutes: <input type="text" name="myvar2"/>

           <input type="submit" 
       style="position: absolute; left: -9999px; width: 1px; height: 1px;"
       tabindex="-1" />

    </form> 

【讨论】:

  • 试过了,如果还是不行。
  • 你是说回车后不能提交表单?
【解决方案2】:

您正在使用 2 个表单元素.. 将其设为一个

<form  method = "post">
Hours: <input type="text" name="myvar">
Minutes: <input type="text" name="myvar2">
</form>

【讨论】:

    【解决方案3】:

    您只需要为两个字段使用一个表单:

    <form method="post">
        Hours: <input type="text" name="myvar">
        Minutes: <input type="text" name="myvar2">
        <input type="submit" name="submit">
    </form>
    

    在 PHP 中,您可以使用 !empty() 进行表单输入。

    <?
    if (!empty($_POST["myvar"]) && !empty($_POST["myvar2"])) {
    ...
    ?>
    

    第二个解决方案,如果您仍想使用isset(),也可以添加 !empty() 进行检查:

    <?
    if (isset($_POST["myvar"]) && !empty($_POST["myvar"]) && 
        (isset($_POST["myvar2"]) && !empty($_POST["myvar2"]))) {
        echo "<pre>";
        print_r($_POST);
    }
    ?>
    

    【讨论】:

    • 勇敢并至少添加拒绝接受答案的理由,这也将有助于 OP。
    【解决方案4】:

    您正在使用 2 forms element。两个输入应该是相同的form

    <form  method = "post">
        Hours: <input type="text" name="myvar">
    
        Minutes: <input type="text" name="myvar2">
    </form>
    

    【讨论】:

      【解决方案5】:

      正如其他人已经提到的,您确实应该在相同的表单标签中拥有两个输入字段。背后的原因,是这样的:

      表单用于包含提交后发送到服务器的数据。如果您有多个表单,则只会发送您提交的表单内的数据。
      因此,当您提交其中一个表单时,myvar myvar2 将被发送到服务器。两者都不是。

      所以,如果你检查它们是否都设置了,它会失败,因为它们没有。

      将两个输入字段放在同一个表单中可以解决这个问题:

      <form method="post">
          Hours: <input type="text" name="myvar">
          Minutes: <input type="text" name="myvar2">
      </form>
      

      【讨论】:

      • 我这样做了,我先填写小时,然后填写分钟,然后在填写分钟后按 Enter(在分钟框中按 Enter),但它没有通过 if。
      • 我应该把 echo var_dump($_POST["myvar"]);回声 var_dump($_POST["myvar2"]);因为如果我把它放在上面的话。在我按下或写东西之前它就说 NULL NULL
      【解决方案6】:

      您可以使用两种形式,但动作应该相同,然后您可以使用$_POST方法获取两个变量值。

      【讨论】:

        【解决方案7】:

        时间:

            Minutes: <input type="text" name="myvar2" value="">
        
            <input type="submit" name="submit" value="submit"/>
        

        <?php 
        
              if (isset($_POST['submit']) && !empty($_POST['submit'])) 
           {
               echo $_POST['myvar'];
               echo "<br/>";
               echo $_POST['myvar2'];
           }
        

        ?>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-04
          • 2015-03-05
          相关资源
          最近更新 更多