Randy, Suggest pulling the data out of the resultset using a numberically-indexed array. Then o/p each <TD>...</TD> inside a loop - you know how many times to loop, because that is set by the number of rows (plus Total column).
BTW if you use aliases on those SUM() columns - it will make life a lot easier when you are using associative arrays to post-process the data. Regards, =dn > I have a form (criteria.php) that includes two drop down lists from which a > user can select a start period and an end period from a MySQL table. This > form posts to a form called order_summary.php on which I am using the > $start_period and $end_period variables from the criteria.php form to pull > data from another MySQL table which will produce a summary of sales for > those periods as illustrated by the following example: > > $start_period $end_period $total > ------------------------------------------------- > Order Type | APR-00 | MAY-00 | Total | > ------------------------------------------------- > Widget 1 | $100 | $200 | $300 | > Widget 2 | $300 | $200 | $500 | > . > . > . > > OK. Fine and good. I have this working. My problem is this: > > How can I create a table which will dynamically adjust the number of columns > based on the users request. That is, if the user requests APR-00 through > MAY-00, the table will be built as illustrated above. If the user requests > JAN-01 through JUN-00, the table will be built as illustrated below: > > $start_period through > $end_period > ---------------------------------------------------------------------------- > ---------------------------------- > Order Type | JAN-01 | FEB-01 | MAR-01 | APR-01 | > MAY-01 | JUN-01 |Total | > ---------------------------------------------------------------------------- > ---------------------------------- > Widget 1 | $100 | $200 | $300 | $300 | $300 | $300 | $300 | > Widget 2 | $300 | $200 | $500 | $300 | $300 | $300 | $300 | > . > . > . > > I have posted order_summary.php below. > > Any thoughts? > > Thanks, > > Randy Rankin > > ************************************ order_summary.php > ************************************************** > > <? > session_register($dbname); > ?> > > <? > require("./includes/salesdb.inc"); > > $query_first_last_period = "select period_id, period_name > from periods > where period_id between $start_period_id and $end_period_id > GROUP BY period_id > HAVING period_id = $start_period_id OR period_id = $end_period_id > ORDER BY period_id"; > > $result_first_last_period = mysql_query($query_first_last_period); > > $row = mysql_fetch_row($result_first_last_period); > > for( $i= 0; $i<count($row);$i++ ) > { > if( $i == 0 ) > $start_period_name = $row[$i]; > elseif( $i == (count($row)-1) ) > $end_period_name = $row[$i]; > } > > echo "<font face=Tahoma size=2 color=#333999>"; > echo "Salesperson: <b>$dbname</b><br>"; > echo "Report Period: <b>$start_period_name through $end_period_name</b>"; > echo "</font><P>"; > > echo "<table border=0 cellpadding=2 cellspacing=2>"; > echo "<tr bgcolor=#333399><font face=Tahoma size=2 color=#ffffff>"; > echo "<th align=left bordercolor=#808080><font color=#FFFFFF face=Tahoma > size=2><b>Category</b></font></th>"; > > // ******************** Start Get the Order Summary Data *************** > > $sql_order_summary = "SELECT order_type, SUM(extended_dollars) > from salesdata > where salesperson = '$dbname' > and period_id between '$start_period_id' and '$end_period_id' > group by order_type"; > $result_order_summary = mysql_query($sql_order_summary) or die ("I can't get > the sales data!"); > > // ******************** Stop Get the Order Summary Data *************** > > // ******************** Start Get the Period Names for the Table Header > *************** > > $sql_period_name = "Select period_name > from periods > where period_id between '$start_period_id' and '$end_period_id' > order by period_id"; > $result_period_name = mysql_query($sql_period_name) or die ("I can't get the > period name!"); > > // ******************** End Get the Period Names for the Table Header > *************** > > // ******************** Build and Print the Table Headers *************** > > $num_periods = mysql_numrows($result_period_name); > > if ($num_periods == 0) > > { > echo "<font color=#ff0000><b>There were no records found for > the periods selected.</b></font>"; > } > > else > while ($row = mysql_fetch_array($result_period_name)) > { > > $period_name = $row["period_name"]; > > echo "<th align=left bordercolor=#808080><font > color=#FFFFFF face=Tahoma size=2> > <b>$period_name</b></th> > </font>"; > } > > echo "<th align=left bordercolor=#808080><font > color=#FFFFFF face=Tahoma size=2><b>Total Sales</b></font></th>"; > echo "</tr>"; > > > > // ******************** End Build and Print the Table Headers > *************** > > // ******************** Start Calculate and Format Total Sales > *************** > > $get_itemtot = "SELECT SUM(extended_dollars) > FROM salesdata > WHERE salesperson = '$dbname' > and period_id between '$start_period_id' and '$end_period_id' "; > $itemtot_result = mysql_query($get_itemtot) or die ("I can't do the math!"); > $itemtot = mysql_result($itemtot_result,0,"SUM(extended_dollars)"); > $fmt_Total_Sales = "\$".number_format($itemtot,0); > > // ******************** End Calculate and Format Total Sales > *************** > > mysql_close(); > > //Display Results: Sales Summary Information: > > $num = mysql_numrows($result_order_summary); > > $alternate = "2"; // number of alternating rows > > if ($num == 0) > > { > echo "<font color=ff0000><b>There were no records found for > $dbname.</b></font>"; > } > > else > > while ($row = mysql_fetch_array($result_order_summary)) > { > > $Raw_Value = $row["SUM(extended_dollars)"]; > $Value = "\$".number_format($Raw_Value,0); > $type = $row["order_type"]; > > if ($alternate == "1") > { > $bcolor = "#EDEDF1"; > $alternate = "2"; > } > > else > { > $bcolor = "#ffffff"; > $alternate = "1"; > } > > echo "<tr> > <td bgcolor = $bcolor align=left><font > face=Tahoma size=2 color=#333999><b>$type > </b></font></td> > <td bgcolor = $bcolor > align=left><font face=Tahoma size=2 color=#333999><b>DATA > </b></font></td> > <td bgcolor = $bcolor > align=left><font face=Tahoma size=2 color=#333999><b>DATA > </b></font></td> > <td bgcolor = $bcolor > align=left><font face=Tahoma size=2 color=#333999><b>DATA > </b></font></td> > <td bgcolor = $bcolor align=right><font > face=Tahoma size=2 color=#333999><b>$Value > </b></font></td> > </tr>"; > } > > mysql_free_result ($result_order_summary) > > ?> > > </table> > <P> > <a href="criteria.php"><font face="Tahoma" size="2"><img border="0" > src="images/icon_arrows_right.gif" width="15" height="15">Select another > Period</font></a> > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php