我尝试使用此代码发布3个不同的复选框值。如果我发布不同的值,则会将相同的值发布到其中3个值中。
<input type="checkbox" name="s_status[]" value="absent" /></td>
<input type="checkbox" name="s_status[]" value="present" /></td>
<input type="checkbox" name="s_status[]" value="leave" /></td>
<?php
require 'conn/Session.php';
require 'conn/MySQL.php';
require_once("includes/generalFunction.php");
require_once("classes/class.SiteManager.php");
$dbcon = new MySQL();
$siteObj = new SiteManager();
require 'conn/checkSession.php';
if($_POST['submit'])
{
$content=array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$_POST['s_status'],"class"=>$_POST['class'],"section"=>$_POST['section']);
$content1=array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$_POST['s_status'],"class"=>$_POST['class'],"section"=>$_POST['section']);
$content2=array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$_POST['s_status'],"class"=>$_POST['class'],"section"=>$_POST['section']);
$dbcon->insert_query("tbl_attandence",$content);
$dbcon->insert_query("tbl_attandence",$content1);
$dbcon->insert_query("tbl_attandence",$content2);
$mess="Record created successfully.";
$url="all_attandence.php?mess=".base64_encode($mess);
redirectPage($url);
}
?>
答案 0 :(得分:0)
我已经更改了你的代码。请检查: -
require 'conn/Session.php';
require 'conn/MySQL.php';
require_once("includes/generalFunction.php");
require_once("classes/class.SiteManager.php");
$dbcon = new MySQL();
$siteObj = new SiteManager();
require 'conn/checkSession.php';
if($_POST['submit'])
{
$content=array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$_POST['s_status'][0],"class"=>$_POST['class'],"section"=>$_POST['section']);
$content1=array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$_POST['s_status'][1],"class"=>$_POST['class'],"section"=>$_POST['section']);
$content2=array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$_POST['s_status'][2],"class"=>$_POST['class'],"section"=>$_POST['section']);
$dbcon->insert_query("tbl_attandence",$content);
$dbcon->insert_query("tbl_attandence",$content1);
$dbcon->insert_query("tbl_attandence",$content2);
$mess="Record created successfully.";
$url="all_attandence.php?mess=".base64_encode($mess);
redirectPage($url);
}
答案 1 :(得分:0)
当您在服务器端检索s_status
时,它是一个数组。您必须迭代此数组或使用索引查询它:
<?php
require 'conn/Session.php';
require 'conn/MySQL.php';
require_once("includes/generalFunction.php");
require_once("classes/class.SiteManager.php");
$dbcon = new MySQL();
$siteObj = new SiteManager();
require 'conn/checkSession.php';
if($_POST['submit'])
{
$content=array(
"student_id"=>$_POST['student_id'],
"parent_id"=>$_POST['parent_id'],
"student_name"=>$_POST['student_name'],
"s_status"=>$_POST['s_status'][0], //First
"class"=>$_POST['class'],
"section"=>$_POST['section']
);
$content1=array(
"student_id"=>$_POST['student_id'],
"parent_id"=>$_POST['parent_id'],
"student_name"=>$_POST['student_name'],
"s_status"=>$_POST['s_status'][1], //Second
"class"=>$_POST['class'],
"section"=>$_POST['section']
);
$content2=array(
"student_id"=>$_POST['student_id'],
"parent_id"=>$_POST['parent_id'],
"student_name"=>$_POST['student_name'],
"s_status"=>$_POST['s_status'][2], //Third
"class"=>$_POST['class'],
"section"=>$_POST['section']
);
$dbcon->insert_query("tbl_attandence",$content);
$dbcon->insert_query("tbl_attandence",$content1);
$dbcon->insert_query("tbl_attandence",$content2);
$mess="Record created successfully.";
$url="all_attandence.php?mess=".base64_encode($mess);
redirectPage($url);
}
?>
根据David JorHpan的建议,您可以通过消除重复的代码来优化您的代码(我在这里假设您的MySQL类返回true
或false
,具体取决于查询是否成功):
<?php
require 'conn/Session.php';
require 'conn/MySQL.php';
require_once("includes/generalFunction.php");
require_once("classes/class.SiteManager.php");
$dbcon = new MySQL();
$siteObj = new SiteManager();
require 'conn/checkSession.php';
if($_POST['submit'])
{
$success = true;
foreach ($_POST['s_status'] as $s_status)
{
$content=array(
"student_id" => $_POST['student_id'],
"parent_id" => $_POST['parent_id'],
"student_name" => $_POST['student_name'],
"s_status" => $s_status,
"class" => $_POST['class'],
"section" => $_POST['section']
);
$success = $dbcon->insert_query("tbl_attandence",$content) and $success;
}
if($success)
{
$mess = "Records created successfully.";
}
else
{
$mess = "Error during the records creation.";
}
$url = "all_attandence.php?mess=".base64_encode($mess);
redirectPage($url);
}
?>
我不知道你的MySQL.php
文件里面有什么,但看起来你将$_POST
值直接传递给了MySQL。我强烈建议你use PDO or similar to protect from SQL injection。
答案 2 :(得分:0)
您当前的复选框html最适合访问操作文件中的数据,请尝试使用foreach
进行查询
if($_POST['submit'])
{
$send = false;
foreach ($_POST['s_status'] as $sts) {
$content= array("student_id"=>$_POST['student_id'],"parent_id"=>$_POST['parent_id'],"student_name"=>$_POST['student_name'],"s_status"=>$sts,"class"=>$_POST['class'],"section"=>$_POST['section']);
$send = $dbcon->insert_query("tbl_attandence",$content);
}
if($send){
$mess="Record created successfully.";
}
else {
$mess = "Error";
}
$url="all_attandence.php?mess=".base64_encode($mess);
redirectPage($url);
}
答案 3 :(得分:-1)
尝试这种方式:
<input type="checkbox" name="s_status[0]" value="absent" /></td>
<input type="checkbox" name="s_status[1]" value="present" /></td>
<input type="checkbox" name="s_status[2]" value="leave" /></td>
然后在php $ _POST ['s_status']应该是你可以操作的数组。