Re: Database abstraction?

From: Date: Thu, 17 Apr 2008 15:14:24 +0000
Subject: Re: Database abstraction?
References: 1 2 3 4 5 6  Groups: php.general 
Request: Send a blank email to php-general+get-273182@lists.php.net to get a copy of this message
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

« previous php.general (#273182) next »