【问题标题】:PHP - How to hide the form after it's submittedPHP - 如何在提交后隐藏表单
【发布时间】:2013-10-02 15:42:16
【问题描述】:

我有一个放在容器中的域名检查表。在我提交表单后,会检查域名的可用性,并在与表单相同的容器中显示一条消息。显示消息时,我希望表单和第一个 H2 消失。我该怎么做?

我的代码:

<div id="domain-name-check">
    <h2>Is uw domeinnaam nog vrij?</h2>
    <form method='post' class="clearfix">
        <input type=text name=domain>
            <select name="suffix">
                <option value=".nl">.nl</option>
                <option value=".be">.be</option>
                <option value=".com">.com</option>
                <option value=".net">.net</option>
                <option value=".org">.org</option>
                <option value=".biz">.biz</option>
                <option value=".info">.info</option>
                <option value=".mobi">.mobi</option>
                <option value=".ws">.ws</option>
                <option value=".cc">.cc</option>
            </select>
            <input type=submit name=proses value=Check>
    </form>
    <?php
    if(isset($_POST['proses'])){
        $domain_name = "$_POST[domain]"."$_POST[suffix]";
        $arrHost = @gethostbynamel("$domain_name");
        $date = date('y-m-d');

        if(empty($arrHost)){
            echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
            $availability = "yes";
        }else{
            echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
            $availability = "no";
        }

        mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());

    }
    ?>
</div>

【问题讨论】:

  • 考虑将这些用双引号 &lt;input type=submit name=proses value=Check&gt; 括起来,如 &lt;input type="submit" name="proses" value="Check"&gt;&lt;input type="text" name="domain"&gt;
  • 还要考虑有不同的页面而不是条件内容的单个页面。 Google 的模板引擎,例如“Smarty”
  • 您不必以巨大的表格为例来解决您的问题。请 - 这指的是每个人 - 将您的示例代码保持在最低限度。因此,1) 阅读代码和 2) 回复它会更容易,尤其是。随着代码的更正。就这么简单。

标签: php html mysql forms


【解决方案1】:

更正的代码: 仅当我们没有提交表单值时才显示表单。 因此,在else 标签中编写您的 HTML 代码,如下所示:

<div id="domain-name-check">

    <?php
    if(isset($_POST['proses'])){
        $domain_name = "$_POST[domain]"."$_POST[suffix]";
        $arrHost = @gethostbynamel("$domain_name");
        $date = date('y-m-d');

        if(empty($arrHost)){
            echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
            $availability = "yes";
        }else{
            echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
            $availability = "no";
        }

        mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());

    }
        else {
        ?>
        <h2>Is uw domeinnaam nog vrij?</h2>
    <form method='post' class="clearfix">
        <input type=text name=domain>
            <select name="suffix">
                <option value=".nl">.nl</option>
                <option value=".be">.be</option>
                <option value=".com">.com</option>
                <option value=".net">.net</option>
                <option value=".org">.org</option>
                <option value=".biz">.biz</option>
                <option value=".info">.info</option>
                <option value=".mobi">.mobi</option>
                <option value=".ws">.ws</option>
                <option value=".cc">.cc</option>
            </select>
            <input type=submit name=proses value=Check>
    </form>
        <?php
        }
    ?>
</div>

【讨论】:

  • 投反对票,因为缺少对更改内容或修复代码的原因的解释。不讨论技术或文档链接。这个问题的答案对社区没有任何价值。
  • 嗨@michaelward82,感谢您的投票。我明白了。从现在开始,我将提供适当的解释、链接、文档。这是本站的荣耀。
  • 那么我将收回反对票 :) 希望您继续享受使用 SO!
【解决方案2】:
<div id="domain-name-check">
    <?php if(!isset($_POST['proses'])){ ?><h2>Is uw domeinnaam nog vrij?</h2>
    <form method='post' class="clearfix">
        <input type=text name=domain>
            <select name="suffix">
                <option value=".nl">.nl</option>
                <option value=".be">.be</option>
                <option value=".com">.com</option>
                <option value=".net">.net</option>
                <option value=".org">.org</option>
                <option value=".biz">.biz</option>
                <option value=".info">.info</option>
                <option value=".mobi">.mobi</option>
                <option value=".ws">.ws</option>
                <option value=".cc">.cc</option>
            </select>
            <input type=submit name=proses value=Check>
    </form>
    <?php } //endif form submitted
    if(isset($_POST['proses'])){
        $domain_name = "$_POST[domain]"."$_POST[suffix]";
        $arrHost = @gethostbynamel("$domain_name");
        $date = date('y-m-d');

        if(empty($arrHost)){
            echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
            $availability = "yes";
        }else{
            echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
            $availability = "no";
        }

        mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());

    }
    ?>
</div>

【讨论】:

    【解决方案3】:

    这可以通过稍微重构当前代码来完成:

    <?php
        if(isset($_POST['proses'])){
            # code ...
        }
        else {
    ?>
            <div id="domain-name-check">
            <!-- your form code goes here -->
            </div>
    <?php 
        } //end of else block 
    ?>
    

    完整代码:

    <?php
    if(isset($_POST['proses']))
    {
        $domain_name = "$_POST[domain]"."$_POST[suffix]";
        $arrHost = @gethostbynamel("$domain_name");
        $date = date('y-m-d');
    
        if(empty($arrHost)){
            echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
            echo "AVAILABLE";
            $availability = "yes";
        }else{
            echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
            echo "NOT AVAILABLE";
            $availability = "no";
        }
    
        mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());
    } 
    
    else 
    {
    ?>
        <div id="domain-name-check">
        <h2>Is uw domeinnaam nog vrij?</h2>
        <form method='post' class="clearfix">
        <input type=text name=domain>
        <select name="suffix">
            <option value=".nl">.nl</option>
            <option value=".be">.be</option>
            <option value=".com">.com</option>
            <option value=".net">.net</option>
            <option value=".org">.org</option>
            <option value=".biz">.biz</option>
            <option value=".info">.info</option>
            <option value=".mobi">.mobi</option>
            <option value=".ws">.ws</option>
            <option value=".cc">.cc</option>
        </select>
        <input type=submit name=proses value=Check>
        </form>
        </div>
    <?php 
        }
    ?>
    

    【讨论】:

      【解决方案4】:

      在您的表单标签下,插入一个隐藏的表单字段,如下所示:

      <form method='post' class="clearfix">
      <input type="hidden" name="action" id="action" value="hideme" />
      .................................
       .............................
      
      </form>
      

      现在在您的 $_POST 部分下,使用以下逻辑:

       if (isset($_POST['action'])&& ($_POST['action']=='hideme'))
       {
        //perform your intended task on submission
      }else {
      
      //Show My form code again
      
      }
      

      简单!

      【讨论】:

        【解决方案5】:

        HTML 代码可以用 PHP 包装以有条件地显示它。

        考虑以下作为此类功能的模板:

        <?php if (condition) { ?>
        
            <p>HTML</p>
        
        <?php } ?>
        

        就这么简单。

        在这种情况下,您的情况可能是

        if (isset($_POST['proses'])
        

        【讨论】:

          【解决方案6】:

          &lt;h2&gt;Is uw domeinnaam nog vrij?&lt;/h2&gt; 替换为

          if (!isset($_POST)){
                 echo '<h2>Is uw domeinnaam nog vrij?</h2>';
          }
          

          这将确保如果没有提交表单,那么h2 将对用户可见 或者你可以使用Javascript

          【讨论】:

            【解决方案7】:

            使用以下内容:

            <?php
            
            if (  isset( $_POST['field_name'] )  )
              {
              .... // submit
              exit();
            
              }
            
            ?>
            
            <html>
            <form ... action="" method="POST">
            ....
            ....
            </form>
            </html>
            

            【讨论】:

              猜你喜欢
              • 2016-07-12
              • 2021-01-17
              • 2019-03-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-30
              • 2014-10-30
              相关资源
              最近更新 更多