Gjoke
Gjoke

Reputation: 21

Display the rows from query in table

I have this code to get all the data from my products table. It's working great like this:

if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo $row['id'];
            echo $row['country'];
            echo $row['price'];
            echo $row['games'];
            echo $row['plus'];
            echo $row['buylink'];
            echo "<br/>";
        }

But I want these results to be shown in a table inside the body. I tried something but it's not working.

This is how the table looks :

<table class="table table-hover table-striped table-condensed">
<thead>
  <tr>
    <th>ID</th>
    <th>Country</th>
    <th>Price</th>
    <th>Games</th>
    <th>Plus</th>
    <th>Buy Link</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td><?php echo $row['id']; ?></td>
    <td><?php echo $row['country']; ?></td>
    <td><?php echo $row['price']; ?></td>
    <td><?php echo $row['games']; ?></td>
    <td><?php echo $row['plus']; ?></td>
    <td><?php echo $row['buylink']; ?></td>

  </tr>
</tbody>

Upvotes: 0

Views: 202

Answers (3)

Dan Costinel
Dan Costinel

Reputation: 1736

LE: Each html table row is created based on each database's table row. So, you just need to loop through the result set (that while), and for each iteration of the loop, you need to create a new html table row:

<table class="table table-hover table-striped table-condensed">
    <thead>
        <tr>
            <th>ID</th>
            <th>Country</th>
            <th>Price</th>
            <th>Games</th>
            <th>Plus</th>
            <th>Buy Link</th>
        </tr>
    </thead>
    <tbody>
        <?php while($row = $result->fetch_assoc()){ ?>
            <tr>
                <td><?php echo $row['id']; ?></td>
                <td><?php echo $row['country']; ?></td>
                <td><?php echo $row['price']; ?></td>
                <td><?php echo $row['games']; ?></td>
                <td><?php echo $row['plus']; ?></td>
                <td><?php echo $row['buylink']; ?></td>
            </tr>
        <?php } ?>
    </tbody>
</table>

Upvotes: 0

Ottoman
Ottoman

Reputation: 79

<?php
if ($result->num_rows > 0) {
?>
<table class="table table-hover table-striped table-condensed">
  <thead>
    <tr>
      <th>ID</th>
      <th>Country</th>
      <th>Price</th>
      <th>Games</th>
      <th>Plus</th>
      <th>Buy Link</th>
    </tr>
  </thead>
  <tbody>
  <?php while($row = $result->fetch_assoc()){ ?>
    <tr>
      <td><?php echo $row['id']; ?></td>
      <td><?php echo $row['country']; ?></td>
      <td><?php echo $row['price']; ?></td>
      <td><?php echo $row['games']; ?></td>
      <td><?php echo $row['plus']; ?></td>
      <td><?php echo $row['buylink']; ?></td>
    </tr>
  <?php }?>
  </tbody>
</table>
<?php
}else {
 // if there is no result... Code something here.
}
?>

Upvotes: 3

Jfed
Jfed

Reputation: 187

Youre getting close. You need to have the loop spit out the rows into the html.

<table class="table table-hover table-striped table-condensed">
<thead>
  <tr>
    <th>ID</th>
    <th>Country</th>
    <th>Price</th>
    <th>Games</th>
    <th>Plus</th>
    <th>Buy Link</th>
  </tr>
</thead>
<tbody>
<?php
while($row = $result->fetch_row()) {
    echo "<tr>";
    foreach ($row as $item) {
        echo "<td>$item</td>";
    }
    echo"</tr>";
}

?>
</tbody>

also instead of using a associative array and indexing into it (ie. $row['country']), You can use a normal array and a foreach loop to cut down on the code.

Upvotes: 0

Related Questions