-1

PHP スクリプトを機能させるのに問題があります。このコードは、製品をデータベースに追加するフォームを処理します。

コードで考えられる問題を探してみましたが、完全に迷っています。コードを書き直そうとしましたが、何らかの理由で何も機能していないようです。私は間違いなく何かが欠けています。

コードは次のとおりです。

    <form action="" method="post">
        <table width="436" border="0px">
            <tr class="even">
                <td width="132"><label for="title">title</label></td>
                <td width="333"><input type="text" size="40px" name="title" value=""  /></td>
            </tr>
            <tr class="odd">
                <td><label style=" text-align:top" for="icon_description">short description</label></td>
                <td><textarea name="icon_description" rows="2" cols="30"></textarea></td>
            </tr>
            <tr class="even">
                <td height="95"><label for="full_description">full description</label></td>
                <td><textarea name="full_description" cols="30" rows="6"></textarea></td>
            </tr>
            <tr class="odd">
                <td><label for="category">category</label></td>
                <td><select name="category" >
                    <?php
                        foreach(get_categories() as $category)
                        {
                    ?>
                        <option value="<?php echo $category['id']; ?>"> <?php echo $category['category_name']; ?> </option>
                    <?php
                        }
                    ?>
                </select></td>
            </tr>
            <tr class="even">
                <td><label for="price">price (<em>BsF</em>)</label></td><td><textarea name="price" rows="1" cols="20"></textarea></td>
            </tr>
            <tr class="odd">
                <td><label for="stock">stock</label></td><td><textarea name="stock" rows="1" cols="20"></textarea></td>
            </tr>
            <tr class="even">
                <td></td>
                <td style="margin-top:30px"><p style="text-align:left; margin-left:20px;"><input type="submit" value="Add Product" /></p></td>
            </tr>
        </table>
    </form>
</div>

同じページのドキュメントの上部に、フォームからのデータを処理し、それをデータベースに追加する実際の関数に送信する次のコードがあります。

<?php
    include_once('init.php');
    include_once('store.php');

    $products = get_all_available_products();

    if( isset($_POST['title'], $_POST['icon_description'], $_POST['category'], $_POST['price'], $_POST['stock']) )
    {
        $title = $_POST['title'];
        $icon_description = $_POST['icon_description'];
        $category = $_POST['category'];
        $price = $_POST['price'];
        $stock = $_POST['stock'];

        $errors = array();

        if( empty($title) )
        {
            $errors[] = 'You need to add a title.';
        }
        else if( strlen($title) > 125 )
        {
            $errors[] = 'Title cannot be longer than 255 characters.';
        }
        if( empty($icon_description))
        {
            $errors[] = 'Short description is empty.';
        }
        if( empty($price))
        {
            $errors[] = 'You need to specify a price.';
        }
        if( empty($stock))
        {
            $errors[] = 'You need to ad stock amount.';
        }

        add_product($title, $category, $icon_description, $price, $stock);

        header('Location: products.php');
        die();
    }

add_product() 関数があるコード:

include_once('init.php');

function add_product($title, $category_id, $description, $price, $stock)
{
    $title =  mysql_real_escape_string($title);
    $category_id = (int)($category_id);
    $description = mysql_real_escape_string($description);
    $price = doubleval($price);
    $stock = (int)$stock;

    $mysql_query("INSERT INTO `products` SET
                `product_name` = '{$title}',
                `product_description` = '{$description}',
                `category_id` = {$category_id},
                `price` = {$price},
                `stock` = {$stock}");
}

製品をデータベースに表示するための他のすべてのコードが機能しているため、接続と構成は問題ありません (と思います)。問題は、製品を追加しようとすると、ボタンをクリックして Web サイトを送信すると、サーバー エラーが発生することです。

4

1 に答える 1

-1

私が間違っている場合は修正してください。

  if( isset($_POST['title'] && $_POST['icon_description'] && $_POST['category'] && $_POST['price'] && $_POST['stock']) ) {
                   //....
}

それらの間に昏睡状態を入れる代わりに。

于 2012-10-05T15:38:50.247 に答える