I have two tables users
and test
. The users
table contains the information about student and test
table has its test details. I want to show all the details of test to the specific student after login according to his roll number. For achieving this, I have tried using following foreach
function and INNER JOIN
in the query.
<?php
foreach($conn->query('SELECT test.date, test.sub,test.topic,test.marks,test.rank FROM test JOIN users ON test.rollno=users.rollno order by date desc')as $row){ ?>
<button class="accordion"><b>Test on <?php echo date('d-m-Y', strtotime( $row['date'] )); ?></b></button>
<div class="panel">
<p>
<table border="1">
<?php
echo "<tr><td>Date: " . date('d-m-Y', strtotime( $row['date'] )) . "</td></tr>";
echo "<tr><td>Subject: " . $row['sub'] . "</td></tr>";
echo "<tr><td>Topic: " . $row['topic'] . "</td></tr>";
echo "<tr><td>Marks: " . $row['marks'] . "</td></tr>";
echo "<tr><td>Rank: " . $row['rank'] . "</td></tr>"; ?>
</table>
</p>
</div>
<?php }?>
This returns all the test records regardless of roll no. I have rollno
column common in both table. I want the query to show records matching the current roll number. Please help.
It solved by just changing the query as SELECT test.date, test.sub,test.topic,test.marks,test.rank FROM test JOIN users USING(rollno) WHERE rollno='.$userRow['rollno'].' order by date desc
where, $userRow['rollno']
is a session variable which contains the value of roll no. of currently logged in user.
If i have understood you want to select for one user but you don't filter on him:
SELECT test.date,
test.sub,
test.topic,
test.marks,
test.rank
FROM test
JOIN users USING(rollno)
WHERE rollno=yourusernumber
ORDER BY date DESC