【问题标题】:How to add checkbox data and text to database by form (php)?如何通过表单(php)将复选框数据和文本添加到数据库?
【发布时间】:2014-02-07 21:55:03
【问题描述】:

我有一个包含 3 个的数据库。第一个表名为“periorismoi”和“programmata”。第一个有 2 个列(“Auxon”、“Title”),第二个有 3 个(“Auxon”、“Name”、“Periorismoi”)。我制作了一个页面,添加了一个新的“programmata”。在“名称”列中,将从表单中添加一个文本,在“Periorismoi”列中,将从复选框中添加一个名称(来自同一表单)。复选框名称将来自“periorismoi”表。我给你表单的页面,然后是插入到数据库(操作)页面。它不起作用。也许是服务器错误?在我将复选框放入表单之前,它曾经可以工作。请注意,Periorismoi 与 periorismoi 不同。

   <form action='Insert.php' method="post" enctype='multipart/form-data' periorismoi="periorismoi">
   <textarea name="title" placeholder="Πρόγραμμα" rows=\"1\" cols=\"50\"></textarea>
<?php
$link = mysql_connect('localhost', 'student1905','123456');
mysql_select_db('student1905');
$q="select * FROM periorismoi";
$result=mysql_query($q);
$counts=mysql_num_rows($result);
for ( $i = 0; $i < $counts; ++$i ) {
$row = mysql_fetch_array( $result );
    if(isset($row[ "Title" ]))
   {$Title= $row[ "Title" ];
     }
    ?> 
<input type="checkbox" name="<?php echo "periorismoi$i"; ?>" value=""<?php echo $row['Title']; ?>""><?php echo "$Title";?>      <br>      
<?php
}
?>

插入.php 页面:

<?php
$link = mysql_connect('localhost', 'student1905','123456');
mysql_select_db('student1905');
$title= trim($_POST["title"]);
if(!$link) 
{
   die('Could not connect: ' . mysql_error());
}
else {
    if(strlen($title) == 0) 
    {
        header("Location:Index.php"); 
    }
    else
    {
     mysql_query("SET NAMES utf8");
      $periorismoi = implode(',', $_POST['periorismoi']);
    $len = sizeof($periorismoi);
    for($i=0; $i<$len;$i++){ 
        $sql="INSERT INTO programmata (Auxon,Title,Periorismoi) VALUES ('','$title','$periorismoi')";
                 mysql_query($sql);
    }
      header("Location:Index.php"); ; 
    }
}
?>

【问题讨论】:

  • 您是否收到任何错误消息?除此之外,请注意代码中可能存在的 sql 注入攻击。
  • @TobiasZander 未显示错误。它在将复选框连接到“periorismoi”表之前工作。
  • @TobiasZander 我如何检查 sql 注入攻击?我的意思是如何避免它们?

标签: php database forms checkbox insert


【解决方案1】:

在表单中,您创建多个具有不同名称属性的复选框:

(periorismoi0, periorismoi1, ...)

然后,当您读取参数时,您会尝试读取不存在的 $_POST['periorismoi']。您应该阅读每个复选框($_POST['periorismoi0'], $_POST['periorismoi1'], ...(我强烈不推荐),或者您应该定义多个具有相同名称的复选框。

查看这个帖子:Get $_POST from multiple checkboxes

【讨论】:

  • 我希望我能给你声誉。你帮了我很多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 2018-05-29
  • 2013-02-03
相关资源
最近更新 更多