I use dompdf to create my pdf document.
My case is, I have to create a table based my two query on database.
The return of those two querys is array both.
First Array have 28 ELEMENT, and the second Array have 27 element. I want to interprated them like this
---------------------------------------------------------
| FIRST ARRAY | SECOND ARRAY |
---------------------------------------------------------
| 1 | 8 | 15 | 22 | 1 | 8 | 15 | 22 |
| 2 | 9 | 16 | 23 | 2 | 9 | 16 | 23 |
| 3 | 10 | 17 | 24 | 3 | 10 | 17 | 24 |
| 4 | 11 | 18 | 25 | 4 | 11 | 18 | 25 |
| 5 | 12 | 19 | 26 | 5 | 12 | 19 | 26 |
| 6 | 13 | 20 | 27 | 6 | 13 | 20 | 27 |
| 7 | 14 | 21 | 28 | 7 | 14 | 21 | |
---------------------------------------------------------
But now, with my html and the php code :
<tr>
<td colspan="4" align="center">FIRST ARRAY</td>
<td colspan="4" align="center">SECOND ARRAY</td>
</tr>
<?php
$i = 0;
foreach ($damage_codes as $row) : ?>
<?= ($i % 4 == 0) ? "<tr>" : false; ?>
<?= "<td>[".$row->DAMAGE_ID . "]" . $row->NAMA_DAMAGE . "</td>"; ?>
<?php
$i++;
endforeach;
echo "</tr>"
?>
<?php
$i = 0;
foreach ($repair_codes as $row) : ?>
<?= ($i % 4 == 0) ? "<tr>" : false; ?>
<?= "<td>[".$row->REPAIR_ID . "]" . $row->NAMA_REPAIR . "</td>"; ?>
<?php
$i++;
endforeach;
echo "</tr>"
?>
<tr>
And gives me result like this :
---------------------------------------------------------
| FIRST ARRAY | SECOND ARRAY |
---------------------------------------------------------
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 |
---------------------------------------------------------
How to get them like I wish, Any help it so appreciated.
Thanks.
UPDATED, some wrong type in result of my table. So, I updated my question. Sorry about that.
create two tables on td columns
<tr>
<td colspan="4" align="center">FIRST ARRAY</td>
<td colspan="4" align="center">SECOND ARRAY</td>
</tr>
<tr>
<td colspan="4" align="center">
<table>
<tr>
<?php
$i = 0;
foreach ($damage_codes as $row) : ?>
<?= ($i % 4 == 0) ? "</tr><tr>" : ""; ?>
<?= "<td>[".$row->DAMAGE_ID . "]" . $row->NAMA_DAMAGE . "</td>"; ?>
<?php
$i++;
endforeach;
?>
</tr>
</table>
</td>
<td colspan="4" align="center">
<table>
<tr>
<?php
$i = 0;
foreach ($repair_codes as $row) : ?>
<?= ($i % 4 == 0) ? "</tr><tr>" : ""; ?>
<?= "<td>[".$row->REPAIR_ID . "]" . $row->NAMA_REPAIR . "</td>"; ?>
<?php
$i++;
endforeach;
?>
</tr>
</table>
</td>
</tr>
Related
mysql> SELECT * FROM `db_depo`.`tb_item_inspection_report` a WHERE a.TIPE= 'T' LIMIT 1000;
+---------------------------------+-----------------------+------+--------------------+
| NAMA_ITEM_INSPECTION | NOMOR_ITEM_INSPECTION | TIPE | ID_ITEM_INSPECTION |
+---------------------------------+-----------------------+------+--------------------+
| Protection Box Cover | 1 | T | 1 |
| Manhole LID, Fastening Bolts | 2a | T | 2 |
| Manhole Gasket | 2b | T | 3 |
| PV Valve / Flame Trap / Gauge | 3a | T | 4 |
| Rupture Disc | 3b | T | 5 |
| Loading Port | 4a | T | 6 |
| Top Operated Valve | 5 | T | 7 |
| Dipstick | 6 | T | 8 |
| Air Line Valve (Ball Butterfly) | 7 | T | 9 |
| Calibration Chart | 8 | T | 10 |
| Walkway | 9 | T | 11 |
| Syphone Tube/Butterfly | 4b | T | 12 |
+---------------------------------+-----------------------+------+--------------------+
12 rows in set (0.00 sec)
MODEL
public function get_top_inspection_detail() {
$query = $this->db->query('SELECT a.* FROM `db_depo`.`tb_item_inspection_report` a where a.TIPE = "T" ORDER BY `ID_ITEM_INSPECTION` ASC LIMIT 1000;');
return $query;
}
CONTROLLER
public function menu_container() {
$this->load->library('csvreader');
$data = array('halaman' => 'Data Container',
'last_cargo' => $this->m_surveyor->get_all_last_cargo(), //BUAT LAST CARGO,
'top_item' => $this->m_surveyor_item_inspection->get_top_inspection_detail(),
'bottom_item' => $this->m_surveyor_item_inspection->get_bottom_inspection_detail(),
'detail_condition' => $this->m_surveyor_item_detail_inspection->get_all(),
);
$main_view = $this->load->view('surveyor/v_container', $data, TRUE);
echo $main_view;
}
VIEW
<table class="table ">
<thead>
<tr>
<th style="width: 70%">Item</th>
<th style="width: 20%">Kondisi</th>
<th style="width: 10%">Act</th>
</tr>
</thead>
<tbody>
<?php
$rows = $top_item->num_rows();
for ($j = 0; $j < $rows + 1; $j++) {
?>
<tr>
<td>
<?php
foreach ($top_item->result() as $v) {
echo $v->NAMA_ITEM_INSPECTION;
}
?>
</td>
<td>
<select class="form-control" name="list2_kondisi_1" id="list2_name_1">
<option>Choose...</option>
<?php
foreach ($detail_condition as $v) {
echo '<option value =' . $v->ID_ITEM . ' >' . $v->ALIAS . ' - ' . $v->NAME_ITEM . '</option>';
}
?>
</select>
</td>
<td><input type='checkbox'></td>
</tr>
<?php } ?>
</tbody>
</table>
I want to represent it into html table just like my table in mysql; Based my view code's, I got this :
Protection Box CoverManhole LID, Fastening BoltsManhole GasketPV Valve / Flame Trap / GaugeRupture DiscLoading PortTop Operated ValveDipstickAir Line Valve (Ball Butterfly)Calibration ChartWalkway
Protection Box CoverManhole LID, Fastening BoltsManhole GasketPV Valve / Flame Trap / GaugeRupture DiscLoading PortTop Operated ValveDipstickAir Line Valve (Ball Butterfly)Calibration ChartWalkway
UNTILL end of num_rows, How can I get into like my table in mysql coz foreach is read all the item into a row ?
By putting a foreach loop inside the td element, you are dumping all the values into a single cell. You need to loop at the row level - which you already are. Try:
<?php
$rows = $top_item->result();
foreach ($rows as $row) {
?>
<tr>
<td> <?php echo $row->NAMA_ITEM_INSPECTION; ?> </td>
and so on.
I create table like this:
id | a1 | a2 | a3 | a | a4 | a5 | a6
1 | 3 | 1 | 7 | 63 | 3 | 5 | 0
2 | 3 | 1 | 7 | 35 | 3 | 5 | 0
3 | 3 | 1 | 7 | 40 | 3 | 5 | 0
4 | 0 | 0 | 0 | 00 | 0 | 0 | 0
5 | 1 | 5 | 5 | 44 | 2 | 2 | 2
6 | 5 | 6 | 9 | 07 | 5 | 5 | 7
7 | 5 | 6 | 9 | 07 | 5 | 5 | 7
8 | 1 | 5 | 0 | 64 | 2 | 5 | 7
9 | 5 | 6 | 7 | 84 | 1 | 3 | 0
10 | 1 | 2 | 4 | 74 | 1 | 3 | 0
11 | 4 | 5 | 0 | 96 | 1 | 2 | 3
I want to show this data on my relevant page. The format for the page should be like this:
<table>
<tr>
<th> a1 </br> a2 </br> a3</th>
<th> a </th>
<th> a4 </br> a5 </br> a6 </th>
.
.
.
.
</tr>
</table>
and after 7 columns from database or we can say after id divisible by 7, it should add </tr><tr> tag
Currently I am using:
<table width="40%" border="1" align="center" bordercolor="#000000" bgcolor="#99CC99">
<?php
$x=mysql_connect("localhost","dbuser","password");
if(!$x)
{
die("not connected");
}
mysql_select_db("mydb");
$q=mysql_query("select * from table");
while($r=mysql_fetch_array($q))
{?>
<td> <?php echo $r["a1"];?></br>
<?php echo $r["a2"];?></br>
<?php echo $r["a3"];?></td>
<td><?php echo $r["a"];?></td>
<td><?php echo $r["a4"];?></br>
<?php echo $r["a5"];?></br>
<?php echo $r["a6"];?></td>
<?php
}
?>
</table>
but it does not break row after 7 columns element
I think you are trying this
<table width="40%" border="1" align="center" bordercolor="#000000" bgcolor="#99CC99"><tr>
<?php
$inr=0;
$x=mysql_connect("localhost","dbuser","password");
if(!$x)
{
die("not connected");
}
mysql_select_db("mydb");
$q=mysql_query("select * from table");
while($r=mysql_fetch_array($q))
{?>
<td> <?php echo $r["a1"];?></br>
<?php echo $r["a2"];?></br>
<?php echo $r["a3"];?></td>
<td><?php echo $r["a"];?></td>
<td><?php echo $r["a4"];?></br>
<?php echo $r["a5"];?></br>
<?php echo $r["a6"];?></td>
<?php
$inr++;
if($inr%7==0)
echo"</tr><tr>";
}
?>
</tr></table>
$x=mysql_connect("localhost","dbuser","password");
if(!$x)
{
die("not connected");
}
mysql_select_db("mydb");
$q=mysql_query("select * from table");
$markup = '<table width="40%" border="1" align="center" while($r=mysql_fetch_array($q)) {
$headersPrinted = false;
bordercolor="#000000" bgcolor="#99CC99"><tr>
';
while ($r = mysql_fetch_array($q)) {
if (!$headersPrinted) {
foreach ($q as $key => $value) {
$markup .= "<th>$key</th>";
}
$markup .= "<tr>$markup</tr>";
$headersPrinted = true;
}
$markup .= '<tr>';
foreach ($q as $key => $value) {
$markup .= "<td>$value</td>";
}
$markup = $markup. '</tr>';
}
$markup .= '</table>';
echo $markup;
You should abort the printing of any HTML code before checking if you got a db connection.
My database design : http://i.stack.imgur.com/3Rm2e.png
I am trying to use below code :
$myselect = mysql_query("
SELECT
reason.ReasonName,
tblexam.EXAMDATE,
tblexam.EXAMTIME,
prefix.PREFIXABB,
studentmaster.STUDENTNAME,
studentmaster.STUDENTSURNAME,
studentmaster.STUDENTCODE,
program.PROGRAMNAME,
course.COURSENAMEENG
FROM
reason,
formlate,
tblexam,
studentmaster,
prefix,
program,
course
WHERE
reason.ReasonID = formlate.ReasonID AND
formlate.CLASSID = tblexam.CLASSID AND
formlate.COURSEID = formlate.COURSEID AND
formlate.ROOMID = formlate.ROOMID AND
prefix.PREFIXID = studentmaster.PREFIXID AND
formlate.STUDENTID = studentmaster.STUDENTID AND
program.PROGRAMID = studentmaster.PROGRAMID AND
course.COURSEID = tblexam.COURSEID
GROUP BY
reason.ReasonID,studentmaster.STUDENTID
ORDER BY
reason.ReasonID ASC");
<body>
<?php $i =1;
while($rowfet = mysql_fetch_array($myselect)){
?>
<h2><?php echo $rowfet['ReasonName']; ?></h2>
<h3><?php echo DateThai($rowfet['EXAMDATE']) . ' ' . MorningEvening($rowfet['EXAMTIME']); ?></h3>
<table width="100%" border="1">
<thead>
<tr>
<th>No.</th>
<th>studentid </th>
<th>Fullname </th>
<th>Program </th>
<th>Coursename </th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><?php echo $i; ?></td>
<td><?php echo $rowfet['STUDENTCODE']; ?></td>
<td><?php echo $rowfet['PREFIXABB'] . $rowfet['STUDENTNAME'] . ' '.$rowfet['STUDENTSURNAME']; ?></td>
<td><?php echo $rowfet['PROGRAMNAME']; ?></td>
<td><?php echo $rowfet['COURSENAMEENG']; ?></td>
</tr>
</tbody>
</table>
<?php $i++; } ?>
but it shows the result like :
Reason1
10 Jan 2015 (Morning)
| No | studentid | Fullname | Program | Coursename |
-------------------------------------------------------
| 1 | 111111 | John | ProgA | Math |
---------------------------------------------------------
Reason1
10 Jan 2015 (Morning)
| No | studentid | Fullname | Program | Coursename |
-------------------------------------------------------
| 2 | 2222222 | Jane | ProgB | Math |
-----------------------------------
Reason2
10 Jan 2015 (Evening)
| No | studentid | Fullname | Program | Coursename |
-------------------------------------------------------
| 3 | 3333333 | Hawk | ProgB | Math |
-----------------------------------
I want the result to show like :
Reason1
10 Jan 2015 (Morning)
| No | studentid | Fullname | Program | Coursename |
-------------------------------------------------------
| 1 | 111111 | John | ProgA | Math |
---------------------------------------------------------
| 2 | 2222222 | Jane | ProgB | Math |
-----------------------------------
Reason2
10 Jan 2015 (Evening)
| No | studentid | Fullname | Program | Coursename |
-------------------------------------------------------
| 1 | 3333333 | Hawk | ProgB | Math |
---------------------------------------------------------
I want to group table by
Reasonname
Examdate
Examtime
Please help, I'm a newbie.
I've create database in SQLFiddle Here this please try and help:
SQLFiddle
considered that you have a sql result that looks like this, ordered by reason, date and time :
reason.reasonName | examDate | examTime | prefix | studentName | studentSurname | studentCode | ProgramName | courseName
with a few records, like :
1 | someDate1 | someTime1 | A | James | Jim | 123 | PA | PACourse
1 | someDate1 | someTime1 | A | Tommy | Tim | 222 | PC | PCCourse
1 | someDate2 | someTime2 | B | James | Jim | 123 | PB | PBCourse
2 | someDate1 | someTime1 | C | Jamie | Jam | 444 | PD | PDCourse
2 | someDate1 | someTime1 | E | Willy | Wil | 555 | PE | PECourse
2 | someDate2 | someTime2 | F | Cathy | Cat | 777 | PF | PFCourse
2 | someDate2 | someTime2 | G | David | Dav | 844 | PL | PLCourse
2 | someDate3 | someTime3 | L | James | Jim | 123 | PM | PMCourse
3 | someDate4 | someTime4 | W | Ibear | Ibe | 999 | PX | PXCourse
Here, you get this kind of data, you have,
for reason 1 :
2 students with exam at the same day/time (time1)
1 student with axam at another time (time2)
for reason 2 :
2 students with exam at the same day/time (time1)
2 students with exam at the same day/time (time2)
1 student with exam at another time (time3)
for reason 3 :
1 student with exam at time 4
SO, you want to display :
2 tables for reason 1 (time1 / time2)
3 tables for reason 2 (time1 / time2 / time3)
1 table for reason 3
CONSIDERED that the table, when you get it from your SQL is REALLY oredered like what I wrote above, you have to make your checks on fetch :
<?php
//YOU WILL HAVE TO CHECK THESE VARS TO MAKE IT CLEAR, IF SAME TABLE OR NOT
$i = false;
//I use $i as a table detector, false at start, once a table has been opened it is turned as true
$reason = "";
//I will keep the latest reasonName in this
$examDate = "";
//I will keep the latest examDate in this
$examTime = "";
//I will keep the latest examTime in this
$yourDisplay = "";
//In yourDisplay, i keep the text i have to display (tables, data...)
$closeTable = "</tbody></table>";
//This is the code you need to close a table.
while($rowfet = mysql_fetch_array($myselect)){
if(($rowfet['ReasonName']!=$reason)||(DateThai($rowfet['EXAMDATE'])!=$examDate)||(MorningEvening($rowfet['EXAMTIME'])!=$examTime)){
//YOU GET HERE IF YOU HAVE DIFFERENT REASON/DATE/TIME, SO YOU HAVE TO MAKE A NEW TABLE
$reason = $rowfet['ReasonName'];
$examDate = DateThai($rowfet['EXAMDATE']);
$examTime = MorningEvening($rowfet['EXAMTIME']);
//NOW CHECK IF YOU ALREADY HAVE WRITTEN A TABLE BEFORE
if($i == true){
//You already have written a table before
$yourDisplay.=$closeTable;
}else{
//This is the first table you write
$i=true;
}
$yourDisplay.=" <h2>".$reason."</h2>
<h3>".DateThai($examDate)." ".MorningEvening($examTime)."</h3>
<table width='100%' border='1'>
<thead>
<tr>
<th>No.</th>
<th>studentid</th>
<th>fullname</th>
<th>Program</th>
<th>Coursename</th>
</tr>
</thead>
<tbody>
<tr>
<td>".$rowfet['STUDENTCODE']."</td>
<td>".$rowfet['PREFIXABB']." ".$rowfet['STUDENTNAME']." ".$rowfet['STUDENTSURNAME']."</td>
<td>".$rowfet['PROGRAMNAME']."</td>
<td>".$rowfet['COURSENAMEENG']."</td>
</tr>";
}else{
//YOU ARE ALREADY IN A TABLE! WITH SAME REASON/TIME/DATE
//YOUR RECORD JUST NEEDS TO BE ADDED IN A NEW LINE
$yourDisplay.="<tr>
<td>".$rowfet['STUDENTCODE']."</td>
<td>".$rowfet['PREFIXABB']." ".$rowfet['STUDENTNAME']." ".$rowfet['STUDENTSURNAME']."</td>
<td>".$rowfet['PROGRAMNAME']."</td>
<td>".$rowfet['COURSENAMEENG']."</td>
</tr>";
}
}
//ONCE OUT, CLOSE THE LAST TABLE AND DISPLAY YOUR DATA
if($i==1){
$yourDisplay.=$closeTable;
}
echo $yourDisplay;
?>
In My Opinion, this kind of approach should solve your problem IF THE SQL QUERY returns the rows as explained above. (seems like it is the case)
EDIT :
You asked to "not display" the reasonname if it was the same, so just look at the line you see this :
$yourDisplay.=" <h2>".$reason."</h2>
<h3>".DateThai($examDate)." ................ code continue
and replace it with this :
if($rowfet['ReasonName']!=$reason){
$yourDisplay.="<h2>".$reason."</h2>";
}
$yourDisplay.="<h3>".DateThai($examDate)." ".MorningEvening($examTime)."</h3>
<table width='100%' border='1'>
//.... continue the code
You're looping through all your rows and creating a table for each of the rows.
What you want to do is to create a new table only if a sequence of a new ReasonName starts.
$myselect = mysql_query("SELECT reason.ReasonName,tblexam.EXAMDATE,tblexam.EXAMTIME,prefix.PREFIXABB,studentmaster.STUDENTNAME,studentmaster.STUDENTSURNAME,studentmaster.STUDENTCODE,program.PROGRAMNAME,course.COURSENAMEENG FROM reason, formlate, tblexam, studentmaster,prefix, program, course WHERE reason.ReasonID = formlate.ReasonID AND formlate.CLASSID = tblexam.CLASSID AND formlate.COURSEID = formlate.COURSEID AND formlate.ROOMID = formlate.ROOMID AND prefix.PREFIXID = studentmaster.PREFIXID AND formlate.STUDENTID = studentmaster.STUDENTID AND program.PROGRAMID = studentmaster.PROGRAMID AND course.COURSEID = tblexam.COURSEID GROUP BY reason.ReasonID,studentmaster.STUDENTID ORDER BY reason.ReasonID ASC");
<body>
<?php $i =1;
while($rowfet = mysql_fetch_array($myselect)){
?>
<h2><?php echo $rowfet['ReasonName']; ?></h2>
<h3><?php echo DateThai($rowfet['EXAMDATE']) . ' ' . MorningEvening($rowfet['EXAMTIME']); ?></h3>
<table width="100%" border="1">
<thead>
<tr>
<th>No.</th>
<th>studentid </th>
<th>Fullname </th>
<th>Program </th>
<th>Coursename </th>
</tr>
</thead>
<tbody>
<?php echo "You should create a loop here to loop through your ReasonNames"; ?>
<tr>
<td align="center"><?php echo $i; ?></td>
<td><?php echo $rowfet['STUDENTCODE']; ?></td>
<td><?php echo $rowfet['PREFIXABB'] . $rowfet['STUDENTNAME'] . ' '.$rowfet['STUDENTSURNAME']; ?></td>
<td><?php echo $rowfet['PROGRAMNAME']; ?></td>
<td><?php echo $rowfet['COURSENAMEENG']; ?></td>
</tr>
<?php echo "Your loop should end here"; ?>
</tbody>
</table>
<?php $i++; } ?>
my database design is like this
-- Table Reason
--------------------------
| reasonid | reasonname |
--------------------------
| 1 | reason1 |
| 2 | reason2 |
--------------------------
-- Table Student
----------------------------
| studentid | studentname |
----------------------------
| 1 | John |
| 2 | Jane |
| 3 | Hulk |
----------------------------
-- Table form
-----------------------------------
| formid | studentid | reasonid |
-----------------------------------
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 1 |
-----------------------------------
I want to show data table like :
reason1
| 1 | John |
| 2 | Hulk |
reason2
| 1 | Jane |
I have tried below code but the result is not groupBy reason
<?php $i =1;
while($rowfet = mysql_fetch_array($myselect)){ ?>
<h2><?php echo $rowfet['ReasonName']; ?></h2>
<table>
<thead>
<tr class="active">
<th>No.</th>
<th>StudentName</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><?php echo $i; ?></td>
<td><?php echo $rowfet['STUDENTNAME']; ?></td>
</tr>
</tbody>
</table>
<?php $i++; } ?>
the result of this code is :
reason1
| 1 | John |
reason1
| 2 | Hulk |
reason2
| 3 | Jane |
You could do something like this:
outside while loop:
$lastReasonId = '';
inside while loop:
if($rowfet['reasonid'] != $lastReasonId){
// show heading
}
$lastReasonId = $rowfet['reasonid'];
But your code is far from ok. The $i++ thing is not doing anything, you should probably echo $rowfet['studentid'] there.
And you are using deprecated mysql code.
How to Group two Similar fields in php?
I tried with GROUP BY DATE(bill.date) , bill.agent_id but it is not working for me
Table Structure 1: http://i.stack.imgur.com/yvBF0.jpg (table name is bill_agents )
Table Structure 2: http://i.stack.imgur.com/38tKh.jpg (table name is bill )
Current Result
+---------+----+----+----+-----+----+
| | 1 | 2 | 3 | 4 | 5 |
+---------+----+----+----+-----+----+
| Agent 1 | 35 | 0 | 0 | 0 | 0 |
| Agent 2 | 0 | 10 | 0 | 0 | 0 |
| Agent 1 | 0 | 0 | 12 | 0 | 0 |
| Agent 3 | 0 | 0 | 0 | 100 | 0 |
| Agent 6 | 0 | 0 | 0 | 9 | 0 |
| Agent 2 | 0 | 0 | 0 | 9 | 14 |
+---------+----+----+----+-----+----+
But I want To get Like The Following
+---------+----+----+----+-----+----+
| | 1 | 2 | 3 | 4 | 5 |
+---------+----+----+----+-----+----+
| Agent 1 | 35 | 0 | 12 | 0 | 0 |
| Agent 2 | 0 | 10 | 0 | 0 | 14 |
| Agent 3 | 0 | 0 | 0 | 100 | 0 |
| Agent 6 | 0 | 0 | 0 | 9 | 0 |
+---------+----+----+----+-----+----+
Php Code pasted below that I am using now .
<table width="100%" border="1" cellspacing="4" cellpadding="1">
<tr>
<td> </td>
<?php
for ($i=01; $i<=31; $i++)
{?>
<td><?php echo $i; ?></td>
<?php
}
?>
<td>Total</td>
</tr>
<?php
$query4 = "SELECT bill.agent_id, bill.date, SUM(bill.amount + bill.cheque) AS total, bill_agents.id,bill_agents.name ".
"FROM bill, bill_agents ".
"WHERE bill.agent_id = bill_agents.id AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE()) ".
"GROUP BY bill.agent_id , DATE(bill.date) ".
// "GROUP BY bill.agent_id , DATE(bill.date) ".
"ORDER BY bill.date ASC";
$result4 = mysql_query($query4) or die('Error, query failed1');
if (mysql_num_rows($result4)>0){
mysql_data_seek($result4, 0);
?>
<?php $total_1 = 0; while($row4 = mysql_fetch_array($result4, MYSQL_ASSOC)){?>
<?php $date = $row4['date'];
$var = $date;
$date = date("d-m-Y", strtotime($var) );
$date=substr($date, 0, -8);
echo $date;
?>
<tr>
<td><?php echo $row4['name']; ?></td>
<?php
for ($i=01; $i<=31; $i++)
{?>
<td><?php if ($date == $i) echo $row4['total']; ?></td>
<?php
}
?>
<td></td>
</tr>
<?php } } ?>
<tr>
<td colspan="31"></td>
<td>Total</td>
<td></td>
</tr>
</table>
My understanding is, you need total amount processed by a agent and in a particular month of year.
Then change your query as follows,
<?php
$query = "SELECT b.date,b.agent_id,(SUM(b.amount) + SUM(b.cheque)) AS total,ba.id,ba.name
FROM bill_agent ba LEFT JOIN bill b ON b.agent_id = ba.id
WHERE YEAR(b.date) = YEAR(CURDATE()) AND MONTH(b.date) = MONTH(CURDATE())
GROUP BY b.date";
?>