Good Afternoon Lai,

Please disregard my previous, Good Morning, post. I solved my error problem. Plus, when I run the script, the popup menu appears as it should.

Now, I need to go one step further. Let's say you want to buy two blankets, the same exact blanket, one will be in blue and the other in green.

When I add an item with one color and then try to add the same item with another color, the first item/color is removed.

Right now, my Add routine is using product_id which is a higher level product code. In the same table that contains the color field, I have a prod_id which is a unique key for each item for each color. For example, green blanket is 7GR, blue blanket is 7BL, etc. It's the prod_id that is in with the color table that needs to be passed to my add_item subroutine as a $ref->prod_id.

I made an attempt to modify the color array code to include this prod_id. Unfortunately, when I run the script, I'm receiving and Internal Server Error. Apparently, it does not like something that I did.

Can you spot check my code to see if I'm bringing in the prod_id with the color correctly?

sub get_product_table { my $sth = shift; my $dbh = WebDB::connect (); my ($clref, $ref); my @row; my @nav_link; my ($color, @color); while (my $ref = $sth->fetchrow_hashref ()) { $clref = $dbh->prepare ("SELECT color, prod_id FROM ite +m WHERE prod_id = ".$ref->{product_id}); $clref->execute(); while (my ($color, $prod_id) = $clref->fetchrow_hashref +()) { push @{$ref->{color}, $ref->{prod_id}}, ($color->{color +}, $prod_id->{prod_id}); } my $serve_url = sprintf ("serve_image.cgi?product_id=%s;picture", + escape ($ref->{product_id})); # generate a form allowing a quantity of the item to be added # to the cart push (@row, start_form(-method=>'POST', -action=>url()), hidden( -name => "choice", -override => 1, -default => "add" ), hidden( -name => "prod_id", -override => 1, -default => escapeHTML($ref->{prod_id})), Tr ({-style=>"font-family: verdana; font-size: 10pt;"}, td (img ({-src => $serve_url, -alt => escapeHTML($ref->{product_id} +)})), td ({-width=>"80", -valign=>"top", -align => "center"}, escapeHTML( + $ref->{prod_id} )), td ({-width=>"190", -valign=>"top"}, escapeHTML( $ref->{description +} ))), td (" "), Tr ({-style=>"font-family: verdana; font-size: 10pt;"}, td ({-colspan => "3", -align => "right", -style=>"font-weight: 700; + color:blue;"}, "Price: \$", escapeHTML( sprintf( "%.2f", $ref->{pri +ce}))), Tr ({-style=>"font-family: verdana; font-size: 10pt;"}, td ({-colspan => "3", -align => "right"}, "Colors:", popup_menu( -n +ame => "color", -values => $ref->{color}))), Tr ({-style=>"font-family: verdana; font-size: 10pt;"}, td ({-colspan => "3", -align => "right"}, "Quantity:", popup_menu( +-name => "quantity", -values => ["1", "2", "3", "4", "5", "6", "7", " +8", "9"])), td (image_button( -name => "Add Item", -src=>"../images/add.jpg", - +border=>"0" )))), Tr ({-valign=>"top"}, td ({-colspan=>"7", -width=>"100%"}, hr)), end_form() ); } $sth->finish (); return undef unless @row; # no items? return (table ({-border => 0, -align => "center", -style=>"font-fa +mily: verdana; font-size: 10pt;"}, @row)); }

Thanks for your help. Oh, just in case, here's the Add Item subroutine.
sub add_item { my ($dbh, $cart_ref, $prod_id, $qty, $color) = @_; # If the item isn't already in the cart, look it up from the datab +ase # and store it in the cart as a new entry with a quantity of zero. if (!exists ($cart_ref->{$prod_id})) { my $sth = $dbh->prepare ("SELECT * FROM catalog_pet, item WHER +E catalog_pet.product_id = item.prod_id AND prod_id = ?"); $sth->execute ($prod_id); my $item_ref = $sth->fetchrow_hashref (); $sth->finish (); return if !defined ($item_ref); # this shouldn't happen... $cart_ref->{$prod_id} = {}; # create new entry, indexed by +item ID $cart_ref->{$prod_id}->{description} = $item_ref->{description +}; $cart_ref->{$prod_id}->{price} = $item_ref->{price}; $cart_ref->{$prod_id}->{qty} = 1; } $cart_ref->{$prod_id}->{qty} = $qty; $cart_ref->{$prod_id}->{color} = $color; }

In reply to Re: Re^5: Joining Tables Problem by b310
in thread Joining Tables Problem by b310

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.