PHP MySql MVC PDO问题,表单未在UPDATE中填充产品信息



我是一名学生,这是第5周学习php/mySQL。我几乎已经收集到某个地方有一个未定义的变量,但我似乎找不到哪里。我已经在整个文档中将变量名更改为productID product_id,但没有用,并试图在html中回显该变量,但仍然得到相同的错误。我得到这个错误:

<br /><b>Notice</b>:  Undefined variable: product in <b>D:xampphtdocsch05_ex1product_managerproduct_edit.php</b> on line <b>10</b><br />
<br /><b>Notice</b>:  Undefined variable: product in <b>D:xampphtdocsch05_ex1product_managerproduct_edit.php</b> on line <b>15</b><br />
<br /><b>Notice</b>:  Undefined variable: product in <b>D:xampphtdocsch05_ex1product_managerproduct_edit.php</b> on line <b>20</b><br />
<br /><b>Notice</b>:  Undefined variable: product in <b>D:xampphtdocsch05_ex1product_managerproduct_edit.php</b> on line <b>25</b><br />

当我尝试更新一个表单时,它应该填充产品信息

这在我的索引中

<?php
require('../model/database.php');
require('../model/product_db.php');
require('../model/category_db.php');
$action = filter_input(INPUT_POST, 'action');
if ($action == NULL) {
$action = filter_input(INPUT_GET, 'action');
if ($action == NULL) {
$action = 'list_products';
}
}
//ACTION TO LIST PRODUCTS
if ($action == 'list_products') {
$category_id = filter_input(INPUT_GET, 'category_id', 
FILTER_VALIDATE_INT);
if ($category_id == NULL || $category_id == FALSE) {
$category_id = 1;
}
$category_name = get_category_name($category_id);
$categories = get_categories();
$products = get_products_by_category($category_id);
include('product_list.php');

//ACTION TO EDIT PRODUCTS   

}  if ($action == 'edit_product') {
$category_id = filter_input(INPUT_POST, 'category_id', FILTER_VALIDATE_INT);
$code = filter_input(INPUT_POST, 'code');
$name = filter_input(INPUT_POST, 'name');
$price = filter_input(INPUT_POST, 'price');
if ($category_id == NULL || $category_id == FALSE || 
empty($code)|| empty($name) || 
$price == NULL || $price == FALSE) {
$error = "Invalid product data. Check all fields and try again.";
include('../errors/error.php');
} else { 
edit_product($category_id, $code, $name, $price);
header("Location: .?category_id=$category_id");
}

这在我的产品列表中这些是我的按钮

<?php foreach ($products as $product) : ?>
<tr>
<td><?php echo $product['productCode']; ?></td>
<td><?php echo $product['productName']; ?></td>
<td class="right"><?php echo $product['listPrice']; ?></td>

<td><form action ="product_edit.php" method="post"
value="category_id">

<input type="hidden" name="product_id"
value="edit_product">
<input type="hidden" name="product_id"
value="<?php echo $product['productID']; ?>">
<input type="hidden" name="category_id"
value="<?php echo $product['categoryID']; ?>">
<input type="submit" value="Edit">
</form></td>

这是我在product_db 中的功能

function edit_product($category_id, $code, $name, $price) {
global $db;
$query = 'UPDATE products
SET categoryID = :category_id,
productCode = :code,
productName = :name,
listPrice = :price
WHERE productID = :product_id';
$statement = $db->prepare($query);
$statement->bindValue(':category_id', $category_id);
$statement->bindValue(':code', $code);
$statement->bindValue(':name', $name);
$statement->bindValue(':price', $price);
$statement->bindValue(':product_id', $product_id);
$statement->execute();
$statement->closeCursor();
}
?>

这是我的产品_编辑表单

<?php include '../view/header.php'; ?>
<main>
<h1>Edit Product</h1>
<form action="index.php" method="post" id="add_product_form">
<input type="hidden" name="action"
value="<?php echo $product['productID']; ?>">
<label>Category ID:</label>
<input type="input" name="category_id"
value="<?php echo $product['categoryID']; ?>">
<br>

<label>Code:</label>
<input type="input" name="code"
value="<?php echo $product['productCode']; ?>">
<br>
<label>Name:</label>
<input type="input" name="name"
value="<?php echo $product['productName']; ?>">
<br>
<label>List Price:</label>
<input type="input" name="price"
value="<?php echo $product['listPrice']; ?>">
<br>
<label>&nbsp;</label>
<input type="submit" value="Save Changes"><br>
<br>
</form>
<p class="last_paragraph">
<a href="index.php?action=list_products">View Product List</a>
</p>
</main>
<?php include '../view/footer.php'; ?>

当您在编辑表单中调用$product[…..]时,变量还没有第一次初始化,可能数组不在脚本的范围内,尽管$product[..]数组已经初始化,但无法设置。似乎一个页面脚本在调用时需要另一个按正确的初始化顺序初始化。

最新更新