Группировка результатов цикла WHILE - PullRequest
1 голос
/ 31 марта 2011

В настоящее время я использую цикл WHERE для отображения 2 столбцов информации в моей базе данных. Вот код:

$sql2 = sprintf($rawsql2, mysql_real_escape_string($id));
$result2 = mysql_query($sql2);

/*These if & while statements decide whether or not the information should be displayed. If no results are returned from the query above then an alternative message is shown.*/

if (mysql_num_rows($result2) > 0) {
    while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
        echo $row["open"] . "-" . $row["close"] . "<br/><br/>";
    }
}
else {
    echo "Error";
}

Это выводит следующее:

08:00:00-12:30:00

13:30:00-16:30:00

09:00:00-17:00:00

18:00:00-20:00:00

09:00:00-17:00:00

18:00:00-20:00:00

08:00:00-17:00:00

18:00:00-20:00:00

09:00:00-17:00:00

18:00:00-20:00:00

Теперь, что мне нужно сделать, это сгруппировать каждые 2 повернутые строки, чтобы вместо этого это выглядело как:

08:00:00-12:30:00 13:30:00-16:30:00

09:00:00-17:00:00 18:00:00-20:00:00

09:00:00-17:00:00 18:00:00-20:00:00

08:00:00-17:00:00 18:00:00-20:00:00

09:00:00-17:00:00 18:00:00-20:00:00

Возможно ли это? Спасибо за любую помощь

edit: Спасибо за все ответы, все ... Я использовал ответ Shakti, так как он был первым, который я увидел, но, судя по всему, все очень похожи.

Ответы [ 8 ]

1 голос
/ 31 марта 2011

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

$lines = 1;
if(mysql_num_rows($result2) > 0) {
    while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {

        echo $row["open"] . "-" . $row["close"];
        echo (($lines%2 == 0)?"<br/><br/>":'');
        $lines++;

    }
} else {
        echo "Error";
}
1 голос
/ 31 марта 2011
if(mysql_num_rows($result2) > 0){
    $counter = 0;
    while($row = mysql_fetch_array($result2, MYSQL_ASSOC)){
        echo $row["open"] . "-" . $row["close"] . " ";
        if(++$counter % 2 == 0){
          echo "<br/><br/>";
          $counter = 0;
        } 
    }
}
1 голос
/ 31 марта 2011
if(mysql_num_rows($result2) > 0)
{
    $count=0;
    while ($row = mysql_fetch_array($result2, MYSQL_ASSOC))
    {    
        echo $row["open"] . "-" . $row["close"] ;
        if ($count % 2 !=0 )
        {
           echo  "<br/><br/>"; 
        } 
        $count++;    
    }
}
0 голосов
/ 31 марта 2011

Моя версия кода.

    $sql2 = sprintf($rawsql2, mysql_real_escape_string($id));
    $result2 = mysql_query($sql2);

    if(mysql_num_rows($result2) > 0) {
        while (true) {
            $row1 = mysql_fetch_array($result2, MYSQL_ASSOC);
            $row2 = mysql_fetch_array($result2, MYSQL_ASSOC);
            if (!($row1 and $row2)) break;
            echo $row1["open"] . "-" . $row1["close"] . " ";
            echo $row2["open"] . "-" . $row2["close"] . "<br/><br/>";
        }
    } else {
        echo "Error";
    }
0 голосов
/ 31 марта 2011

Вывод <br/><br/> только на на каждой другой итерации цикла.(Кстати, <p> или <ul> или <div> были бы более семантическими.)

$counter = 0;
while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {

    echo $row["open"] . "-" . $row["close"] . " ";

    // Break line after every two items
    $counter = ($counter + 1) % 2;
    if ($counter == 0)
        echo "<br/><br/>";
}
0 голосов
/ 31 марта 2011
if($result2) { 
    $printTimes = function($r) {echo $row["open"] . "-" . $row["close"];};
    $newLine = false;
    while ($row = mysql_fetch_assoc($result2)) 
    {
        $printTimes($row);
        echo $newLine ?  '<br /><br />' : ' ';
        $newLine = !$newLine;
    }
}
0 голосов
/ 31 марта 2011
  $i=1;
  while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    if ($i == 1) {
      echo $row["open"] . "-" . $row["close"];
      $i++;
    } else {
      echo $row["open"] . "-" . $row["close"] . "<br /><br />";
      $i=1;
    }
0 голосов
/ 31 марта 2011
$sql2 = sprintf($rawsql2, mysql_real_escape_string($id));

$result2 = mysql_query($sql2);

/*These if & while statements decide whether or not the information should be displayed. If no results are returned from the query above then an alternative message is shown.*/
int row_count=mysql_num_rows($result2)
if(row_count > 0) {
    while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
        row_count--;
        echo $row["open"] . "-" . $row["close"] ;
        if(row_count > 0 && ($row = mysql_fetch_array($result2, MYSQL_ASSOC)){
          row_count--;   
          echo $row["open"] . "-" . $row["close"] ;
         }
        "<br/><br/>"


    }
} else {
        echo "Error";
}

должен сделать это, вам может понадобиться перехватить, если есть нечетное число

...