I have been working on this for what seems like forever, so I finally decided to ask for help. I am trying to write an html list that is populated by info in a mysql database. I am trying to write a php loop (or multiple loops) to accomplish this. It begins to get complicated because there a multiple nodes to the list. I have tried many different methods but cannot get the desired results. Any help would be greatly appreciated!
The list is populated by items that have various "categories" and "subcategories". The list should be in ASC order by customer name, then category, then subcategory, then part number. Some items have only a category and no subcategory. Some items have no category and should just be listed under the customer's name. So the list should look like this...
Customer1
- Category1
- Subcategory1
- Part1 (Item w/ Category & Subcategory)
- Part2
- Subcategory2
- Part3
- Category2
- Part4 (Item with only a Category)
- Part5
- Part6 (Item with no Category or Subcategory
- Part7
Customer2
- Category1
- Subcategory1
- Part1 (Item w/ Category & Subcategory)
- Part2
- Subcategory2
- Part3
Etc......
Hopefully that is clear enough.
Here is my first try with this problem and it comes close. It just places items in the wrong places (not sure why).
<?php
$con = mysql_connect("localhost:3306","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("pcu_ops", $con);
$sql_customer="SELECT DISTINCT customer FROM common_parts ORDER BY customer ASC";
$result_customer=mysql_query($sql_customer,$con);
if (!mysql_query($sql_customer,$con))
{
die('Error: ' . mysql_error());
}
?>
<table border="0">
<colgroup>
<col width="300px" valign="top">
<col width="90%">
</colgroup>
<tr>
<td valign="top">
<!-- Add a <div> element where the tree should appear: -->
<div id="common_parts_tree">
<ul>
<?php
while ($row_customer = mysql_fetch_array($result_customer)) {
echo '<li class="expanded folder">'.$row_customer['customer'];
echo '<ul>';
$customer=$row_customer['customer'];
$sql_category="SELECT DISTINCT category FROM common_parts WHERE customer='$customer' ORDER BY customer ASC";
$result_category=mysql_query($sql_category,$con);
if (!mysql_query($sql_category,$con)) {
die('Error: ' . mysql_error());
}
while ($row_category = mysql_fetch_array($result_category)) {
if ($row_category['category'] != '') {
echo'<li class="expanded folder">'.$row_category['category'];
echo '<ul>';
$category=$row_category['category'];
$sql_subcategory="SELECT DISTINCT subcategory FROM common_parts WHERE (customer='$customer' AND category='$category') ORDER BY subcategory ASC";
$result_subcategory=mysql_query($sql_subcategory,$con);
if (!mysql_query($sql_subcategory,$con)) {
die('Error: ' . mysql_error());
}
while ($row_subcategory = mysql_fetch_array($result_subcategory)) {
if ($row_subcategory['subcategory'] != '') {
echo'<li class="expanded folder">'.$row_subcategory['subcategory'];
echo '<ul>';
$subcategory=$row_subcategory['subcategory'];
$sql_pn="SELECT DISTINCT pn FROM common_parts WHERE (customer='$customer' AND category='$category' AND subcategory='$subcategory') ORDER BY pn ASC";
$result_pn=mysql_query($sql_pn,$con);
if (!mysql_query($sql_pn,$con)) {
die('Error: ' . mysql_error());
}
while ($row_pn = mysql_fetch_array($result_pn)) {
$pn=$row_pn['pn'];
echo '<li><a href="includes/phpscripts/part_quick_view.php?pn='.$pn.'&customer='.$customer.'" target="contentFrame">'.$pn.'</a>';
}
echo '</ul>';
}
else {
if ($row['subcategory'] == '') {
$sql_pn="SELECT DISTINCT pn FROM common_parts WHERE (customer='$customer' AND category='$category') ORDER BY pn ASC";
$result_pn=mysql_query($sql_pn,$con);
if (!mysql_query($sql_pn,$con)) {
die('Error: ' . mysql_error());
}
while ($row_pn = mysql_fetch_array($result_pn)) {
$pn=$row_pn['pn'];
echo '<li><a href="includes/phpscripts/part_quick_view.php?pn='.$pn.'&customer='.$customer.'" target="contentFrame">'.$pn.'</a>';
}
}
}
}
echo '</ul>';
}
else {
echo '<li><a href="includes/phpscripts/part_quick_view.php?pn='.$pn.'&customer='.$customer.'" target="contentFrame">'.$pn.'</a>';
}
}
echo '</ul>';
}
?>
</div>
</td>
<td>
<iframe src="" name="contentFrame" width="100%" height="500" scrolling="yes" marginheight="0" marginwidth="0" frameborder="0">
<p>Your browser does not support iframes</p>
</iframe>
</td>
</tr>
<tr>
<td colspan="2">
<center>
<form id="rcv_common_parts">
<input type="hidden" id="pn" name="pn"/>
<input type="hidden" id="customer" name="customer"/>
<table class="table">
<tr>
<td>Quantity to Receive:</td>
<td><input type="text" name="qty" /></td>
</tr>
</table>
</form>
</center>
</td>
</tr>
</table>
This is my most recent attempt. I gave up on the first method and have started trying with this file. Still haven't had any luck.
<?php
$con = mysql_connect("localhost:3306","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("pcu_ops", $con);
$sql="SELECT * FROM common_parts ORDER BY customer ASC, category ASC, subcategory ASC, pn ASC";
$result=mysql_query($sql,$con);
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<table border="0">
<colgroup>
<col width="300px" valign="top">
<col width="90%">
</colgroup>
<tr>
<td valign="top">
<!-- Add a <div> element where the tree should appear: -->
<div id="common_parts_tree">
<ul>
<?php
$row = mysql_fetch_array($result);
echo '<li class="expanded folder">'.$row['customer'];
echo '<ul>';
while (($row['category'] != NULL) && ($row['subcategory'] != NULL)) {
echo '<li class="expanded folder">'.$row['category'];
echo '<ul>';
echo '<li class="expanded folder">'.$row['subcategory'];
echo '<ul>';
echo '<li><a href="includes/phpscripts/part_quick_view.php?pn='.$row['pn'].'&customer='.$row['customer'].'" target="contentFrame">'.$row['pn'].'</a>';
echo '</ul>';
echo '</ul>';
}
echo '</ul>';
?>
</div>
</td>
<td>
<iframe src="" name="contentFrame" width="100%" height="500" scrolling="yes" marginheight="0" marginwidth="0" frameborder="0">
<p>Your browser does not support iframes</p>
</iframe>
</td>
</tr>
<tr>
<td colspan="2">
<center>
<form id="rcv_common_parts">
<input type="hidden" id="pn" name="pn"/>
<input type="hidden" id="customer" name="customer"/>
<table class="table">
<tr>
<td>Quantity to Receive:</td>
<td><input type="text" name="qty" /></td>
</tr>
</table>
</form>
</center>
</td>
</tr>
</table>
Sure hope someone can help!
Thanks!