我的选择表单不显示数据库项

时间:2017-11-30 13:07:36

标签: php mysql

我正在尝试创建一个用户可以将产品插入数据库的表单。他们必须输入的内容之一是类别,我使用选择输入表单,允许他们从可用的类别中选择(PHP和MySQL显示所有可用的类别)。 select元素中的选项是用PHP给出的。但由于某些原因,当我运行应用程序时,类别不会显示。没有错误或任何东西,并确保与数据库的连接。代码如下。我正在使用MVC模式,如果这有助于任何

具有该功能的文件(category_db.php)

<?php

function get_categories() {
    global $db;
    $query = "SELECT * FROM categories ORDER BY categoryID";
    $statement= $db->prepare($query);
    $statement->execute();
    return $statement;
}

文件的控制器(index.php)

<?php
require ('../models/database.php');
require ('../models/product_db.php');
require ('../models/category_db.php');


$action = filter_input(INPUT_POST, 'action');

if($action == NULL || $action==FALSE){
    $action = 'list_products';
}




if ($action == 'list_products'){
    $categories = get_categories();


    $category_id = filter_input(INPUT_GET, 'category_id');
    if ($category_id == NULL || $category_id == FALSE){
        $category_id = 1;
    }

    $product_item = get_product_list($category_id);
    include ('product_list.php');


} else if ($action = 'delete_product') {
    $product_id = filter_input(INPUT_POST, 'product_id');
    $category_id = filter_input(INPUT_POST, 'category_id');
    delete_product($product_id);
    header("Location: .?category_id=$category_id");

}
else if($action == 'add_product'){
    $categories = get_categories();
    include('add_product_form.php');
}

最后,显示表单的页面(add_product_form.php)

<?php include '../includes/header.php'; ?>

<main>
    <h3>Add Product Form</h3>
    <form method="post" action=".">
        <label for="category">Category</label>

           <select name="category">
        <?php foreach ( $categories as $category ) : ?>
            <option value="<?php echo $category['categoryID']; ?>">
                <?php echo $category['categoryName']; ?>
            </option>
        <?php endforeach; ?>

        </select>


        <br>

        <label for="product_code">Product Code</label>
        <input type="text" name="product_code"><br>

        <label for="product_name">Product Name</label>
        <input type="text" name="product_name"><br>

        <label for="list_price">List Price</label>
        <input type="text" name="list_price"><br>

        <input type="submit" value="Add Product">
    </form>
</main>


  <?php include '../includes/footer.php'; ?>

现在我已经对代码进行了三次检查,但我找不到问题。任何有关这方面的帮助将不胜感激。我也在使用netbeans,如果这有助于任何

1 个答案:

答案 0 :(得分:0)

我认为你应该使用&#34; fetchAll&#34;在你的函数中,你将返回一个包含所有类别的数组:

 function get_categories() {
    global $db;
    $query = "SELECT * FROM categories ORDER BY categoryID";
    $statement= $db->prepare($query);
    $statement->execute();

    $categories = $statement->fetchAll(PDO::FETCH_ASSOC);

    return $categories;
}

然后你可以循环遍历数组以获得你想要的数据。