【发布时间】:2014-01-27 20:49:27
【问题描述】:
我从这个 jsfiddle 中显示的 HTML 代码发布到下面代码的 PHP 页面。问题是没有收到数组$_POST['selectedpost']。那是包含勾选了哪些复选框的数组。在 js 小提琴中,我将示例行添加到包含复选框的表中,因为通常这些复选框是使用 PHP 和 SQL 生成的。
<?php
include "connect2.php";
if (isset($_POST['selectedpost'])) {
$postschecked = $_POST['selectedpost'];
$length = count($postschecked);
}
else{
returnpage();
}
if (isset($_POST['deleteposts'])) {
foreach($postschecked as $post_id){
$sql = "DELETE FROM posts WHERE post_id='$post_id'";
mysql_query($sql);
}
returnpage();
}
if (isset($_POST['passposts'])) {
foreach($postschecked as $post_id){
$sql = "UPDATE posts SET moderation=1 WHERE post_id='$post_id'";
mysql_query($sql);
}
returnpage();
}
if (isset($_POST['editpost'])) {
if ($lenght==1){
foreach($postschecked as $post_id){
header("location:editpost.php?post_id=$post_id");
}
}
else{
returnpage();
}
}
if (isset($_POST['returnpost'])) {
if (isset($_POST['reasonreturned'])) {
foreach($postschecked as $post_id){
$sql = "SELECT description FROM posts WHERE post_id='$post_id'";
$query = mysql_query($sql);
$array = array();
while ($row = mysql_fetch_array($query, MYSQL_NUM)) {
$array[] = $row; }
$description = "".$array[0][0];
$description = $description . "<br/><br/><span style='color:red;font-size:18px;'>" . $_POST['reasonreturned'] . "</span>";
$sql = "UPDATE posts SET description='$description' WHERE post_id='$post_id'";
$query = mysql_query($sql);
}
}
foreach($postschecked as $post_id){
$sql = "UPDATE posts SET moderation=3 WHERE post_id='$post_id'";
$query = mysql_query($sql);
}
returnpage();
}
if ($length){
returnpage();
}
function returnpage(){
//header("location:moderate.php");
}
?>
另外需要注意的是,我知道我的代码在某些地方效率很低,而且我也知道我应该放弃 mysql 并转移到 mysqli 之类的东西。感谢您提供的任何帮助
【问题讨论】:
-
数组,什么数组?你正在使用输入
<input type='checkbox' name='selectedpost' value='404'></input>加上你不需要</input>如果有什么你不应该使用value='404'除非你想作为“值”传递。您可能打算使用多个复选框并使用name='selectedpost[]' -
值404是我输入的一个例子,都是正常自己生成的。关于/输入的好点,谢谢,我忘记了。此外,当复选框以表单形式发布时,我认为它们传递了一个数组?
-
如果您的复选框被命名为
name='selectedpost[]'和[]就像在<input type='checkbox' name='selectedpost[]'>中一样,他们会这样做 -
我想指出,切换到
mysqli_*函数将是最有益的。mysql_*函数已弃用。为了保护自己,使用准备好的语句或 PDO 会更好。以下是如何防止 SQL 注入的指南:stackoverflow.com/q/60174 -
我发现一个错字可能会给你带来麻烦
if ($lenght==1){你的代码中也有$length这个词。将其更改为if ($length==1){
标签: php html forms post checkbox