$ _POST数组问题PHP MySQL

时间:2013-07-23 15:16:26

标签: php mysql post

首先,在编码时我是新手,所以请善待和耐心:)

我要做的是从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

蓝精灵。

3 个答案:

答案 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。