php mysql 复选框和文本框值插入数据库

标签 php mysql arrays

我有一个名为“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/

相关文章:

php - 在 SQL 中创建表和字段的脚本不起作用

php - 简单的 PHP/mySQL 查询?

php - 在 php 中将 ip 转换为整数的正确方法是什么?

c - 为什么 C 会有 "fake arrays"?

c++ - 如何使用此特定容器在 C++ 中创建二维数组

java - 在JAVA中访问父for循环之外的数组

php - 加载数据内文件 - 字段终止错误

php - 检查用户名是否存在,如果存在则加一

c# - 大表查询连接超时

php - 这个 mySQL 查询可以更好地优化吗?不是 mySQL 专家,但我认为我是对的