Got it. Needed to check for a stop marker and reset the counter, and
increment /after/ this. Silly me, should have dropped down to pseudocode
earlier.
adam
# Columns hack by Thallophytic g0d <hostyle at csn.ul.ie> && Me
my $count = $#channels + 1;
my $counter = 0;
my $columns = 3;
my $stop = int(($count / $columns) + .5);
my $width = int((100 / $columns) + .5);
# Open the table
to_browser(qq{ <br /><table width="100%"><tr valign="top">\n <td
width="$width%">});
# get the user's window target preference (which controls
# whether links should open up in the current or a new window.
my $link_target = get_setting( "user_link_target" );
# for each channel, parse and display.
foreach my $channel (@channels) {
if ( $counter == $stop ) {
to_browser(qq{ </td>\n <td width="$width%">});
$counter = 0;
}
$counter++;
<?php
$s=array(74,65,112,104,112,72,32,59,45,41);
for($i=0;$i<count($s);$i++){echo'&#'.$s[$i].';';}
?>
> -----Original Message-----
> From: adam beecher [mailto:lists at beecher.net]
> Sent: 11 December 2003 17:41
> To: WEBDEV
> Subject: RE: [ILUG-Webdev] Perl: counter for three columns
>>> Thanks eh... Thallophytic. That didn't work, I ended up with a
> rake of columns. With a little tweaking and twiddling, I managed
> to get it to the right number of columns with
> (($blah1%$blah2)==0), however I'm getting odd results now. For
> example, I'm getting the smaller number of feeds in the first
> column, whereas it should be in the last. Logic is pissing me
> off, I'm going drinking now! This is the latest code I have, but
> I have no idea how far I got with it... :)
>>> # Columns hack by Thallophytic g0d <hostyle at csn.ul.ie>
> my $count = $#channels + 1;
> my $counter = 0;
> my $columns = 4;
> my $stop = int(($count / $columns) + .5);
> my $width = int((100 / $columns) + .5);
>> # Open the table
> to_browser(qq{ <br /><table width="100%">$stop\n <tr
> valign="top">\n <td width="$width%">});
>> # get the user's window target preference (which controls
> # whether links should open up in the current or a new window.
> my $link_target = get_setting( "user_link_target" );
>> # for each channel, parse and display.
> foreach my $channel (@channels) {
>> $counter++;
>> if ( ($counter % $stop) == 0 ) {
> to_browser(qq{ </td>\n <td width="$width%">});
> }
>>>> <?php
> $s=array(74,65,112,104,112,72,32,59,45,41);
> for($i=0;$i<count($s);$i++){echo'&#'.$s[$i].';';}
> ?>
>>> > -----Original Message-----
> > From: Thallophytic g0d [mailto:hostyle at csn.ul.ie]
> > Sent: 11 December 2003 15:59
> > To: adam beecher
> > Cc: WEBDEV
> > Subject: Re: [ILUG-Webdev] Perl: counter for three columns
> >
> >
> > On Thu, 11 Dec 2003, adam beecher wrote:
> >
> > >
> > > # Hack to create two columns. Nasty perl but it's been a while.
> > > my $count = $#channels + 1;
> > > my $half = int($count / 2) + 1;
> > > my $counter = 0;
> > >
> > > # Open the table
> > > to_browser(qq{ <br /><table width="100%"><tr valign="top"><td
> > > width="50%"> });
> > >
> > > # for each channel, parse and display.
> > > foreach my $channel (@channels) {
> > > $counter = $counter + 1;
> > > if ( $counter == $half ) {
> > > to_browser(qq{ </td><td width="50%"> });
> > > }
> > >
> > >
> > > I'd like to change this to use three columns, which I guess I
> > could do by
> > > dividing by three and adding one like yerman does above
> > (doesn't perl have a
> > > modulus operator?), and then multiplying by two and yadda
> yadda, but I'd
> > > like to make a $columns var that I can adjust. Any hints for me?
> >
> > Completely OTOH and untested, something like the following should do it.
> >
> >
> > my $columns = 3;
> > my $counter = 0;
> > my $width = 100 / $columns;
> >
> >
> > foreach my $channel (@channels) {
> > $counter++;
> > if ( $counter % $columns ) { # if there is a remainder
> > # add another cell
> > to_browser(qq{ </td><td width="$width%"> });
> > } else { # no remainder, end our row
> > to_browser(qq{ </tr><tr> });
> > }
> > }
> >
> > Obviously the </tr><tr> isn't ideal ... but you should get the
> > drift of it
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!