Alex
Alex

Reputation: 206

Display result from database in two columns

EDIT: This is what I am trying to achieve: https://i.sstatic.net/QJD2Z.png

I am trying to display the results from my database in two columns. I'm a bit new to PHP so I haven't the slightest clue on how to do this. Can anybody help me with this? Thanks in advance.

Here is my current code:

include('connect.db.php'); 
// get the records from the database
if ($result = $mysqli->query("SELECT * FROM todo ORDER BY id"))
{
  // display records if there are records to display
  if ($result->num_rows > 0)
  { 
    // display records in a table
    echo "<table width='415' cellpadding='0' cellspacing='0'>";
    // set table headers
    echo "<tr><td><img src='media/title_projectname.png' alt='Project Name' /></td>
        <td><img src='media/title_status.png' alt='Status'/></td>
      </tr>";
    echo "<tr>
        <td><div class='tpush'></div></td>
        <td>&nbsp;</td>
      </tr>"
    while ($row = $result->fetch_object())
    {
      echo "<tr>";
      echo "<td><a href='records.php?id=" . $row->id . "'>" . $row->item . "</a></td>";
      echo "<td>" . $row->priority . "</td>";
      echo "</tr>";
    }
    echo "</table>";
  }
  // if there are no records in the database, display an alert message
  else
  {
    echo "No results to display!";
  }
}
// show an error if there is an issue with the database query
else
{
   echo "Error: " . $mysqli->error;
}
// close database connection
$mysqli->close();

Upvotes: 0

Views: 3712

Answers (3)

JT Smith
JT Smith

Reputation: 741

Your function should look similar to this:

$query = "SELECT *
         FROM todo 
         ORDER BY id";
$result = $mysqli->query($query);

while($row = $result -> fetch_array()) {
   $feedback .= "<tr>\n<td>" . $row['item'] . "</td><td>" . $row['priority'] . "</td>\n</tr>";
}
return $feedback;

Then, in your HTML have the <table> already setup and where you would normally insert your <td> and <tr> put <?php echo $feedback?> (where $feedback is the assumed variable on the HTML page that retrieves the $feedback from the function). This isn't a complete fix, your code is hard to read, but by starting here, you should be able to continue on the path filling in all the extra information you need for the table, including your CSS.

Upvotes: 0

miqbal
miqbal

Reputation: 2227

<table>
  <tr>
    <td>ProjectName</td>
    <td>Status</td>
    <td>ProjectName</td>
    <td>Status</td>
  </tr>
  <?php
     while($row = $result->fetch_object()) {
        echo "<tr>";
        echo "<td>".$row->ProjectName."</td>";
        echo "<td>".$row->Status."</td>";
        echo "<td>".$row->ProjectName."</td>";
        echo "<td>".$row->Status."</td>";      
        echo "</tr>";
     }
  ?>
</table>

This is the thing on picture. With a bit CSS you can manipulate the tds.

Upvotes: 0

dimmat
dimmat

Reputation: 195

A good idea would be storing your data into a simple array and then display them in a 2-columned table like this:

$con = mysql_connect('$myhost', '$myusername', '$mypassword') or die('Error: ' . mysql_error());
mysql_select_db("mydatabase", $con);
mysql_query("SET NAMES 'utf8'", $con);

$q = "Your MySQL query goes here...";
$query = mysql_query($q) or die("Error: " . mysql_error());
$rows = array();
$i=0;

// Put results in an array
while($r = mysql_fetch_assoc($query)) {
    $rows[] = $r;
    $i++;
}

//display results in a table of 2 columns

echo "<table>";
for ($j=0; $j<$i; $j=$j+2)
{
echo "<tr>";
echo "<td>".$row[$j]."</td><td>".$row[$j+1]."</td>";
echo "</tr>";
}
echo "</table>";

mysql_close($con);

Upvotes: 1

Related Questions