php - 如何 $_POST 从 PHP 类别列表函数中选择值?

标签 php mysql forms function select

我有一个类别列表作为 PHP 函数。我在一个表单中调用这个函数来显示选项。但是我无法获得将所选选项发布到我的数据库的表单。我已经搜索过 SO 和在线,但大多数问题都与作为一个选择选项的值有关,这会更容易。然而,我的名单很长,可能会改变。表单中的其他值已正确发送到数据库,除了我正在处理的图片,但是我找不到从表单下拉列表中插入所选值的方法。

这是我将信息从表单发送到数据库的简单 sql 查询:

if (isset($_POST['submit']))
{
    $title = $_POST['title'];
    $subtitle = $_POST['subtitle'];
    $description = $_POST['description'];
    $category= $_POST['category'];
    $pic1 = $_POST['pic1'];
    $pic2 = $_POST['pic2'];
    $pic3 = $_POST['pic3'];
    $pic4 = $_POST['pic4'];
    $pic5 = $_POST['pic5'];
    $item_location = $_POST['location'];
    $items_wanted = $_POST['wanted'];
    mysql_query("INSERT INTO items_available (title, subtitle, description, category, image_path1, image_path2, image_path3, image_path4, image_path5, item_location, items_wanted) VALUES ('$title', '$subtitle', '$description', '$category', '$pic1', '$pic2', '$pic3', '$pic4', '$pic5', '$item_location', '$items_wanted')")or die(mysql_error());
    header('Location: prompt.php?x=8');
}

这是从我的表单中选择类别的字段的代码,它是一个下拉列表:

<div class="field">
    <label for="category">Category:</label>
    <select id=\"category\" name=\"category\" class=\"searchBox\">
        <?php createCategoryList(); ?>
    </select>
</div>

这是类别列表函数的代码:

//Creates Category <option>'s for search bar
function createCategoryList(){
if( ctype_digit($_GET['category']) ){ $x = $_GET['category']; }else{ $x = 999; }
echo "<option>All Categories</option>";
$i=0;
while(1){
    if(numberToCategory($i)=="Category Does Not Exist"){
        break;
    }else{
        echo " <option value=\"$i\" ";
        if($i==$x){echo ' SELECTED ';}
        echo " > ";
        echo numberToCategory($i);
        echo "</option>";
    }
    $i++;
}
}

//Category Number to String
function numberToCategory($n){
switch($n){
case 0:
    $cat = "Antiques";
    break;
case 1:
    $cat = "Art";
    break;
case 2:
    $cat = "Automotive";
    break;
case 3:
    $cat = "Baby";
    break;
case 4:
    $cat = "Books";
    break;
case 5:
    $cat = "Business & Industrial";
    break;
case 6:
    $cat = "Cameras & Photo";
    break;
case 7:
    $cat = "Clothing & Accessories";
    break;
case 8:
    $cat = "Collectibles";
    break;
case 9:
    $cat = "Computers";
    break;
case 10:
    $cat = "Crafts";
    break;
case 11:
    $cat = "DVD's & Movies";
    break;
case 12:
    $cat = "Electronics";
    break;
case 13:
    $cat = "Health & Beauty";
    break;
case 14:
    $cat = "Home & Garden";
    break;
case 15:
    $cat = "Jewelry & Watches";
    break;
case 16:
    $cat = "Music";
    break;
case 17:
    $cat = "Pet Supplies";
    break;
case 18:
    $cat = "Services";
    break;
case 19:
    $cat = "Sports & Outdoors";
    break;
case 20:
    $cat = "Sports Memorabilia & Cards";
    break;
case 21:
    $cat = "Tools & Home Improvement";
    break;
case 22:
    $cat = "Toys & Hobbies";
    break;
case 23:
    $cat = "Video Games";
    break;
case 24:
    $cat = "Other";
    break;
default:
    $cat = "Category Does Not Exist";
}

目前所选选项的数值被传递,即如果我从下拉列表中选择婴儿选项,那么数字 3 将输入我的数据库。如何将此数值替换为下拉列表中显示的对应值?

非常感谢所有和任何答案。

最佳答案

提交的值是您的选项标签的值属性设置的值。因此,如果您将其更改为以下内容,它将提交类别名称而不是数字:

$catName = numberToCategory($i);
echo "<option value='$catName'>$catName</option>";

然而,马丁在他的评论中提出的建议会更好。包含类别的表应该有一个 ID,这是您应该放入数据库并使其成为外键的字段。

一般来说,在数据库中使用特殊格式的字符串是不好的做法,而是创建一个包含其中字符串的表并在其他表中引用该行 ID。

关于php - 如何 $_POST 从 PHP 类别列表函数中选择值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106505/

相关文章:

php - PHP 和 MySQL 中的日期

php - 我在数据库中遇到 "ADD"和 "INSERT"函数的问题

MySQL 使用内连接更新现有值

使用 SQLyog 备份 MySQL 表

javascript - 标记复选框后的必填字段

javascript - 如何从不规范的字段中获取值

php - ZF2 : Dependency injection done the proper way

php - Symfony3 中的 SonataAdmin - 没有注册模型管理器

MySQL 多个连接到同一个表

javascript - 使用js更新表单字段但未在提交的数据中显示