vendredi 29 mai 2015

Why while loop is displaying single row?

I am trying to run while loop in a while loop, but only single record is displayed.

<?php    
if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "SELECT u.id, u.firstname, u.lastname, u.email, c.fullname, ro.shortname, c.id as courseid
    from mdl_context cx 
    Left join mdl_course c ON cx.instanceid = c.id
    Left join mdl_role_assignments r  on  r.contextid = cx.id
    Left join mdl_user u on u.id = r.userid
    Left join mdl_role ro on ro.id = r.roleid
    WHERE r.roleid IN (11)
    AND cx.contextlevel =50 GROUP BY u.id ORDER BY u.id ASC";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        echo "<table>"."<tr>"."<td width='100px;'><h4>Name</h4></td>"."<td width='50px;'>"."</td>"."<td width='230px;'><h4>Email</h4></td>"."<td width='100px;'><h4>Role</h4></td>"."<td width='100px;'>"."</td>"."<td><h4>Course</h4></td>"."</table>"."<br>";
        while($tmg = $result->fetch_assoc()) {
        echo "<table>"."<tr>"."<td width='100px;'><a href='http://localhost/user/profile.php?id=".$tmg["id"]."'>".$tmg["firstname"]." ".$tmg["lastname"]."</a></td>"."<td width='50px;'>"."</td>"."<td width='230px;'>".$tmg["email"]."</td>"."<td width='100px;'>".$tmg["shortname"]."</td>";
        $newarray = implode(",",$tmg["id"]);
        $sqlt = "SELECT u.firstname, u.lastname, c.id, c.fullname FROM mdl_course AS c JOIN mdl_context AS ctx ON c.id = ctx.instanceid JOIN mdl_role_assignments AS ra ON ra.contextid = ctx.id JOIN mdl_user AS u ON u.id = ra.userid WHERE u.id IN ($newarray)";
        while($row = $sqlt->fetch_assoc()) {
        echo    "<td width='100px;'>"."</td>"."<td>".$row["fullname"]."</td>"."</table>"."<br>";
        }
        }
    } else {
        echo "0 results";
    }
    $conn->close();
     ?>

Any guidance or help will be much appreciated.

Aucun commentaire:

Enregistrer un commentaire