Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re: Looping and counting

by Riales (Hermit)
on Apr 04, 2012 at 01:06 UTC ( #963340=note: print w/replies, xml ) Need Help??

in reply to Looping and counting

I suppose you're fetching a row at a time within your for loops?

It might be easier fetch the first 50 headlines (by putting a LIMIT in the SQL query) and grabbing all of them at once and putting that into an array. Then, you can just output the first 10 into the first file and the next 40 into the second file.

Alternatively, you can use something like your existing for loop like so:

for ($n = 1; $n < 50; $n++) { # Fetch your row however you're doing it and put into $headline if ($n < 10) { print outfile1 $headline; } else { print outfile2 $headline; } }

Replies are listed 'Best First'.
Re^2: Looping and counting
by htmanning (Pilgrim) on Apr 04, 2012 at 01:30 UTC
    Thanks. grabbing only the first 50 is how I normally do it, but I didn't write this script so I'm a bit lost. Here's more code to see if it makes it clearer. This is the skeleton as I've ripped out a bunch of variable setting.
    $filebase = "news"; $num_records = 10; $SQL = "SELECT * FROM $content_table WHERE contenttype = 'video' ORDER + BY dateadded DESC, ID DESC"; for ($n=1; $n<=$num_records; $n++) { $pointer = $sth->fetchrow_hashref; $title = $pointer->{'title'}; $main_list2 = $main_list2 . "$title"; print outfile1 "$main_list2"; } $filebase = "morenews"; $num_records = 40; for ($n=1; $n<=$num_records; $n++) { $pointer = $sth->fetchrow_hashref; $title = $pointer->{'title'}; $main_list2 = $main_list2 . "$title"; print outfile2 "$main_list2"; }
    As you can see, it loops through and adds another $title to $main_list2. No matter what if statement I put before $main)list2, it doesn't work. I had it like you suggested but no dice. What I'm ending up with is the first 10 titles on page 1, then the first 10 titles, plus the first 40 titles on page 2. Thanks.

      Put this between your two for loops:

      $main_list2 = '';

      But seeing as you have have a $main_list2, why don't you use $main_list1 in the first for loop instead?

      Also, probably want to have a "\n" between your titles:

      $main_list2 .= "$title\n";

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://963340]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2018-06-18 06:33 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (109 votes). Check out past polls.