Nisto
Nisto

Reputation: 11

Easy method to print something, only once inside while loop?

I want to fetch information from one table and loop that until it's done, with the help of a while loop. Although, I want one column to be printed only once inside the loop.

There's two solutions I've come up with...

<?php   
$i = 0;
// while loop start
if($i == 0){
// stuff to print
$i++;
}
// while loop end
?>

And ofcourse, I could just make another query before the while loop.

But these methods really aren't too efficient. Is there a less messy way to do this?

Actually, I'd be okay with running another query before the while loop, if it didn't get so messy, and perhaps if I could just re-use the query intended for the loop (I fetch everything from the table). I tried experimenting with mysql_fetch_field, but I'm not sure I get how it works, or if that even helps here * embarrassed *


Currently, the code looks like so:

$fetch = mysql_query("SELECT *
                      FROM `pms`
                      JOIN `pm_conversations` ON pms.ConvID = pm_conversations.ID
                      WHERE `ConvID`='".$_GET['id']."'");

$i = 0;
while($print = mysql_fetch_array($fetch)){
  if($i == 0){
  echo $print['Subject'];
  $i++;
  }
  <table>
  <th><?=$print['From']?>, <?=$print['DateSent']?></th>
  <tr><td><?=$print['Message']?></td></tr>
  </table>
}

Upvotes: 0

Views: 4813

Answers (3)

cwallenpoole
cwallenpoole

Reputation: 82088

Have you thought about do...while? It has all of the benefits of while, plus it allows for code to conditionally happen before the first iteration.

$res = mysql_fetch_array( $resource );
// run the magical run once query/functionality/bunnies/whatever
// Hey, I'm tired. Let there be bunnies.
do
{
    // put the regular while loop constructs in here;
}
while( $res = mysql_fetch_array( $resource ) );

Upvotes: 1

easyb
easyb

Reputation: 68

$rs = mysql_query("SELECT * FROM tbl");
$row = mysql_fetch_array($rs);

do {
    echo $row['column_name'];
} while($row = mysql_fetch_array($rs));

I don't know if this is what you need. Hope this one helps. =]

Upvotes: 1

Rob
Rob

Reputation: 8195

If I understand your question correctly, I think you've got the right idea. I'm guessing you want to print something extra the first iteration (like maybe column headers using the array keys)?

$cnt= 0;
while($row = mysql_fetch_assoc($res)) {
    if(0 == $cnt++) {
        // first iteration only
    }
    // all iterations
}

Or, if I'm totally off a better description of what you're trying to do and the real world situation would help.

Upvotes: 3

Related Questions