首先,在编码时我是新手,所以请善待和耐心:)
我要做的是从MySQL表(类别)中选择两行('ID','name'),用一行填充下拉列表('name'),并提交一个表单,将另一个('ID')传递给另一个表。
现在,我可以填充下拉列表,没问题。我用'ID'和'name'来填充它,以测试我用来保存这些信息的两个变量都包含正确的数据。但我似乎无法提供$ _POST信息。
我想我正在查看数组的错误部分,或者我只是使用了错误的代码。
这是在数据库类别下创建新产品的代码。
<?php
include 'db_config.php';
?>
<form enctype="multipart/form-data" action="insert.php" method="post">
<h3>Add New Product</h3>
Category:
<!-- START OF categories (table) names (row) SQL QUERY -->
<? $sql = "SELECT ID, name FROM categories";
$result = $mysqli->query($sql);
echo "<select name='category_name'>";
while ($row = $result->fetch_assoc()) {
$cat_ID=$row['ID'];
$cat_name=$row['name'];
extract($row);
echo "<option value='" . $cat_ID . $cat_name . "'>" . $cat_ID . " " . $cat_name ."</option>";
}
echo "</select>";
?>
<!--END OF SQL QUERY -->
<br>
Code: <input type="text" name="code"><br>
Name: <input type="text" name="prod_name"><br>
Description: <input type="textarea" name="description"><br>
Image: <input type="file" name="image"><br>
<input type="Submit">
</form>
现在,我只是在insert.php脚本中回应这个,来测试上面的代码。这是insert.php脚本的片段。
echo "ID: " . $_POST['$row["ID"]'] . "<br>";
echo "Category: " . $_POST['$row["name"]'] . "<br>";
echo "Code: ". $_POST['code'] . "<br>";
echo "Name: " . $_POST['prod_name'] . "<br>";
echo "Description: ". $_POST['description'] . "<br>";
echo "Image: " . $_POST['image'] . "<br>";
不要担心上面的最后一行。我知道这需要$ _FILES,我已经涵盖了所有这些。我已经停止将数据写入表中,直到我解决了我的问题。在完整脚本中,图像正在上传到“/ images”以及存储在表格中的位置。一切正常。
问题在于前两行,因为返回时它们是空白的。我以为我正在正确地存储信息,因为我调用相同的变量来填充下拉列表,但我似乎无法$ _POST它。
这有意义吗?
感谢所有帮助我的人。有一天,我会和你一样......我希望。
TIA
蓝精灵。
答案 0 :(得分:0)
您想要的$_POST
变量位于category_name
Cuz你的选择是......
<select name='category_name'>
所以你需要得到它......
$_POST['category_name'];
将返回您分配给选择选项的任何内容...即
2 Name
2为ID
,名称为name
但是,如果你想使用该ID从数据库或任何东西中检索,那么你将不得不将它分开...就像这样....来获取每一件。
$array = explode(" ", $_POST['category_name']);
那将会让你......
$array[0] = ID
$array[1] = Name
但我会避免所有这一部分,只需将ID分配给值......就像这样..
echo "<option value = '".$cat_ID."'> ".$cat_name." </option>";
这样你就可以传递ID并在另一端访问它。
答案 1 :(得分:0)
这个轰鸣声:
echo "ID: " . $_POST['$row["ID"]'] . "<br>";
echo "Category: " . $_POST['$row["name"]'] . "<br>";
错误,select元素的名称为category_name
,因此,您应该这样做,而不是这个
做:
echo "Category: " . $_POST['category_name'] . "<br>";
答案 2 :(得分:0)
echo "ID: " . $_POST['$row["ID"]'] . "<br>";
echo "Category: " . $_POST['$row["name"]'] . "<br>";
表单中没有任何包含这些名称的表单元素($row["ID"]
和$row["name"]
)。无论如何,那些表单元素的确实奇怪的名称。您正在创建的表单元素是:
<select name='category_name'>
因此,所选值将发布为:
$_POST['category_name']
该option
的{{1}}元素似乎包含ID和名称组合的值:
select
因此,如果用户选择值为"<option value='" . $cat_ID . $cat_name . "'>"
的选项,则1SomeName
将评估为$_POST['category_name']
。
对于选项值使用ID 和 Name的组合肯定是非常规的,但它应该有效。问题是你现在有一个复合字符串需要解析才能有用。通常,人们会做的只是使用ID作为值,使用Name作为显示。 所有需要在整个代码中使用它的是ID。