使用复选框和单个提交按钮发布多个值

时间:2016-11-18 07:05:14

标签: php mysql

我尝试使用此代码发布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);
}
?>

4 个答案:

答案 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类返回truefalse,具体取决于查询是否成功):

<?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']应该是你可以操作的数组。