- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为“ice_flavours”的数据库表,其中包含以下列:“id”、“flavours”、“date”、“selected”。另一个名为“ice_today”的表,例如:“id”、“flavors”、“date”、“selected”。
现在,在页面左侧,我想从“ice_flavors”调用并打印表单中的条目以及复选框。页面右侧应显示“展示”,我希望在其中显示今天选择的口味,它们将保留在那里直到今天的日期结束,然后自动被丢弃。另外,当它们被选择在 SHOWCASE 中显示时,我希望它们不要显示在左侧。
因此,当我选择口味旁边的复选框时,值“id”、“flavors”、“date”、“selected”应该输入到“ice_today”中,但由于某种原因总是最后一行输入ice_flavors表,我收到消息“键‘PRIMARY’的重复条目‘0’”
也许这一切都可以通过使用单个数据库表来完成,但我还没有想到。有人可以帮忙吗
编辑.php:
<?php ob_start();
include_once("dbinfo.inc.php");
include_once("config.php");
if(isset($_POST['submit'])){
$selected = $_POST['selected'];
$id = $_POST['id'];
$flavour = $_POST['flavour'];
$date = $_POST['date'];
if($_POST["submit"] == "submit") {
for($i=0;$i<sizeof($selected);$i++) {
if(!empty($flavour)) {
echo"";
echo "<pre>";
print_r($_POST);
echo "</pre>";
$query="INSERT INTO ice_today VALUES('$id','$flavour','$date','$selected[$i]')";
mysql_query($query) or die(mysql_error());
}
}
echo "Entry added";
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Edit</title>
</head>
<body>
<form name="form1" id="form1" method="POST" action="edit.php">
<table border="1" width="200px">
<td>
<table border="1" width="200px">
<?php
$result = mysql_query("SELECT * FROM ice_flavours WHERE ('selected' != '1') ORDER BY flavour ASC");
$results = mysql_num_rows($result);
if ($results > 0)
{
$num=mysql_numrows($result);
$i=0;
while ($i < $num)
{
$id=mysql_result($result,$i,"id");
$flavour=mysql_result($result,$i,"flavour");
?>
<tr>
<td align="center" valign="middle">
<?php echo $flavour; ?>
<input type="text" name="id" id="id" value="<?php echo $id; ?>">
<input type="text" name="flavour" id="flavour" value="<?php echo $flavour; ?>">
<input type="text" name="datum" id="datum" value="<?php echo date('Y-m-d'); ?>">
<input type="checkbox" name="selected[]" id="selected" value="<?php echo '1'; ?>">
</td></tr>
<?php
$i++;
}
?>
<input type="submit" value="submit">
<?php } ?>
</td>
<td>
<table border="1" width="200px">
<tr><td align="center" valign="middle">
SHOWCASE
</td></tr>
<?php
include_once("dbinfo.inc.php");
include_once("config.php");
$result2 = mysql_query("SELECT * FROM ice_today ORDER BY flavour ASC");
$results2 = mysql_num_rows($result2);
if ($results2 > 0)
{
$num2=mysql_numrows($result2);
$j=0;
while ($j < $num2)
{
$id=mysql_result($result2,$j,"id");
$flavour=mysql_result($result2,$j,"flavour");
?>
<tr><td align="center" valign="middle">
<?php echo $flavour; ?>
</td></tr>
<?php
$j++;
}
}
echo '</td></tr></table>';
?>
</body>
</html>
<?php ob_end_flush(); ?>
最佳答案
请查看 MySQL Reference Manual 。您需要在 INSERT
语句中指定每一列:
$query="INSERT INTO ice_today(id, flavours, date, selected) VALUES('$id','$flavour','$date','$selected[$i]')";
我还建议您不要再使用原来的 MySQL 扩展,因为它是 deprecated从 PHP 5.5.x 开始。当使用另一个 MySQL 扩展(例如 MySQLi 或 PDO: mysqli or PDO - what are the pros and cons? )时,您还可以使用准备好的语句来防范 SQL injections 。 (你现在还不是)。
POST 值可以被操纵,并且当您只是通过字符串连接将它们输入到查询中时,您对它们并不安全。
关于php mysql 复选框和文本框值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954503/
我是一名优秀的程序员,十分优秀!