Hi;<br>I have the following code snippet:<br><br>  print 'Original: ', catChains, '<br />'<br>  while i < MAXLEVEL:<br>    flag = 0<br>    j = 0<br>    while j < len(parents):<br>      for chain in catChains:<br>
        if parents[j] == chain[len(chain)-1]:<br>          chain.append(children[j])<br>          print '1: ', catChains, '<br />'<br>          catChains.append(chain)<br>          print '2: ', catChains, '<br />'<br>
          flag = 1<br>      j += 1<br>    i += 1<br>    if flag == 0:<br>      break<br>  print 'Final: ', catChains<br> <br>which prints this:<br><br>Original:  [['prodCat1'], ['prodCat2']] <br>
1:  [['prodCat1', 'prodCat3'], ['prodCat2']] <br>
2:  [['prodCat1', 'prodCat3'], ['prodCat2'], ['prodCat1', 'prodCat3']] <br>
1:  [['prodCat1', 'prodCat3', 'prodCat5'], ['prodCat2'], ['prodCat1', 'prodCat3', 'prodCat5']] <br>
2: [['prodCat1', 'prodCat3', 'prodCat5'], ['prodCat2'], ['prodCat1',
'prodCat3', 'prodCat5'], ['prodCat1', 'prodCat3', 'prodCat5']] <br>
Final: [['prodCat1', 'prodCat3', 'prodCat5'], ['prodCat2'],
['prodCat1', 'prodCat3', 'prodCat5'], ['prodCat1', 'prodCat3',
'prodCat5']]
<br><br>Why is it that my append statement *deletes* elements of my tuple? The entire code follows:<br><br>#! /usr/bin/python<br><br>import string<br>import cgitb; cgitb.enable()<br>import MySQLdb<br>import cgi<br>import sys,os<br>
sys.path.append(os.getcwd())<br>from login import login<br>import datetime, Cookie, random<br>from particulars import title<br>from templateFrame import top, bottom<br>from particulars import myCookie<br>import time<br>import fpformat<br>
from sets import Set<br><br>def makeNav():<br>  print 'Content-type: text/html\r\n'<br>  print '<html>\n<body>'<br>  user, passwd, db, host = login()<br>  db = MySQLdb.connect(host, user, passwd, db)<br>
  cursor= db.cursor()<br>  form = cgi.FieldStorage()<br>  store = form.getfirst('store')<br>  sql = 'select Category, Parent from categories%s;' % (store[0].upper() + store[1:])<br>  cursor.execute(sql)<br>
  children = [itm[0] for itm in cursor]<br>  parents = [itm[1] for itm in cursor]<br>  catChains = []<br>  i = 0<br>  while i < len(parents):<br>    if parents[i] is None:<br>      child = []<br>      child.append(children[i])<br>
      catChains.append(child)<br>    i += 1<br>  i = 0<br>  MAXLEVEL = 10<br>  print 'Original: ', catChains, '<br />'<br>  while i < MAXLEVEL:<br>    flag = 0<br>    j = 0<br>    while j < len(parents):<br>
      for chain in catChains:<br>        if parents[j] == chain[len(chain)-1]:<br>          chain.append(children[j])<br>          print '1: ', catChains, '<br />'<br>          catChains.append(chain)<br>
          print '2: ', catChains, '<br />'<br>          flag = 1<br>      j += 1<br>    i += 1<br>    if flag == 0:<br>      break<br>  print 'Final: ', catChains<br>  lastChain = []<br>  lastChain.append('root')<br>
  print "<ul id='nav' class='dropdown dropdown.horizontal'>"<br>  for chain in sorted(catChains):<br>    link = ''<br>    i = 0<br>    while i < len(chain):<br>      link += '%s/' % string.replace(chain[i], ' ', '_')<br>
      i += 1<br>    link = '%s.py' % link[:-1]<br>    if len(chain) == len(lastChain)+1: # This is a new category level within the current chain.<br>      print "%s<ul>" % (' ' * (len(chain)-1))<br>
    elif len(chain) == len(lastChain): # This is a new category within in the same parent level.<br>      pass # This is just here to remind me how this works!<br>    j = 0<br>    while len(chain) < len(lastChain)-j:<br>
      j += 1<br>      print "%s</ul>" % (' ' * (len(chain)-j))<br>    print "%s<li id='n-%s'><a href='%s' class='dir'>%s</a></li>" % ((' ' * len(chain)), chain[len(chain)-1].lower(), link, chain[len(chain)-1])<br>
    lastChain = chain<br>  print '</ul>'<br><br>makeNav()<br><br>PS (Mainly, I believe, for Carsten): While programming is difficult for me, I am writing (and have pretty much finished) this (almost) fully automated shopping cart. I don't intend to write any other serious programming project. However, a shopping cart is vital to my Web design business. I will hereafter outsource my programming. But, as any good supervisor knows, one has to know how to supervise! If I can't read code, then I'm at the mercy of my programmer(s). If I can't afford to hire some top gun who can supervise, then it's my responsibility. Plus, if my programmer(s) quit, I need to step in and take over. I'm an ok businessman, and absolutely gifted in sales. And in poetry ;)<br>
beno<br clear="all"><br>-- <br>The Logos has come to bear<br><a href="http://logos.13gems.com/">http://logos.13gems.com/</a><br>