我正在构建一个学生跟踪系统,教师可以在SQL中发布每个文凭的不同需求的结果。然后,父母能够查看这些结果。
在此代码中,父母可以看到结果。 $ kindid在打开页面时填写。
除了一件事,代码就像魅力一样。每次重复循环时,它首先回显前一个循环的结果,然后回传新结果。 (见图)
这里显示前两个循环,在“Opmerking”字段中可以看到,第二个循环中的前两个结果与第一个循环中的结果相同。
我该如何解决?
我试过重置指针(How do I reset a PHP pointer for a MySQL resource?),没有做任何事情。另外,我尝试在每个循环开始时重置$ row,没有做任何事情。
码:
<?
$diplomanumber = 0; //Start at diploma number 0
$i = 0;
$times_to_run = 7; //Amount diplomas
$array = array();
while ($i++ < $times_to_run)
{
$query = "SELECT * FROM Leerlingvolgsysteem WHERE kindid='$kind_id' AND diploma='$diplomanumber' ORDER BY datum DESC;";
$result = mysqli_query($connection,$query);
if(mysqli_num_rows($result) == 0){
$diplomanumber++; //No results, skip to next loop
}
else {
echo'<h2 id="'.$diplomanumber.'">'; //Echo diploma name
if($diplomanumber == 0){echo'Spetter Ready';}
elseif($diplomanumber == 1){echo'Spetter 1';}
elseif($diplomanumber == 2){echo'Spetter 2';}
elseif($diplomanumber == 3){echo'Spetter 3';}
elseif($diplomanumber == 4){echo'Diploma A';}
elseif($diplomanumber == 5){echo'Diploma B';}
elseif($diplomanumber == 6){echo'Diploma C';}
echo'</h2>';
while ($row = mysqli_fetch_assoc($result))
{
$phpdate = strtotime($row['datum']);
$date = date( 'd-m-Y', $phpdate ); //Put date in European format
$datum .= '<td><b>'.$date.'</b></td>'; //Define all <td></td> which are looped
$eis1 .= '<td class="'.$row['eis1'].'">'.$row['eis1'].'</td>';
$eis2 .= '<td class="'.$row['eis2'].'">'.$row['eis2'].'</td>';
$eis3 .= '<td class="'.$row['eis3'].'">'.$row['eis3'].'</td>';
$eis4 .= '<td class="'.$row['eis4'].'">'.$row['eis4'].'</td>';
$eis5 .= '<td class="'.$row['eis5'].'">'.$row['eis5'].'</td>';
$eis6 .= '<td class="'.$row['eis6'].'">'.$row['eis6'].'</td>';
$eis7 .= '<td class="'.$row['eis7'].'">'.$row['eis7'].'</td>';
$eis8 .= '<td class="'.$row['eis8'].'">'.$row['eis8'].'</td>';
$eis9 .= '<td class="'.$row['eis9'].'">'.$row['eis9'].'</td>';
$eis10 .= '<td class="'.$row['eis10'].'">'.$row['eis10'].'</td>';
$eis11 .= '<td class="'.$row['eis11'].'">'.$row['eis11'].'</td>';
$eis12 .= '<td class="'.$row['eis12'].'">'.$row['eis12'].'</td>';
if(!empty($row['opm'])) {
$opm .= '<td style="white-space: normal;"><b>'.$row['opm'].'</b></td>';
}
else{
$opm .= '<td style="white-space: normal;"> </td>'; // No $opm.
}
if(!empty($row['instructeur'])) {
$inst .= '<td style="white-space: normal;"><b>'.$row['instructeur'].'</b></td>';
}
else{
$inst .= '<td style="white-space: normal;"> </td>'; // No $inst
}
}
echo '
<div class="volgsysteem"><table class="table table-condensed table-bordered neutralize volgsysteem">
<tbody>'; //Start table with a div and tbody
$query2 = "SELECT * FROM Leerlingvolgsysteem_eisen WHERE diploma='$diplomanumber' ORDER BY nr;"; //Query to select all demands
$result2 = mysqli_query($connection,$query2);
if(mysqli_num_rows($result2) == 0){
$diplomanumber++; echo 'Er is een fout opgetreden, waardoor de eisen voor dit diploma niet aan uw kind gekoppeld kunnen worden.</br>';}
else {
echo'
<tr><th class="headcol"><b>Datum:</b></th>'.$datum.'</tr>';
echo '<th class="headcol"><b>Instructeur</b></th>'.$inst.'</tr>';
$counter = 0;
while ($row2 = mysqli_fetch_assoc($result2))
{
$counter++; // counter + 1
echo '
<tr><th class="headcol">';
echo substr($row2['eis'],0,15); // shorten demand
echo '...';
$verandernaameisnr = 'eis' . $counter; // change number of the demand
$eis = $$verandernaameisnr;
echo '</th>'.$eis.''; // echo demand
echo' </tr>';
}
echo "<th class='headcol'><b>Opmerking</b></th>";
echo ''.$opm.'';
echo' </tr>';
$diplomanumber++; // Diplomanumber +1
}
echo'</tbody>'; //End table
echo '</table></div> ';
}
}
?>
原来,它通过重置所有用“。=”设置的变量来工作。所以通过使用“reset($ datum);”和所有其他人。
但我开始构建这个脚本,因为我想制作一个更好的脚本。