jesusWalks
jesusWalks

Reputation: 355

Pulling data from database and into an html table

I'm pulling data from a database but only getting the first row into the dynamically produced html table.

I've tried adding another foreach loop but that isn't the answer… I'm out of ideas...

$conn = new PDO('mysql:host=localhost;dbname=jeuxvideo', $dbUserName, $dbPassword);
$sql = "SELECT * FROM jeuxvideo";
$result = $conn->prepare($sql);
$request = $result->execute();

echo "<table border='1'>";
echo "<tr><td>Id</td><td>Titre</td><td>Prix<td>Date de Sortie</td><td>Genre</td><td>Origine</td><td>Mode</td><td>Connexion</td></tr>\n";
$row = $result->fetch(PDO::FETCH_ASSOC);

echo "<tr>";
foreach ($row as $key => $value) {
echo "<td>$value</td>";
}
echo "</tr>";
echo "</table>";

This code pulls all the correct info and puts it in the right place in the html table, but for some Reason it doesn't collect the Following rows data...

Upvotes: 3

Views: 833

Answers (3)

Dhanushka sasanka
Dhanushka sasanka

Reputation: 528

Try this

 $conn = new PDO('mysql:host=localhost;dbname=jeuxvideo', $dbUserName, $dbPassword);
$sql = "SELECT * FROM jeuxvideo";
$result = $conn->prepare($sql);
$request = $result->execute();

echo "<table border='1'>";
echo "<tr><td>Id</td><td>Titre</td><td>Prix<td>Date de Sortie</td><td>Genre</td><td>Origine</td><td>Mode</td><td>Connexion</td></tr>\n";

$row = $request->fetch_all();

echo "<tr>";
foreach ($row as $key => $value) {
echo "<td>$value</td>";
}
echo "</tr>";
echo "</table>";

Upvotes: 0

waterloomatt
waterloomatt

Reputation: 3742

Since you don't have any variables you need prepared for your query, you can simply do:

<?php
$stmt = $pdo->query('SELECT * FROM jeuxvideo');

echo '<table>';

foreach ($stmt as $row) {
    echo '<tr>';

    echo "<td>$row['name']</td>";
    echo "<td>$row['url']</td>";
    echo "<td>$row['timestamp']</td>";

    echo '</tr>';
}

echo '</table>';

A 2nd method would be:

<?php
$stmt = $pdo->query('SELECT * FROM jeuxvideo');

echo '<table>';

while ($row = $stmt->fetch()) {
    echo '<tr>';

    echo "<td>$row['name']</td>";
    echo "<td>$row['url']</td>";
    echo "<td>$row['timestamp']</td>";

    echo '</tr>';
}

echo '</table>';

Upvotes: 0

Kenrro
Kenrro

Reputation: 46

This line only fetches one row:

$row = $result->fetch(PDO::FETCH_ASSOC);

You need to fetch as many rows it can give you. Once there are no more rows to fetch the function will return FALSE, so you can use with the while loop, like this:

while($row = $result->fetch(PDO::FETCH_ASSOC)) {
    echo "<tr>";
    foreach ($row as $key => $value) {
        echo "<td>$value</td>";
    }
    echo "</tr>";
}
echo "</table>";

Upvotes: 1

Related Questions