0

首先,在编码方面我是新手,所以请耐心等待:)

我要做的是从 MySQL 表(类别)中选择两行('ID','name'),用一行('name')填充下拉列表,并在提交表单时通过另一个('ID')到另一个表。

现在,我可以填充下拉列表,没问题。我已经用“ID”和“名称”填充了它,以测试我用来保存这些信息的两个变量是否包含正确的数据。但我似乎无法 $_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

蓝精灵。

4

3 回答 3

0

你想要的$_POST变量,在里面category_name

因为你的选择是...

<select name='category_name'>

所以你需要通过...

$_POST['category_name'];

这将返回您分配给选择选项的任何内容...即

2  Name

2 是ID,而 Name 是name

但是,如果您想使用该 ID 从 DB 或任何东西中检索,您将不得不将其分解......就像这样......以获得每一块。

$array = explode(" ", $_POST['category_name']);

那会给你留下...

  $array[0] = ID
  $array[1] = Name

但我会避免所有这部分,只需将 ID 分配给值......就像这样......

echo "<option value = '".$cat_ID."'> ".$cat_name." </option>";

这样,您只需传递 ID 并在另一端访问它。

于 2013-07-23T15:19:35.437 回答
0

这波纹管:

echo "ID: " .  $_POST['$row["ID"]'] . "<br>";
echo "Category: " .  $_POST['$row["name"]'] . "<br>";

错了,选择元素有它的名字category_name,所以,你应该这样做:

echo "Category: " .  $_POST['category_name'] . "<br>";
于 2013-07-23T15:20:42.957 回答
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元素的select值似乎是 ID 和名称的组合:

"<option value='" . $cat_ID . $cat_name . "'>"

因此,如果用户选择一个值为1SomeNamethen的选项,则$_POST['category_name']计算结果为'1SomeName'

将 ID和Name的组合用于选项值当然是非常规的,但它应该可以工作。问题是您现在有一个复合字符串,需要对其进行解析才能有用。通常一个人会做的只是使用 ID 作为值和名称作为显示。在整个代码中使用它所需要的只是ID

于 2013-07-23T15:22:18.313 回答