【问题标题】:For loop, some data were missing when echoed/inserted to databaseFor循环,回显/插入数据库时​​丢失了一些数据
【发布时间】:2015-01-05 10:05:48
【问题描述】:

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

当我测试系统或评估员工时,我给员工评分如下: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] 时,数据库出现了:

我认为,值跳跃了,那些“最后一个”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);

}
} 
?>

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

【问题讨论】:

  • 您在表单中使用rad[&lt;?php echo $raterows['idtbl_torateareas'];?&gt;] 并尝试通过$_POST['rad'][$i] 访问它。那么,$raterows['idtbl_torateareas'] 的值是多少?
  • 对不起,先生。是否以错误的方式访问它?应该如何? :( 顺便说一句,值已输入到我的数据库中,只是 - 值跳跃并且一些被省略。通过 $_POST['rad'][$i] 访问它是否与它有关。谢谢先生。我我刚开始学习编码。@hellcode

标签: php mysql loops for-loop


【解决方案1】:

这是我的问题的答案。哈哈哈,分享给遇到同样问题的朋友。哈哈哈哈哈哈!

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

所以这就是为什么! :D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多