【问题标题】:PHP GET problem - no form $_GET data is presentPHP GET 问题 - 没有表单 $_GET 数据存在
【发布时间】:2011-06-07 04:35:55
【问题描述】:

我有一个简单的 PHP 表单,它显示来自 mysql 数据库的值的输入,并将表单结果发送到另一个页面,该页面根据GET 结果更新数据库表:

echo "<table>";
echo "<tr>";
echo "      <th>Project No</th>
    <th>Customer Name</th>
    <th>Description</th>
  </tr>";

  while($row = mysql_fetch_array($result))
  {     
    echo "<tr>";
    echo "<td><input value=" . $row['project_no'] . "></input></td>";
    echo "<td><input value='" . $row['cust_name'] . "'></input></td>";
    echo "<td><input value='" . $row['description'] . "'></input></td>";
    echo "</tr>";
  }
echo "</table>";
echo "<input type='submit' value='Update' />";
echo "</form>";

updateprojects.php 我这样做时:

echo $_GET['project_no'].$_GET['cust_name'].$_GET['description'];   

我没有看到任何值。这是为什么呢?

【问题讨论】:

  • print_r($_REQUEST) 带来了什么?
  • 您可能想使用 HEREDOCS (php.net/heredoc) 而不是像您这样的回声进行调查。它们让生活变得更轻松,因为您不必逃避引号之类的。
  • 由于您正在创建带有循环的表单输入,因此(请参阅我的回答)应该适合您,只需从数据库中获取行/记录的 id。

标签: php forms get


【解决方案1】:

在输入字段中需要用“name”属性指定参数名称。

echo "<tr>";
echo "<td><input name=\"project_no\" value=" . $row['project_no'] . "></input></td>";
echo "<td><input name=\"cust_name\" value='" . $row['cust_name'] . "'></input></td>";
echo "<td><input name=\"description\" value='" . $row['description'] . "'></input></td>";
echo "</tr>";

【讨论】:

  • 他正在循环结果。如果有 2 行或更多行,将会有 2 个或更多具有相同名称的字段。检查我的答案:)
【解决方案2】:

您忘记了输入名称:

<td><input name='project_no' value=" . $row['project_no'] . "></input></td>

如果你不这样做,php 不知道你所说的“project_no”是什么意思。每个输入都需要一个名称。

【讨论】:

    【解决方案3】:

    这是因为您没有为输入标签分配名称:

    echo "<td><input name=\"project_no\" value=\"" . $row['project_no'] . \"></input></td>
    

    以上应该可以。

    【讨论】:

      【解决方案4】:

      您的输入没有name 属性

      【讨论】:

      • 这种情况下div不能正常工作,因为你需要一个object形式来发送,而div标签是property。不会工作,但如果你真的想使用 div 标签,那么你将需要使用 javascript(看看 jQuery)
      【解决方案5】:

      由于您正在使用循环创建表单输入,这应该适合您(您不能有 2 个具有相同名称的输入字段),只需从数据库中获取行/记录的 id:

      echo "<form method='get' action='updateprojects.php'>";
                      echo "<table>";
                      echo "<tr>";
                      echo "      <th>Project No</th>
                              <th>Customer Name</th>
                              <th>Description</th>
                          </tr>";
      
                      while($row = mysql_fetch_array($result))
                          {       
                              echo "<tr>";
                              echo '<td><input value="' . $row['project_no'] .'" name="form['.$row['id'].']['project_no']"/></td>';
                              echo '<td><input value="' . $row['cust_name'] .'" name="form['.$row['id'].']['cust_name']"/></td>';
                              echo '<td><input value="' . $row['description'] .'" name="form['.$row['id'].']['description']"/></td>';
                              echo "</tr>";
                          }
                      echo "</table>";
                      echo '<input type="submit" name="submit" value="Update" />';
                      echo "</form>";
      
      if(isset($_GET['submit'])){
          foreach($_GET['form'] as $id=>$column){
      
              //update your database where id=$id. This is just testing
              echo 'Row '.$id .' =>'. $column['project_no'].'-'.$column['cust_name'].'-'.$column['description'];
      
          }
      }
      

      【讨论】:

        【解决方案6】:

        您需要将name="" 属性添加到您的输入中。

        【讨论】:

          【解决方案7】:

          过去对我有帮助的事情是使用 Firebug 中的 Net 选项卡并启用 Persist 选项以查看浏览器实际发送回的内容。在一种情况下,表单的某些字段有重复条目,但第二个条目没有发送正确的值。

          【讨论】:

            【解决方案8】:

            请告知提交类型,或隐藏文字。和/或验证您是否从 sql 查询返回数据。

            【讨论】:

              【解决方案9】:

              在我看来,您的 HTML 输入中需要有一个 name="project_no"。

              【讨论】:

                猜你喜欢
                • 2010-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-03-29
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多