仍然在使用一个简单的网络应用程序,但遇到的问题是$ _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文件以反映所讨论的更改,现在它们可以按我的意愿工作。
答案 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"
注意:变量名称中的点和空格将转换为下划线。例如变成$ _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'];