我有一个学期的上传结果表格。我已经收集了某个学期的所有科目和学生名单。但我的问题是我无法将结果插入数据库。只插入一行,
控制器
$data=array();
for($i=0;$i<count($_POST['Number']);$i++){
if($_POST['Number'][$i] != ''){
$data=array(
'Id'=>$_POST['id'][$i],
'Dept'=>$_POST['Dept'][$i],
'SubjectCode'=>$_POST['sCode'][$i],
'SubjectName'=>$_POST['sName'][$i],
'Semister'=>$_POST['Semister'][$i],
'MidNumber'=>$_POST['Number'][$i]
);
$this->load->model('Upload_Result_model');
$this->Upload_Result_model->upload_midResult($data);
}
}
形式:
<table>
<tr>
<th>Student ID</th>
<?php foreach($subjects as $s):?>
<th><?php echo $s->subjectName; echo "<br>"; echo "(".$s->subjectCode.")"; ?></th>
<?php foreach($student as $st):?>
<input type='hidden' id='id[]' name='id[]' value='<?php echo $st->Id;?>'>
<?php endforeach;?>
<input type='hidden' name='Dept[]' id='Dept[]' value=<?php echo $Dept;?>>
<input type='hidden' name='Semister[]' id='Semister[]' value=<?php echo $Semister;?>>
<input type='hidden' id='sCode[]' name='sCode[]' value='<?php echo $s->subjectCode?>'>
<input type='hidden' id='sName[]' name='sName[]' value='<?php echo $s->subjectName?>'>
<?php endforeach;?>
</tr>
<?php foreach($student as $st):?>
<tr>
<td><?php echo $st->Id?></td>
<?php for($i=0;$i<count($subjects);$i++):?>
<td><input type='text' size='7' id='Number[]' name='Number[]'/></td>
<?php endfor;?>
</tr>
如果有人解决这个问题,对我来说会非常有帮助
答案 0 :(得分:1)
我不认为html表单元素会以php中的数组形式出现。尝试执行print_r($_POST);
以查看传递的变量及其值。他们可能只是用逗号分隔。
我认为您可能需要执行$_POST['id']=explode(',',$_POST['id']);
等操作来解决问题
Numbers
变量还有其他问题,你应该查看
答案 1 :(得分:0)
我想
foreach($student as $st):
应该在之后。现在您打开多行,但不关闭它们。 Ids也在2 for循环中,所以它们比其他元素更多,我不确定这是否是你尝试做的。
所以,如果可以,你可以尝试:
$Numbers = @$_POST['Number'];
$ids = @$_POST['id'];
foreach($Numbers as $a => $b)
{
if($Numbers[$a]!='')
{
$data=array(
'Id'=>$ids[$a];, ... }
}
}