Как я могу ограничить вывод из цикла PHP в то время как? - PullRequest
1 голос
/ 05 августа 2011

У меня работает цикл while, который возвращает значения из таблицы MYSQL.Возвращает около 90 записей из запроса.Я надеюсь, что смогу разбить эти 90 значений и отобразить их в группах по 5. Это может показаться странным, поэтому позвольте мне поделиться некоторыми примерами кода, чтобы помочь уточнить:

$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 <> ''");

Здесь я извлекаю значениячто мне нужно из таблицы ...

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

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

}   

На этом этапе я запустил цикл и получил отображение всех 90 записей.Как я могу вытащить значения и отобразить их небольшими кусками?Если я использую зацикленные значения вне цикла while, он просто выдаст мне последнее значение из набора.Есть ли простой способ использовать уникальное значение $id из столбца, чтобы получить определенную группировку в цикле?

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

Это добавит больше br и hr после каждых 5 записей:

$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++;
}   
1 голос
/ 05 августа 2011

Вот один (не очень сложный) подход, который вы могли бы использовать:

$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
}
0 голосов
/ 05 августа 2011

Вы хотите сохранить эти данные в переменной и ссылаться на них вне цикла.

Попробуйте это:

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

И теперь вы можете просто отображать определенные строки:

print $data[$someRow];
...