带有$ _POST函数的未定义索引

时间:2012-10-30 09:38:29

标签: php mysql post

所以我基本上复制了以下代码,execpt重命名列名。

表格如下:

<table align="left" width="30%" border="0" >
<form action="company_edit_php.php" method="post">
<tr><td align="center" bgcolor="#ECE6E6">Location: <td align="center"> <input type="text" value="<?php echo $row['Location']?>"/><br></td></tr>
<tr><td align="center" bgcolor="#ECE6E6">User: <td align="center">  <input type="text" value="<?php  echo $row['User']?>"/><br></td></tr>
<tr><td align="center" bgcolor="#ECE6E6">Telephone: <td align="center">  <input type="text" value="<?php echo $row['Telephone']?>"/><br></td></tr>
<tr><td align="center" bgcolor="#ECE6E6">Email: <td align="center">  <input type="text" value="<?php echo $row['Email']?>"/><br></td></tr>
<td> <input type="submit" value="Change" /></td></tr>

和PHP代码:

<?php
$con = mysql_connect("localhost","username","password");
$id = isset($_GET['id']) ? (int)$_GET['id']: 1;
mysql_select_db("Database", $con);

if (isset($_POST['Location'])) {
    echo $_POST['Location'];
 } else {
    echo 'empty';
 } 

$Location = $_POST['Location'];

此代码的结果是未定义索引:位置和if语句我得到“空”。 为什么同样的代码适用于另一个页面?我现在该怎么办?

感谢您的努力

7 个答案:

答案 0 :(得分:2)

要更正索引帖子,请在文件开头使用此命令并使用变量$Location

$Location = (isset($_POST["Location"])?$_POST["Location"]:"");

答案 1 :(得分:1)

您必须更改表单,因为您错过name输入并使用$_GET检索值,您必须像这样使用它:

<tr><td align="center" bgcolor="#ECE6E6">Location: <td align="center"> <input type="text" name="Location" value="<?php echo $row['Location']?>"/><br></td></tr>

答案 2 :(得分:1)

要获取文本框的值,您需要为它们命名

<table align="left" width="30%" border="0" >
    <form action="company_edit_php.php" method="post">
    <tr><td align="center" bgcolor="#ECE6E6">Location: <td align="center"> <input type="text" value="<?php echo $row['Location']?>" name='location'/><br></td></tr>
    <tr><td align="center" bgcolor="#ECE6E6">User: <td align="center">  <input type="text" value="<?php  echo $row['User']?>" name='user'/><br></td></tr>
    <tr><td align="center" bgcolor="#ECE6E6">Telephone: <td align="center">  <input type="text" value="<?php echo $row['Telephone']?>" name='phone'/><br></td></tr>
    <tr><td align="center" bgcolor="#ECE6E6">Email: <td align="center">  <input type="text" value="<?php echo $row['Email']?>" name='mail'/><br></td></tr>
    <td> <input type="submit" value="Change" /></td></tr>

答案 3 :(得分:0)

试试这个:

<?php
$con = mysql_connect("localhost","username","password");
$id = isset($_GET['id']) ? (int)$_GET['id']: 1;
mysql_select_db("Database", $con);


$location= "";

if (isset($_POST['Location'])) {
    $location= $_POST['Location']; // <-------------    put this here!
    //echo $_POST['Location'];
 } else {
    echo 'empty';
 } 

 echo $location; // <-------------   added this


 //$Location = $_POST['Location'];  // it was erroring here as I am guessing that you were sometimes accessing the page without posting the location. If the variable does not exist, you cannot echo it.. thus the changes above

答案 4 :(得分:0)

Location未在您显示的代码中传递。因此$_POST['Location']未定义。把它放在你的if语句中以避免错误。

像:

$Location = 'empty';
if (isset($_POST['Location'])) {
    echo $_POST['Location'];
    $Location = $_POST['Location'];
 } else {
    echo 'empty';
 } 

答案 5 :(得分:0)

填写表格

<table align="left" width="30%" border="0" >
<form action="company_edit_php.php" method="post">
<tr><td align="center" bgcolor="#ECE6E6">Location: <td align="center"> <input type="text" value="<?php echo $row['Location']?>"/><br></td></tr>
<tr><td align="center" bgcolor="#ECE6E6">User: <td align="center">  <input type="text" value="<?php  echo $row['User']?>"/><br></td></tr>
<tr><td align="center" bgcolor="#ECE6E6">Telephone: <td align="center">  <input type="text" value="<?php echo $row['Telephone']?>"/><br></td></tr>
<tr><td align="center" bgcolor="#ECE6E6">Email: <td align="center">  <input type="text" value="<?php echo $row['Email']?>"/><br></td></tr>
<td> <input type="submit" value="Change" /></td></tr>

答案 6 :(得分:0)

从你所写的内容来看,没有任何一个名为&#34; Location&#34;在您制作的页面上,或者它在表单之外(因此不在内部......)。 因为它适用于原始源代码的网站,因此只有2个选项。

  1. 有问题的网站在适当的表单
  2. 中有一个名为location的字段
  3. 相关网站会抑制出现的错误消息。
  4. 为了让你的代码能够工作,你需要1.)把字段放在&#34;位置&#34;在表格内部,如果它还没有和2.)你需要&#34;安全&#34;获取变量,即使Location为空,也不会显示错误。 我给出了两种变体的不同示例: 1.)将位置放在表单中

    <form action="company_edit.php" method="post">
    ......
    <input type="text" name="Location" id="Location>
    ......
    </form>
    

    2。)确保即使位置确实记录错误,也不会发生错误,....     我甚至建议你为你想要的每个$ _POST和$ _GET变量执行以下步骤     在您的应用程序中使用,因为它减少了特定错误消息的机会     $ _GET / $ _ POST未设置相当大(尽管用于调试和查找写入错误     有错误消息很好。

    if (isset($_POST['Location'])
         $Location = $_POST['Location'];
    else
         $Location='';
    

    另一方面,由于您通过POST提供参数,并且您没有将ID放入URL,因此ID的$ _GET将始终生成一个空的id字段(因此&#34; 1&#34;总是用作id)。为了使它工作,你需要使用id作为post并在表单中放置一个适当的字段,否则你将不得不放弃&#34; action&#34;表单的一部分,以便id作为&#34;?id =&#34;那里的参数