使用mysql ressources在循环内部循环

时间:2013-11-08 11:30:18

标签: php mysql sql loops while-loop

我正在尝试使用mysql在循环中做一些循环,但似乎没有解释

它只返回第一个结果,然后什么也没有。如果我的数据库中有很多记录,它应该返回所有内容

下面是我显示结果的代码

while ($cr = mysql_fetch_assoc($result)):
    $i = 0;
    ++$i;
    ?>
    <div style="width:200px"  class="fif"><table style="width:100%">
        <tr class="fbgreybox">
        <td colspan="3" style="text-align: center;font-weight: bold">
            <img src="images/calendar_2.png"> Séance du : <?php echo date('d-m-Y', strtotime($cr['record'])); ?>
        </td>
        </tr>
        <?php
        $sql = "SELECT `exercise` FROM `workouts` WHERE `record` = '{$cr['record']}' AND `user`= {$_SESSION['userid']} GROUP BY `exercise`";
        $result = mysql_query($sql);
        while ($exo = mysql_fetch_assoc($result)) :
        ?>
            <tr class="fbinfobox">
            <td colspan="3" style="text-align: left">
                <img src="images/Sport-dumbbell.png"> ////<?php echo exerciseName($exo['exercise']); ?>
            </td>
            </tr>
            <tr>
            <td style="text-align: center;font-weight: bold">Séries</td>
            <td style="text-align: center;font-weight: bold">Reps</td>
            <td style="text-align: center;font-weight: bold">Poids</td>
            </tr>
        <?php
        $rqt = "SELECT `set_number`, `reps`, `weight` FROM `workouts` WHERE `exercise` = {$exo['exercise']} AND `record` = '{$cr['record']}' AND `user` = {$_SESSION['userid']} ORDER BY `set_number`";
        $result2 = mysql_query($rqt);
        while ($detail = mysql_fetch_assoc($result2)):
            ?>
            <tr>
            <td>
                Série ////<?php echo $detail['set_number']; ?>
            </td>
            <td>
                <?php echo $detail['reps']; ?>
            </td>
            <td>
                <?php echo $detail['weight']; ?>
            </td>
            </tr>
            <?php
        endwhile;
        endwhile;
        ?>
    </table>
    </div>
    <?php
endwhile;

代码中没有错误,所以我真的不明白为什么不解释它。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

你在两个mysql_fetch_assoc()函数中使用$ result。避免那样。

在内部循环中,您可以使用另一个变量:

$sql = "SELECT `exercise` FROM `workouts` WHERE `record` = '{$cr['record']}' AND `user`= {$_SESSION['userid']} GROUP BY `exercise`";
$workoutsResult = mysql_query($sql);
while ($exo = mysql_fetch_assoc($workoutsResult )) :

答案 1 :(得分:1)

如果我是你,我会首先遍历第一个查询并将其放入数组中。 然后循环遍历此数组,搜索内部查询,并将数组放入另一个数组中。

然后,你循环遍历它们来构建你的表。

这将使你的代码更清洁,并且会避免像你所拥有的那样的问题,@ Suresh指出。