Having a Standard only, Deluxe only and Both will lead to problems in the future. (i.e. what if you add in a Basic feature set?) What I would do is 1. Get rid of the "Both" row in feature sets. 2. Have another table called "feature_set_features" or something better. The table has two columns, The "Feature id" and the "Feature set ID". If a feature is in one feature set, there in one row in the table. if a Feature is in Both feature sets, then there are two rows in this table, one for each feature set. 3. To query this, join features and feature_set_features on feature_id and use where feature_set_id = 'standard' or whatever if is. Hopefully I haven't confused you too much. Lang Ali Van Doren wrote: > Hello, > I am pretty new to PHP and MySQL, and am > struggling with this particular page I would like > to create. > I am building a page which lists categories of > house features (e.g. concrete, framing, > foundation, etc.) and then the particular features > that fall into those categories (e.g. the concrete > items are driveway, garage floor, sidewalk, > basement; the framing items include manufactured > floor joist, 1/2" OSB on roof, etc.) The tricky > part is that there are two lists of features I > need to produce: standard and deluxe. Some > features span both types, some are particular to > only one feature list. > I have created 3 tables to handle this: > - the feature_sets table has three items: both(1), > standard(2) only and deluxe(3) only > - the feature_categories table holds the 19 > categories of features (concrete, framing, etc.) > - the features table holds all of the features (63 > total.) > All tables have primary keys, and the features > table has 2 foreign keys corresponding to > featureset and the featurecategory. > > What I would like to be able to do is to have the > category appear, and then list the corresponding > features under it, depending on whether it's the > deluxe of standard feature list. Here's my code: > > <?php > require_once > ('/usr/home/fahomes/mysql_connect.php'); > $query = "SELECT category, feature_description > FROM features as f, feature_categories as fc WHERE > f.feature_category_id=fc.feature_category_id AND > f.featureset_id = '1' OR f.featureset_id = '3' > ORDER BY f.feature_category_id ASC"; > $result = @mysql_query ($query); > if ($result) { > while ($row = mysql_fetch_array($result, > MYSQL_NUM)) { > echo "<tr> > <td align=\"left\">$row[0]</td> > <td > align=\"left\"><ul><li>$row[1]</ul></td> > </tr>\n"; > } > mysql_free_result ($result); > } else { > echo '<p>The features could not be displayed due > to a system error. Please contact the <a > href=\"mailto:webster@xxxxxxxxxxxxxxxxxxxxxx\">webmaster</a>.</p><p>' > . mysql_error() . '</p>'; > } > mysql_close(); > ?> > > > What I am getting is initially it's creating a row > for each category/feature pair, so the categories > that have more than one feature listed appear in > more than one row. It works fine until record 34 > (id 33) when it starts puking out that feature for > 10 rows then the next feature for 1 row, then it > jumps back to the feature 33 for another 12 rows, > this time cycling through the categories. It's > quite bizarre: > http://roku.pair.com/fahomes/test/homes_dlx_features.php > > So, I actually have two questions: > 1) Does anyone know why my query is misbehaving so > badly? When I copy and paste the query into > MyPHPAdmin, it produces the same results, so I > know it's not the php. On thing I do notice is if > I change the query slightly (so that it looks for > records "WHERE > f.feature_category_id=fc.feature_category_id AND > f.featureset_id = '1' OR '3'" instead of > "f.featureset_id = '1' OR f.featureset_id = '3'" > it produces equally messed up, but different results. > > 2) Is there a way that I can display the data the > way I want to display it (list the category once, > then corresponding features underneath, before > going to the next category)? I would imagine it's > a WHILE loop that's inside another WHILE loop -- I > am just not sure how to go about it, and haven't > been able to track down anything in my books. > > Thanks for any advice! -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php