首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的SQL查询累加每个循环

循环中的SQL查询累加每个循环
EN

Stack Overflow用户
提问于 2018-02-27 17:05:19
回答 1查看 58关注 0票数 0

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

在这段代码中,家长可以看到结果。当他们打开页面时,会填写$kindid。

代码就像一个魔咒,除了一件事。每次循环重复时,它首先回显前一次循环的结果,然后是新的结果。(见图)

这里显示了前两个循环,在"Opmerking“字段中可以看到,第二个循环中的前两个结果与第一个循环中的结果相同。

我该如何解决这个问题?

我试着重置指针(How do I reset a PHP pointer for a MySQL resource?),什么也没做。此外,我尝试在每次循环开始时重置$row,但没有做任何事情。

代码:

代码语言:javascript
复制
<?

$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> ';

    }

}

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-04 17:51:38

事实证明,它通过重置所有用".=“设置的变量来工作。因此,通过使用"reset($datum);“和所有其他命令。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49004834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档