On Thu, 9 Nov 2000, Astrid Hexsel wrote:
> Hello all,
>
> I have a form which has got checkboxes and I am having problems to have their
> values stored in different rows of a table.
>
>
> What I have done is:
>
> # colour_id is the name of my checkboxes in the input tag
> <input type=checkbox name=colour_id value=200>
> <input type=checkbox name=colour_id value=201>
> etc ...
>
> # I put all the values into the array and split them
>
> $colour = $formdata{'colour_id'};
> @colours = split (/,/, $colour);
Try to print the array out, to check whether all values are there.
>
> #then I want to insert then into a table (called cart)in the row called colour_id.
> If I have more than one value they have to be in different rows.
>
> # my code:
>
> foreach $colour(@colours)
> {
> $qry = INSERT INTO cart VALUES
> ('$session_id', '$range_id', '$colour')
> }
>
Try to specify what are you inserting, and use double quotes:
foreach $colour (@colours) {
$qry = qq{ INSERT INTO cart (session_id,range_id,colour) VALUES ('$session_id','$range_id','$colour') };
$dbh->do(qq{ $qry });# how about this?
}
Btw, try print out in the loop to see, if you are getting right inserts.
> And what happens is that I am only getting just
> one value now inserted in the row. If for example I checked 3 boxes I will get
> only the last
> one.
>
> The foreach loop works fine out of the query.
>
> Thanks a lot for any help.
Advice, don't take my CGI as pure gold. I use Embperl, and so my cgi may
be not so error-free :)
Greetings,Antti