循环中的SQL查询累积每个循环

时间:2018-02-27 09:05:19

标签: php mysql sql

我正在建立一个学生跟踪系统,教师可以在SQL中发布每个文凭的不同需求的结果。然后,父母可以查看这些结果。

在此代码中,父母可以看到结果。 $ kindid在打开页面时填写。

代码就像魅力一样,只为一件事而烦恼。每次循环重复时,它首先回显前一个循环的结果,然后回显新循环。 (见图)

Problem 这里显示前两个循环,在“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;">&nbsp;</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;">&nbsp;</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> ';

    }

}

?>

1 个答案:

答案 0 :(得分:0)

原来,它通过重置所有用“。=”设置的变量来工作。 所以通过使用“reset($ datum);”和所有其他人。

但是我开始构建这个脚本,因为我想制作一个更好的脚本。