user3810795
user3810795

Reputation: 162

Display columns with rows in php table

Hey guys I need your help, I have this table

enter image description here

and I want to shows like this FIDDLE, really I don't know how to do this because sometimes just exist two columns(prov_name ) and sometimes exist more that two rows please help me if you can !

Hope you understand me. Thanks so much !

In this way I can be able to select data from Joomla.

    $db =& JFactory::getDBO();
    $query = 'SELECT prov_name FROM provprices where CA_id = '.$CA_id;
    $db->setQuery($query);
    $result = $db->loadObjectList();
    $prov_name = $result[0];
    echo $prov_name->prov_name;

Upvotes: 1

Views: 1750

Answers (2)

Kevin
Kevin

Reputation: 41885

First off, in order for your data to be presented like that obviously it must be grouped accordingly.

The first row is, the prov_name's, so you can use GROUP BY or you cal also do it in PHP. Based of the sample data, it should have from 1 to 6.

Then the second row is just a simple unitval and totval according to how many prov_name's.

Third is the and the rest is the grouping of the values. See Example:

$db = new PDO('mysql:host=localhost;dbname=DATABASE_NAME;charset=utf8', 'USERNAME', 'PASSWORD');
$data = array();
$results = $db->query("SELECT * from YOUR_TABLE_NAME");
while($row = $results->fetch(PDO::FETCH_ASSOC)) {
    $data[$row['prov_name']][] = $row;
}
$keys = array_keys($data);
$size = count($keys);
$vals = array();
// grouping:
// if there are six (cam1 to cam6)
// then group them by cam1, ... to cam6, then repeat until theres no more left
while(count($data) > 0) {
    foreach($keys as $key) {
        if(!empty($data[$key])) {
            $vals[] = array_shift($data[$key]);
        } else {
            unset($data[$key]); // remove them if empty
        }
    }
}

$vals = array_chunk($vals, $size); // split them by how many prov_names

?>

<table border="1" cellpadding="10">
    <!-- PROV NAMES -->
    <tr><?php for($x = 1; $x <= $size; $x++): ?>
        <th colspan="2"><?php echo "prov_name $x"; ?></th>
    <?php endfor; ?></tr>

    <!-- unitval totvals -->
    <tr><?php for($x = 1; $x <= $size; $x++): ?>
        <td>unitval</td><td>totval</td>
    <?php endfor; ?></tr>

    <!-- the grouped values -->
    <?php foreach($vals as $val): ?>
        <tr>
        <?php foreach($val as $v): ?>
            <td><?php echo $v['unitval']; ?></td>
            <td><?php echo $v['totval']; ?></td>
        <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
</table>

Upvotes: 1

Sidik Bilardi
Sidik Bilardi

Reputation: 1

I think you must do this first,

try looping to show prov_name in horizontal,

and then you fetch again in query with

"SELECT * FROM table_test where prov_name = '$prov_name'"

in Variable $prov_name you must have a value with CAM2 or CAM3 .etc

sorry just a logic :)

Upvotes: 0

Related Questions