[FONT=Arial,Helvetica, sans-serif][FONT=Arial,Helvetica, sans-serif]Hi,I am trying to create a site that sells music. I have page with a list of tracks, each with a submit button to buy the track. When a user clicks on one of the submit buttons, the catalog number gets inserted into a table called cart. The problem is that whichever submit button is pressed, only the first row is inserted. Each line of the form has a hidden field with a value of the row from the tracks table in the database. Here is the code I have so far: foreach ($cgi_object->param()) { $form{$_} = $cgi_object->param($_); $catnum = $form{cat_num}; $row = $form{id}; } my $insert=qq~ insert into cart (id,cat_num) select id,catalog_num from tracks where id ='$row'~; my $dbh=DBI->connect($connectionInfo,$user,$passwd); my $sth=$dbh->prepare($insert); $sth->execute(); When I execute the mysql statement in the database and replace $id with a row number I get the desired result. I'm guessing the problem has something to do with putting the insert into a loop? Not sure quite how to do this. Any help would be much appreciated. Thanks. [/FONT][/FONT]
Code: my $insert = qq~ insert into cart (id,cat_num) select id,catalog_num from tracks where id =?~; my $dbh = DBI->connect( $connectionInfo, $user, $passwd ); my $sth = $dbh->prepare($insert); foreach ( $cgi_object->param() ) { $form{$_} = $cgi_object->param($_); $catnum = $form{cat_num}; $row = $form{id}; $sth->execute($row); }
Also, it sounds to me like you might one to go with checkboxes rather than submit buttons so that they can add a bunch of tracks to the cart at once, rather than one at a time...