为什么带有Get方法的表单中的输入不会一起工作?

时间:2017-03-02 06:36:42

标签: php html forms input get

在WordPress堆栈交换网站上发布这个,因为我正在使用WordPress网站,但我认为这是一个更好的问题。

我有两个输入,我想将其用作同一表单的一部分。它们都能完美地向网址栏提供$ _GET,但只有当它们独自工作时才会这样。当两者都在页面上时,为任何一个输入一个值并按回车将不执行任何操作。

<form action="<?php the_permalink() ?>" method="get">
  <?php
  /* receiveGET() is just a function I wrote that grabs the $_GET results */
  $inst = receiveGET(instrument_search);
  $search_field = receiveGET(user_search);

  /* all the form processing stuff goes here, and it's all working properly */
  ?>
  <!-- If this input is deleted, the other input works perfectly. -->
  <table id="musician-field" class="form-table">
    <tr>
      <td>
        <input title="Search User" name="user_search" maxlength="21" placeholder="Search Name" value="<?php echo htmlspecialchars($_GET[user_search]); ?>" ></input>
      </td>
    </tr>
  </table>

  <!-- If this input is deleted, the other input works perfectly. -->
  <table id="instrument-field" class="form-table">
    <tr>
      <td>
        <input title="Search Instrument" name="instrument_search" maxlength="21" placeholder="Search Instrument" value="<?php echo htmlspecialchars($_GET[instrument_search]); ?>" ></input>
      </td>
    </tr>
  </table>

  /* The form close tab is way below a lot of PHP and HTML, 
  but I have the same bug happen when I move it up to be 
  directly enclosing the inputs */

  </form>

我知道所有的变量都是正确的,所以我很肯定这是因为我对表格如何运作的理解不足,但我无法弄清楚问题是什么。我在网上看到的所有内容似乎都没有限制进入表单的输入数量。有人想开导我,知道如何解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好几件事。

  1. 我刚刚测试了您的代码,并为user_searchinstrument_search收到了未定义的索引错误。所以我尝试在他们之前做一个isset函数,它对我有用。
  2. 您忘记将单引号放在$_GET['user_search']$_GET['instrument_search']
  3. 在您的值中尝试以下代码:

    <?php echo isset($_GET['user_search']) ? htmlspecialchars($_GET['user_search']) : ' '; ?>
    

    <?php echo isset($_GET['instrument_search']) ? htmlspecialchars($_GET['instrument_search']) : ' '; ?>
    

    您在输入中使用值标记的目的是什么?您可以在php中使用$ _GET并在不使用值标记的情况下获取值。使用value=将覆盖占位符,输入框在加载页面时不会显示任何文字!