jacko_162 Posted May 24, 2008 Share Posted May 24, 2008 Hi folks, wonder if you can help a .php newbie out. I have a catagories page, that i want to list a load of root catagories and sub catagories on. for example; Root Catagory Root Catagory These are my root catagories, i want it to list like the following; Root Catagory Sub Catagory Sub Catagory so i set my table up like so; =============== ID (Obviously the Catagory ID) NAME (Catagory Name) VIEW (YES/NO to make it viewable on main site) PARENT (this is the new bit!) i add the following to this table; ------------------- ID = 1 NAME = Root Catagory VIEW = Yes PARENT = 0 ------------------- ID = 2 NAME = Sub Catagory VIEW = Yes PARENT = 1 ------------------- ID = 2 NAME = Sub Catagory VIEW = Yes PARENT = 1 ------------------- i then need a page to show me that PARENT = '0' should come first, then i need to add the sub catagory (in example above PARENT = '1' ) how can i code this?? Any help appreciated. Quote Link to comment Share on other sites More sharing options...
sasa Posted May 25, 2008 Share Posted May 25, 2008 can we see some code Quote Link to comment Share on other sites More sharing options...
Wolphie Posted May 25, 2008 Share Posted May 25, 2008 Why not just do something like: index.php <?php error_reporting('E_ALL'); $sql = "SELECT `parent` FROM `db_name` . `categories`"; $sql = mysql_query($sql); if(mysql_num_rows($sql) > 0)) { while($row = mysql_fetch_array($sql)) { print '<a href="article.php?parent=' . $row['id'] . '">' . $row['name'] . '</a>'; print '<br />'; } } else { print 'No Categories Available.'; } ?> article.php <?php error_reporting('E_ALL'); $parent = (isset($_GET['parent'])) : htmlentities(mysql_real_escape_string($_GET['parent'])) ? false; $child = (isset($_GET['child'])) : htmlentities(mysql_real_escape_string($_GET['child'])) ? false; $article = (isset($_GET['article'])) : htmlentities(mysql_real_escape_string($_GET['article'])) ? false; if($parent) { $sql = sprintf("SELECT `child` FROM `db_name` . `categories` WHERE `parent` = '%'", $parent); $sql = mysql_query($sql); if(mysql_num_rows($sql) > 0 ) { while($row = mysql_fetch_array($sql)) { print '<a href="article.php?child=' . $row['id'] . '">' . $row['name'] . '</a>'; print '<br />'; } } else { print 'Invalid ID'; } } else { print 'Invalid ID'; } if($child) { $sql = sprintf("SELECT * FROM `db_name` . `articles` WHERE `cat_id` = '%s'; $sql = mysql_query($sql); if(mysql_num_rows($sql) > 0) { while($row = mysql_fetch_array($sql)) { print '<a href="article.php?article=' . $row['id'] . '">' . $row['name'] . '</a>'; print '<br />'; } } else { print 'Invalid ID'; } } else { print 'Invalid ID'; } if($article) { $sql = sprintf("SELECT * FROM `db_name` . `articles` WHERE `id` = '%s' LIMIT 1", $article); $sql = mysql_query($sql); if(mysql_num_rows($sql) > 0) { if($obj = mysql_fetch_object($sql)) { print '<a href="article.php?article=' . $obj->id . '"><h1>' . $obj->name . '</h1></a>'; print '<p>' . $obj->content . '</p>'; } } else { print 'Invalid ID'; } } else { print 'Invalid ID'; } ?> Obviously you'll need to adjust it to meet your requirements. Quote Link to comment Share on other sites More sharing options...
sasa Posted May 25, 2008 Share Posted May 25, 2008 1st i see: change line $parent = (isset($_GET['parent'])) : htmlentities(mysql_real_escape_string($_GET['parent'])) ? false; to $parent = (isset($_GET['parent'])) ? htmlentities(mysql_real_escape_string($_GET['parent'])) : false; swap ? and : Quote Link to comment Share on other sites More sharing options...
Wolphie Posted May 25, 2008 Share Posted May 25, 2008 oops yeah my bad, it's 8am and I haven't slept lol Quote Link to comment Share on other sites More sharing options...
jacko_162 Posted May 25, 2008 Author Share Posted May 25, 2008 thank you, i have used this for cat.php <? include("includes/connect.php") ?> <?php $categories = mysql_query("select * from $table13 WHERE parent = '0' ORDER BY name ASC") or die(mysql_error()); // Select all the root categories and order them alphabetically while($category = mysql_fetch_array($categories)) // Start the loop for root categories { echo '<h2><a href="category.php?id=' . $category['id'] . '">' . $category['name'] . '</a></h2>'; // Display category name $subcategories = mysql_query("SELECT * FROM $table13 WHERE parent = '" . $category['id'] . "' ORDER BY name ASC") or die(mysql_error()); // Same as the query above but this time the parent is the root category that has just been echoed echo '<ul>'; while($subcategory = mysql_fetch_array($subcategories)) // Start the loop for subcategories { echo ' <li><a href="category.php?id=' . $subcategory['id'] . '">' . $subcategory['name'] . '</a></li>'; // Display subcategory. Link to category.php } echo '</ul>'; } ?> and it displays how i need it to. thank you again. Quote Link to comment Share on other sites More sharing options...
jacko_162 Posted May 25, 2008 Author Share Posted May 25, 2008 another quick question; can anyone help me convert the above code into this page; <? include("includes/header.php") ?> <?php $categories = mysql_query("select * from $table13 WHERE parent = '0' ORDER BY name ASC") or die(mysql_error()); // Select all the root categories and order them alphabetically while($category = mysql_fetch_array($categories)) // Start the loop for root categories { echo '<a href="category.php?id=' . $category['id'] . '">' . $category['name'] . '</a>'; // Display category name $subcategories = mysql_query("SELECT * FROM $table13 WHERE parent = '" . $category['id'] . "' ORDER BY name ASC") or die(mysql_error()); // Same as the query above but this time the parent is the root category that has just been echoed echo '<br>'; while($subcategory = mysql_fetch_array($subcategories)) // Start the loop for subcategories { echo ' <li><a href="category.php?id=' . $subcategory['id'] . '">' . $subcategory['name'] . '</a></li>'; // Display subcategory. Link to category.php } echo '</ul>'; } ?> much appreciated. Quote Link to comment Share on other sites More sharing options...
jacko_162 Posted May 25, 2008 Author Share Posted May 25, 2008 sorry i ment this code; <title>Cpanel - Catagory List</title> <? include("includes/header.php") ?> <table width="100%" border="0" cellspacing="1" cellpadding="4"> <tr valign="top"> <td width="80%"><table width="75%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="4" height="4" bgcolor="#f2f3f5"><img src="images/top_left_corner.gif" width="4" height="4" /></td> <td height="4" background="images/top_menu.gif" bgcolor="#f2f3f5"><img src="images/top_menu.gif" width="1" height="4" /></td> <td width="4" height="4" bgcolor="#f2f3f5"><img src="images/top_right_corner.gif" width="4" height="4" /></td> </tr> <tr> <td width="4" background="images/left_menu.gif" bgcolor="#f2f3f5"><img src="images/left_menu.gif" width="4" height="1" /></td> <td bgcolor="#f2f3f5"><table cellpadding="3" cellspacing="1" border="0" width="100%"> <tr> </tr> <tr> <td width="60%"><b><span class="style8 style4"><strong><u>Catagory Name</u></strong></span></b></td> <td width="25%"><div align="center" class="style8"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><u>Show?</u></font></div></td> <td width="15%"></td> <? // Query to pull information from the "Catagories" Database $result = mysql_query("select * from $table13 order by view DESC"); while ($row = mysql_fetch_object($result)) { ?> </tr> <tr> <td width="60%"><? echo $row->name; ?> </td> <td width="25%"><div align="center"><span class="style7"> <? echo $row->view; ?> </span></div></td> <td width="15%"><div align="center"><font size="2"><b><a href="editcat.php?ID=<? echo $row->id; ?>"><img src="images/edit.gif" border="0" /></a> <a href="remove.php?ID=<? echo $row->id; ?>&db=catagory"><img src="images/del.gif" border="0" /></a></b></font> <? } ?> </div></td> </tr> </table></td> <td width="4" background="images/right_menu.gif" bgcolor="#f2f3f5"><img src="images/right_menu.gif" width="4" height="1" /></td> </tr> <tr> <td width="4" height="4" bgcolor="#f2f3f5"><img src="images/bottom_left_corner.gif" width="4" height="4" /></td> <td height="4" background="images/bottom_menu.gif" bgcolor="#f2f3f5"><img src="images/bottom_menu.gif" width="1" height="4" /></td> <td width="4" height="4" bgcolor="#f2f3f5"><img src="images/bottom_right_corner.gif" width="4" height="4" /></td> </tr> </table> <div align="right"></div></td> </tr> </table> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.