Re: Database abstraction?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Stut wrote:
On 17 Apr 2008, at 13:33, Jason Pruim wrote:
Maybe I'm showing my ignorance here in programming... Maybe it's because I delt with a kid who decided to scream for a good share of the night and I'm sleep deprived :) But in my current system I have this:

echo <<<HTML

        <div>
        <table border="1">
        <tr>
        <td><a href="?order=a">First Name</a></td>
        <td><a href="?order=b">Last Name</a></td>
        <td><a href="?order=c">Address 1</a></td>
        <td><a href="?order=d">Address 2</a></td>
        <td><a href="?order=e">City</a></td>
        <td><a href="?order=f">State</a></td>
        <td><a href="?order=g">Zip</a></td>
        <td><a href="?order=h">Code</a></td>
        <td><a href="?order=i">ID #</a></td>
HTML;

        while($row = mysqli_fetch_assoc($result)) {
            //display the info using heredoc syntac
echo <<<HTML
        <tr>
            <td>{$row['FName']}</td>
            <td>{$row['LName']}</td>
            <td>{$row['Add1']}</td>
            <td>{$row['Add2']}</td>
            <td>{$row['City']}</td>
            <td>{$row['State']}</td>
            <td>{$row['Zip']}</td>
            <td>{$row['XCode']}</td>
            <td>{$row['Record']}</td>
HTML;
}

What I want to do is take that first block of code, the one with the links for sorting, and instead of this: "<td><a href="?order=a">First Name</a></td>" I want to put something more like this: "<td><a href="?order=a">$FIELDNAMES[$field{$id}]</a></td>" So I can grab the field names from the database, instead of hardcoding them into my program.

I think I am sleep deprived because the more I tried to clarify it... the harder it got for me to understand :)

echo <<<HTML
        <div>
        <table border="1">\
HTML;

$first = true;
while ($row = mysqli_fetch_assoc($result)) {
    if ($first)
    {
        echo '<tr>';
        foreach (array_keys($row) as $field) {
            echo '<td>'.htmlentities($field).'</td>';
        }
        echo '</tr>';
        $first = false;
    }

    // Output the row here as above
}

-Stut


Very good example, but I would remove data retrieval from the display of data.

<?php

$dataSet = array();
while ($row = mysqli_fetch_assoc($result)) {
	$dataSet[] = $row;
}

# do some other stuff

# now display
# Check to see if there is anything in the dataSet
if ( count($dataSet) > 0 ) {

	echo '<table>';

	# Get the names of the columns from the first result set
	$headers = array_keys($dataSet[0]);

	# Print the column names
	echo '<tr>';
	foreach ( $headers AS $column_name ) {
		echo "<th>{$column_name}</th>";
	}
	echo '</tr>';

	# Now print your data
	foreach ( $dataSet AS $row ) {
		echo <<<ROW
	<tr>
		<td>{$row['FName']}</td>
		<td>{$row['LName']}</td>
		<td>{$row['Add1']}</td>
		<td>{$row['Add2']}</td>
		<td>{$row['City']}</td>
		<td>{$row['State']}</td>
		<td>{$row['Zip']}</td>
		<td>{$row['XCode']}</td>
		<td>{$row['Record']}</td>
	</tr>
ROW;
	}
	echo '</table>';
}

?>

--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
       and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
    by William Shakespeare


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux