PHP GET问题 - 没有形式$ _GET数据存在

时间:2011-01-11 13:43:03

标签: php forms get

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

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'];   

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

9 个答案:

答案 0 :(得分:4)

在输入字段中,您需要使用“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>";

答案 1 :(得分:3)

您忘记了输入名称:

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

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

答案 2 :(得分:3)

这是因为您没有为输入标签指定名称:

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

上述情况应该有效。

答案 3 :(得分:1)

您的输入没有name属性

答案 4 :(得分:1)

由于您使用循环创建表单输入,这应该适合您(您不能有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'];

    }
}

答案 5 :(得分:0)

您需要在输入中添加name=""属性。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

在我看来,您需要在HTML输入中使用name =“project_no”。