$ _POST变量没有拉过来

时间:2013-12-24 14:20:09

标签: php mysql post

仍然在使用一个简单的网络应用程序,但遇到的问题是$ _POST变量没有被拉过来。

edit.php:

<html>
 <head>
  <link rel="stylesheet" type="text/css" href="includes/styles.css" media="screen" />
  <title>Inventory</title>
 </head>
 <body>
<?php
include 'includes/dbconnect.php';

$inven_id = $_GET['id'];
$query = "SELECT
            * 
          FROM 
            inventory 
          INNER JOIN 
            products 
          ON 
            inventory.sku=products.sku 
          WHERE 
            inventory.id = '$inven_id'"; 


$result = mysqli_query($con,$query) or die(mysqli_error($con));
$row = mysqli_fetch_array($result);
mysqli_close($con);
?>

<form method="POST" action="submitchanges.php" />

<table>

<tr>
<td><input type="hidden" name="id" value="<?php echo $inven_id ?>" /></td>
</tr>

<tr>
<td><b>Species:</b></td>
<td><input type="text" name="species" value="<?php echo $row['name']; ?>" readonly="readonly" size="35" /></td>
</tr>

<tr>
<td><b>SKU:</b></td>
<td><input type="text" name="sku" value="<?php echo $row['sku']; ?>" readonly="readonly" size="35" /></td>
</tr>

<tr>
<td><b>Category:</b></td>
<td><input type="text" name="category" value="<?php echo $row['category']; ?>" readonly="readonly" size="35" /></td>
</tr>

<tr>
<td><b>Fry Count:</b></td>
<td><input type="text" name="frycount" value="<?php echo $row['quantityfry']; ?>" size="35" maxlength="4" /></td>
</tr>

<tr>
<td><b>Juvie Count:</b></td>
<td><input type="text" name="juviecount" value="<?php echo $row['quantityjuv']; ?>" size="35" maxlength="4" /></td>
</tr>

<tr>
<td><b>Adult Count:</b></td>
<td><input type="text" name="adultcount" value="<?php echo $row['quantityadult']; ?>" size="35" maxlength="4" /></td>
</tr>

<tr>
<td><b>Notes:</b></td>
<td><input type="text" name="notes" value="<?php echo $row['notes']; ?>" size="35" maxlength="255" /></td>
</tr>

<tr>
<td><b>Location:</b></td>
<td><input type="text" name="location" value="<?php echo $row['location']; ?>" size="35" /></td>
</tr>

<tr>
<td><b>Owner:</b></td>
<td><input type="text" name="owner" value="<?php echo $row['owner']; ?>" size="35" /></td>
</tr>

</table>

<input type="submit" name="submit" value="submit">

</form>

submitchanges.php:

<html>
 <head>
  <link rel="stylesheet" type="text/css" href="includes/styles.css" media="screen" />
  <title>Inventory</title>
 </head>
 <body>
<?php
include 'includes/dbconnect.php';

$id = $_POST['id'];
$quantityfry = $_POST['frycount'];
$quantityjuv = $_POST['juviecount'];
$quantityadult = $_POST['adultcount'];
$notes = $_POST['notes'];
$location = $_POST['location'];
$owner = $_POST['owner'];

$query="UPDATE
          inventory
        SET
          quantityfry = '$quantityfry',
          quantityjuv = '$quantityjuv',
          quantityadult = '$quantityadult',
          notes = '$notes',
          location = '$location',
          owner = '$owner'
        WHERE
          id='$id'";

$result = mysqli_query($con,$query) or die(mysqli_error($con));

if ($result)
{
  echo "Successful!";
  echo "<BR>";
  echo "<a href='index.php'>View result</a>";
}

else

{
  echo "ERROR!";
}

mysqli_close($con);
?>

似乎有些变量(三个数量*)没有正确拉动。当我将它添加到我的submitchanges.php时,它不会显示任何输出:

echo $_POST['quantityfry'];
echo $_POST['quantityjuv'];
echo $_POST['quantityadult'];

但是,这确实提供了预期的输出:

echo $_POST['notes'];
echo $_POST['location'];
echo $_POST['owner'];

我错过了什么?

编辑:更新了PHP文件以反映所讨论的更改,现在它们可以按我的意愿工作。

3 个答案:

答案 0 :(得分:2)

您在表单中使用的名称与您尝试从$ _POST获取的字段的名称不匹配:

 name="fry count" 

应该是

name="quantityfry" 

答案 1 :(得分:0)

您的HTML输入已损坏,具体取决于您使用的浏览器,这可能是导致数据无法正确发布的原因。

例如

<input //... readonly="readonly" size="35"

需要结束HTML标记

<input //... readonly="readonly" size="35"/>

此外,我认为使用空格张贴的变量只能在带有下划线的$_POST超全球中使用。

所以fry count将为$_POST['fry_count']

因此,对输入元素使用标准命名约定是有意义的(在HTML中直接使用下划线_

<input type="text" name="fry_count" 

修改 PHP documentation

  
    

注意:变量名称中的点和空格将转换为下划线。例如变成$ _REQUEST [“a_b”]。

  

答案 2 :(得分:0)

您在submitchanges.php:文件中写下此变量:

$quantityfry = $_POST['quantityfry'];
$quantityjuv = $_POST['quantityjuv'];
$quantityadult = $_POST['quantityadult'];

但在edit.php:

没有quantityfry,quantityjuv,quantityadult的字段名称(在edit.php中)

所以更改一个文件变量并使其在两个页面中都相同。

我认为你最好在submitchanges.php更改变量。

可能是这样的:

$quantityfry = $_POST['frycount'];
$quantityjuv = $_POST['juviecount'];
$quantityadult = $_POST['adultcount'];