470,619 Members | 1,860 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,619 developers. It's quick & easy.

Using HTML_Table

I have been trying to use HTML_Table from PEAR to write a PHP script
that will access a database and retrieve my data into an HTML table
that can be sorted by column. Currently I am using the script below,
which does not include sorting (I want the basic table to work first)
but all I get is the column headers and no data in the column can
anyone tell me how to fix this problem and have the script access my
database to display the table info in an HTML table.

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<?php
//Include the HTML_Table package
require_once "HTML/Table.php";
$link = @new mysqli("host", "user", "password", "database");
if (!$link) {
echo mysqli_connect_errno();
} else {
$msg = "Connection was a success!!";
}
$table = new HTML_Table();
//Set the Headers
$table->setHeaderContents(0, 0, "Last Name");
$table->setHeaderContents(0, 1, "First Name");
$table->setHeaderContents(0, 2, "E-mail Address");
$table->setHeaderContents(0, 3, "Advisor");
$table->setHeaderContents(0, 4, "Graduation Year");
$table->setHeaderContents(0, 5, "Highest Degree");
$table->setHeaderContents(0, 6, "Attending");
//Cycle through the array to produce the table data
//Create and Execute the Query
$query = "SELECT lastname as 'Last Name', firstname as 'First Name',
email as 'E-Mail Address',
advisor as 'Advisor', year as 'Graduation Year', degree as 'Highest
Degree', attend as 'Attending' FROM rsvp
ORDER BY lastname";
$result = $mysqli->query($query);
$rownum=1;
while($obj = $result->fetch_object()){
$table->setCellContents($rownum, 0, $obj->lastname);
$table->setCellContents($rownum, 1, $obj->firstname);
$table->setCellContents($rownum, 2, $obj->email);
$table->setCellContents($rownum, 3, $obj->advisor);
$table->setCellContents($rownum, 4, $obj->year);
$table->setCellContents($rownum, 5, $obj->degree);
$table->setCellContents($rownum, 6, $obj->attend);
$rownum++;
}
//Alternate row styling
$table->altRowAttributes(1, null, array("class"=>"alt"));
//output the data
echo $table->toHTML();
//Close the connection
$mysqli->close();
?>
</body>
</html>

Thanks
Bob

Feb 20 '06 #1
3 2395
bo********@gmail.com wrote:
I have been trying to use HTML_Table from PEAR to write a PHP script
that will access a database and retrieve my data into an HTML table
that can be sorted by column. Currently I am using the script below,
which does not include sorting (I want the basic table to work first)
but all I get is the column headers and no data in the column can
anyone tell me how to fix this problem and have the script access my
database to display the table info in an HTML table.

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<?php
//Include the HTML_Table package
require_once "HTML/Table.php";
$link = @new mysqli("host", "user", "password", "database");
if (!$link) {
echo mysqli_connect_errno();
} else {
$msg = "Connection was a success!!";
}
$table = new HTML_Table();
//Set the Headers
$table->setHeaderContents(0, 0, "Last Name");
$table->setHeaderContents(0, 1, "First Name");
$table->setHeaderContents(0, 2, "E-mail Address");
$table->setHeaderContents(0, 3, "Advisor");
$table->setHeaderContents(0, 4, "Graduation Year");
$table->setHeaderContents(0, 5, "Highest Degree");
$table->setHeaderContents(0, 6, "Attending");
//Cycle through the array to produce the table data
//Create and Execute the Query
$query = "SELECT lastname as 'Last Name', firstname as 'First Name',
email as 'E-Mail Address',
advisor as 'Advisor', year as 'Graduation Year', degree as 'Highest
Degree', attend as 'Attending' FROM rsvp
ORDER BY lastname";
$result = $mysqli->query($query);
$rownum=1;
while($obj = $result->fetch_object()){
$table->setCellContents($rownum, 0, $obj->lastname);
$table->setCellContents($rownum, 1, $obj->firstname);
$table->setCellContents($rownum, 2, $obj->email);
$table->setCellContents($rownum, 3, $obj->advisor);
$table->setCellContents($rownum, 4, $obj->year);
$table->setCellContents($rownum, 5, $obj->degree);
$table->setCellContents($rownum, 6, $obj->attend);
$rownum++;
}
//Alternate row styling
$table->altRowAttributes(1, null, array("class"=>"alt"));
//output the data
echo $table->toHTML();
//Close the connection
$mysqli->close();
?>
</body>
</html>

Thanks
Bob

I use something like this...

//retrieve results from database
$result = $mysqli->query($query);

//Start building the table
$table = "<table border=1 >\n <TR>\n";
$result_array = array_keys($results);

//Lets display the column headers first
foreach($result_array as $myresult)
{
$data = $myresult;
$table .= " <TD>$data</TD>";
}
$table .=" </TR>";
echo $table . "\n";

//Now - populate the table data
for($i=0;$i<$rows;$i++)
{
$table = "<TR> \n";
foreach($results as $myresult)
{

$data = chop($myresult[$i]);
if (!isset($data)){$data = "<center>-</center>";}
$table .= " <TD>$data</TD>";
}
$table .=" </TR>";

// All Done - send results to the browser.
echo $table . "\n";
}
echo "</table>";
Feb 20 '06 #2
Now I am getting this following error:
Fatal error: Call to a member function query() on a non-object in
/opt/lampp/htdocs/phptrials/html_table_output.php on line 37

My line 37 is $result = $mysqli->query($query); which is part of this
next statement.
$query = "SELECT lastname as `Last Name`, firstname as `First Name`,
email as `E-Mail Address`,
advisor as `Advisor`, year as `Graduation Year`, degree as `Highest
Degree`, attend as `Attending` FROM rsvp
ORDER BY lastname";

$result = $mysqli->query($query);

I am sorry for all this I am new to PHP and I am just having syntax
problems.

Thanks again

Feb 20 '06 #3
bo********@gmail.com wrote:
I have been trying to use HTML_Table from PEAR to write a PHP script
that will access a database and retrieve my data into an HTML table
that can be sorted by column. Currently I am using the script below,
which does not include sorting (I want the basic table to work first)
but all I get is the column headers and no data in the column can
anyone tell me how to fix this problem and have the script access my
database to display the table info in an HTML table.

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<?php
//Include the HTML_Table package
require_once "HTML/Table.php";
$link = @new mysqli("host", "user", "password", "database");
if (!$link) {
echo mysqli_connect_errno();
} else {
$msg = "Connection was a success!!";
}
$table = new HTML_Table();
// start from here //Set the Headers
$table->setHeaderContents(0, 0, "Last Name");
$table->setHeaderContents(0, 1, "First Name");
$table->setHeaderContents(0, 2, "E-mail Address");
$table->setHeaderContents(0, 3, "Advisor");
$table->setHeaderContents(0, 4, "Graduation Year");
$table->setHeaderContents(0, 5, "Highest Degree");
$table->setHeaderContents(0, 6, "Attending");
Ehh...

$header = array("Last name", "First name", "email", "Advisor",
"Graduation year", "Highest degree", "Attending");
$table->addRow($header, null, 'TH');
//Cycle through the array to produce the table data
//Create and Execute the Query
$query = "SELECT lastname as 'Last Name', firstname as 'First Name',
email as 'E-Mail Address',
advisor as 'Advisor', year as 'Graduation Year', degree as 'Highest
Degree', attend as 'Attending' FROM rsvp
ORDER BY lastname";
You are doing a lot of unecessary stuff here.

// You need this specific order
$query = 'SELECT lastname,firstname,email,advisor,year,degree,atten d
from rsvp ORDER BY lastname";
$result = $mysqli->query($query);
$rownum=1;
while($obj = $result->fetch_object()){
$table->setCellContents($rownum, 0, $obj->lastname);
$table->setCellContents($rownum, 1, $obj->firstname);
$table->setCellContents($rownum, 2, $obj->email);
$table->setCellContents($rownum, 3, $obj->advisor);
$table->setCellContents($rownum, 4, $obj->year);
$table->setCellContents($rownum, 5, $obj->degree);
$table->setCellContents($rownum, 6, $obj->attend);
$rownum++;
}
Sorry, but should have a look at HTML_Table specs again... I would
suggest something like this:

while ($row = $mysqli->mysqli_fetch_array($result, MYSQLI_NUM) {
$table->addRow($row);
}

Basically, one of the good things about HTML_Table is that you no
longer need to think of tables as cells, instead you can think of it as
rows, columns, cells, and all sorts of things inbetween. Setting one
cell at a time defeats the concept. The only thing that you need to pay
attention to is that you select the required fields in the correct order
for use with "addRow".
//Alternate row styling
$table->altRowAttributes(1, null, array("class"=>"alt"));
//output the data
echo $table->toHTML();
//Close the connection
$mysqli->close();
?>
</body>
</html>

Thanks
Bob

Feb 21 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Robbie | last post: by
2 posts views Thread by rawCoder | last post: by
10 posts views Thread by Christopher Benson-Manica | last post: by
17 posts views Thread by beliavsky | last post: by
1 post views Thread by Julien Sobrier | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.