我有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 与原始版本一起发生。
答案 0 :(得分:0)
对于您的第一个问题,您需要像这样回显post变量:
echo $_POST['code'];
同样在你的mysql查询中,你也缺少post变量中的引用,解决它的一种方法是:
'`{$_POST['code']}'`
或:
'".$_POST['code']."'
对于您的第二个问题,您可以使用addbowl.php
代码,并将其包装在&#34;如果请求方法是post&#34;声明,所以只有在提交表单时才会将新内容添加到数据库中,然后将表单的html放在其下面,当然不在PHP
标记之间。这样即使在发布时,您也会与表单保持同一页面。