简体   繁体   中英

How Can I Limit the Output from a PHP While Loop?

I have a while loop running that is returning values from a MYSQL table. It returns about 90 entries from the query. My hope is to be able to break these 90 values up and display them in groupings of 5. This may sound confusing so let me share some code samples to help clarify:

$con = mysql_connect("host", "username", "password") or die ("Unable to connect to server");
mysql_select_db("database") or die ("Unable to select database");
$sql = mysql_query("SELECT * FROM `table` WHERE column IS NOT NULL AND column <> ''");

Here I am pulling the values out that I need from the table...

while($row=mysql_fetch_array($sql))
{
$id=$row['id'];
$column=$row['column'];

echo $id . '<br>';
echo $column . '<br>';

}   

At this point, I have run the loop and get the display of all 90 entries. How can I pull the values out and display them in smaller chunks? If I use the looped values outside of the while loop, it just gives me the last value from the set. Is there a simple way to use the unique $id value from the column to get a specific grouping within the loop?

This will add more br's and a hr after each 5 records:

$cnt = 0;
while($row=mysql_fetch_array($sql))
{

  $id=$row['id'];
  $column=$row['column'];

  echo $id . '<br>';
  echo $column . '<br>';

  if($cnt % 5 == 0) echo "<br><br><hr><br><br>";

  $cnt++;
}   

Here is one (not very sophisticated) approach you could take:

$group_size = 5;
$tracking_variable = 0;
while ($row = function_to_fetch_row()) {
    if ($tracking_variable == 0) {
        // logic for the start of a grouping
    }
    // logic to display the row
    $tracking_variable = ($tracking_variable + 1) % $group_size;
    if ($tracking_variable == 0) {
        // logic for the end of a grouping
    }
}
if ($tracking_variable > 0) {
    // logic for the end of the final grouping
}

You want to save this data in a variable, and reference it outside of the loop.

Try this:

$data = array();
while($row=mysql_fetch_array($sql))
{
    $data[$row['id']] = $row['column'];
}

And now you can just display specific rows:

print $data[$someRow];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM