PHP不返回变量

时间:2014-04-25 05:22:15

标签: php html mysql return-value

我有menu.php:

    <!DOCTYPE html>
<html>
    <body>
        <ul>
            <li>
                <div style="width:150px;height:30px;border:1px solid blue;">
                    <a href="http://localhost/SCW_Files//Form_AddWood.html">Add wood to DataBase</a>
                </div>
            </li>
            <li>
                <div>
                    <a href="http://localhost/SCW_Files//Form_AddBowl.html">Add bowl to DataBase</a>
                </div>
            </li>
            <li>
                <div>
                    <a href="http://localhost/SCW_Files//Form_AddTime.html">Add time to DataBase</a>
                </div>
            </li>
        </ul>

调用Form_AddBowl.html:

    <html>
    <body>
        <form action="Form_AddBowl.php" method="post"><br /><br />
            <div style="color:sienna;margin-left:300px;">
                <br />
                <div style="color:blue; serif; text-decoration:underline;">
                    <h1>Add bowl to database</h1>
                </div>
                <br /><br />
                BowlCode: <input type="text" name="code"><br /><br />
                SpeciesYear: <input type="text" name="species"><br /><br />
                ProduceHeading: <input type="text" name="heading"><br /><br />
                BowlDetails: <input type="text" name="details"><br /><br />
                BowlPrice: <input type="text" name="price"><br /><br />
                <input type="submit">
            </div>
        </form>

    </body>
</html> 

在提交时,调用Form_AddBowl.php:

            <?php include("menu.php"); ?>
        <?php
        $con = mysql_connect("localhost","xxxx","xxxx");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }

        mysql_select_db("scw-db", $con);

        $sql="INSERT INTO tblsplintersbowlinventory (txtProductBowlCode, txtSpeciesSeq, txtProductHeading, txtProductBowlDetails, curProductBowlPriceAsked)
        VALUES
        ('$_POST[code]', '$_POST[species]','$_POST[heading]', '$_POST[details]', '$_POST[price]')";

        if (!mysql_query($sql,$con))
          {
          die('Error: ' . mysql_error());
          }
        echo "<br>1 record added";

        mysql_close($con);
        ?>
    </body>
</html>

在DB中,字段“txtProductBowlCode”被定义为“唯一”。

菜单工作正常,Form_AddBowl.html显示新碗的形式。

只要代码字段是唯一的,Form_AddBowl似乎就可以工作。

如果代码是唯一的,则返回“ 1条记录添加 ”,如果不是,则返回:

Error: Duplicate entry 'Maple15-001' for key 'PRIMARY'

问题1: 当Maple15-001是一个新代码时,如何让它显示结果“Maple15-001 record added”?

我试过了:

echo '<br>';
echo "$code record added";

但是这会返回错误:

    Notice: Undefined variable: code in C:\xampp\htdocs\SCW_Files\Form_AddBowl.php on line 20
record added 

问题2: 这将返回菜单而不是碗形式 - 我可能想要连续输入几个碗,如果代码是重复的,则用新的替换它。

编辑:

我做了安德鲁建议的修改,这是代码:

    <?php include("menu.php"); ?>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
    $con = mysql_connect("localhost","xxxxxx","xxxxx");
    if (!$con)
    {
        echo 'Could not connect to database ' . mysql_error();
    } else {
        mysql_select_db("scw-db", $con);

        $sql="INSERT INTO tblsplintersbowlinventory (txtProductBowlCode, txtSpeciesSeq, txtProductHeading, txtProductBowlDetails, curProductBowlPriceAsked)
        VALUES
        ('$_POST[code]', '$_POST[species]','$_POST[heading]', '$_POST[details]', '$_POST[price]')";
        if (!mysql_query($sql,$con))
        {
            echo '<br>Could not save new bowl ';
            echo $_POST['code'];
            echo '<br>Error: ' . mysql_error();
        } else {
            echo '<br>';
            echo $_POST['code'];
            echo " record added";
        }
    }
    mysql_close($con);
}
?>
        <form action="" method="post"><br /><br />
            <div style="color:sienna;margin-left:300px;">
                <br />
                <div style="color:blue; serif; text-decoration:underline;">
                    <h1>Add bowl to database</h1>
                </div>
                <br /><br />
                BowlCode: <input type="text" name="code"><br /><br />
                SpeciesYear: <input type="text" name="species"><br /><br />
                ProduceHeading: <input type="text" name="heading"><br /><br />
                BowlDetails: <input type="text" name="details"><br /><br />
                BowlPrice: <input type="text" name="price"><br /><br />
                <input type="submit">
            </div>
        </form>
    </body>
</html> 

当我调用脚本时,我看到:

    Could not save new bowl '; echo $_POST['code']; echo '
Error: ' . mysql_error(); } else { echo '
'; echo $_POST['code']; echo " record added"; } } mysql_close($con); } ?>

显示在页面顶部 - BEFORE 输入任何内容...

下面是表格。

当我在字段中输入一个新碗并点击提交时,顶部的文本没有改变,我所做的条目消失了,测试碗没有输入数据库, DOES 与原始版本一起发生。

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,您需要像这样回显post变量:

echo $_POST['code'];

同样在你的mysql查询中,你也缺少post变量中的引用,解决它的一种方法是:

'`{$_POST['code']}'`

或:

'".$_POST['code']."'

对于您的第二个问题,您可以使用addbowl.php代码,并将其包装在&#34;如果请求方法是post&#34;声明,所以只有在提交表单时才会将新内容添加到数据库中,然后将表单的html放在其下面,当然不在PHP标记之间。这样即使在发布时,您也会与表单保持同一页面。