对于循环,回显/插入数据库时​​会丢失一些数据

时间:2015-01-05 10:05:48

标签: php mysql loops for-loop

我遇到有关使用单选按钮输入数据的问题。我用循环来插入单选按钮的值[1,2,3,4作为它们的值BTW:这是用于评估系统]。问题是,所有正确回显/插入的值[例如:evaluateatorsname,toevaluate'sname,id和isastorate]除了我的单选按钮的值。

当我测试系统或评估员工时,我按如下方式对员工进行了评分:4,4,4,4,4,3,3,3,3,3,2,2,2,2,2, 1,1,1(五个4,五个3,五个2和三个1 = 18行)。当我检查数据库[dbname:tbl_semiresults]时,数据库出现了: Screenshot of my database dataentry

我认为,值被跳过,而那些'最后'的radiobtn值被省略了。我已经考虑了好几天了,我不明白为什么我的单选按钮的某些值不会放在我想要它们的正确行中!哈哈帮助我们......

任何想法......

这是我的代码: Evaluation.php

<form action="EvaluationPropSemi_.php" method="post">
<table border="1">
<tr><br />
<th width="700px">AREAS TO RATE</th>
<th width="100px">1</th>
<th width="100px">2</th>
<th width="100px">3</th>
<th width="100px">4</th>
</tr>
<?php
$rates="select * from tbl_torateareas;";
$raters=mysqli_query($con,$rates);
$raterows=mysqli_fetch_array($raters);?>

<input type="text" name="employ" value="<?php echo $_POST['empname'];?>" />
<input type="text" name="activ" value="<?php echo $_SESSION['user']; ?>" />

<?php do{
?>

<tr>

<td><?php echo $raterows['torateareas'];?>
<input required="required" type="text" name="torates[]" value="<?php echo $raterows['torateareas'];?>" /></td>
<th><input required="required" type="radio" name="rad[<?php echo $raterows['idtbl_torateareas'];?>]"  value="1" /></th>
<th><input required="required" type="radio" name="rad[<?php echo $raterows['idtbl_torateareas'];?>]" value="2" /></th>
<th><input required="required" type="radio" name="rad[<?php echo $raterows['idtbl_torateareas'];?>]" value="3"/></th>
<th><input required="required" type="radio" name="rad[<?php echo $raterows['idtbl_torateareas'];?>]" value="4" /></th>
</tr>

<?php
}while($raterows=mysqli_fetch_array($raters)); ?>

</table>
</fieldset>
</tr>

</table>
<input type="submit" value="SUBMIT" class="button1" name="push" />

</fieldset>
</form>

这是EvaluationPropSemi_.php代码:

<?php 
session_start();
require_once("conn.php");
ini_set( "display_errors", 0);

if(isset($_POST['push'])){
for($i=0;$i<count($_POST['torates']);$i++){
echo $_POST['activ'][$i];
echo $_POST['employ'][$i];
echo $_POST['torates'][$i];
echo $_POST['rad'][$i];

$emp=$_POST['employ'];
$act=$_POST['activ'];
$areas=$_POST['torates'][$i];
$score=$_POST['rad'][$i];
$insert="insert into tbl_semiresults (evaluator, toevaluate, areastorate, score) values ('$act','$emp','$areas','$score');";
$insertrs=mysqli_query($con,$insert);
$insertrows=mysqli_fetch_array($insertrs);

}
} 
?>

代码有什么问题?感谢!!!!!!

1 个答案:

答案 0 :(得分:-1)

这是我的问题的答案。哈哈哈,只是为了与任何遇到同样问题的人分享。 HAHAHAHAHA!

我的代码没有任何问题,我从这次遭遇中学到了一件事:&#34;如果您认为您的代码完全正确,那就是!问题肯定会在数据库中:)这就是它!我忽视了idtbl_torateares。第1行和第5行没有显示单选按钮的值的原因是,在我的表tbl_torateareas中,我在我的idtbl_torateares列中没有4加上我的循环,当等于时,我开始递增$ i (=)为0,但在我的表中,idtbl_torateareas(ID)以1开头。

这就是为什么! :d