Новый столбец таблицы для каждого эхо-флажка (php, mysql)

Я использую приведенный ниже сценарий для отображения флажков на основе того, что находится в моей таблице mySQL, с помощью взрыва/внедрения. Затем он повторяет либо установленный флажок, либо не отмеченный флажок в зависимости от того, что содержит поле местоположения в моей таблице (например, VIP-зона, приподнятая зона, сад).

<?


$aColors = array("Upstairs Function Room", "Whole Raised Area", "VIP Area", "Piano Area", "DJ Table" , "Canopy area" , "Garden Area", "Whole Bar", "Back Bar Tables" , "Raised Area Table 1", "Raised Area Table 2", "Raised Area Table 3", "Raised Area Table 4", "Raised Area Table 5", "Raised Area Table 6");

//converting comma separated into array using explode function
$dbcolors= explode(',',$row['location']);

foreach ($aColors as $locations) {

    if(in_array($locations,$dbcolors)) {
        echo "<input name=\"locations[]\" type=\"checkbox\" value=\"$locations\" CHECKED> $locations <br> ";
    } else
    {
        echo "<input name=\"locations[]\" type=\"checkbox\" value=\"$locations\"> $locations <br>";
    }
}
?>

Это отлично работает, но я могу заставить его отображать только длинный список флажков... Я хотел бы отобразить его в таблице и сказать, что для каждых 5 отображаемых флажков создается новый столбец (фактически я должен получить около 3 столбцов), но я не понимаю, как я могу этого добиться... Любая помощь очень ценится.

Роб


person Rob Crouch    schedule 20.11.2012    source источник


Ответы (2)


Тривиальным способом был бы счетчик $i, который вы инициализируете с помощью $i = 0 вне foreach и увеличиваете его с помощью $i++ внутри foreach, тогда каждый раз, когда $i % 5 == 0 истинно, вы начинаете новый столбец (echo '</td><td>').

Если у вас есть дополнительные стили, может быть проще разделить массив с помощью array_chunk() следующим образом: foreach (array_chunk($aColors, 5) as $block) { } и получить к ним доступ с помощью $block[0], $block[1] ... $block[4] внутри foreach.

person AndreKR    schedule 20.11.2012
comment
Спасибо, я в значительной степени sussed это с информацией, которую вы предоставили! для всех, кто заинтересован, вставьте изменения ниже: - person Rob Crouch; 21.11.2012

окончательный рабочий код...

        <?


$aColors = array("Upstairs Function Room", "Whole Raised Area", "VIP Area", "Piano Area", "DJ Table" , "Canopy area" , "Garden Area", "Whole Bar", "Back Bar Tables" , "Raised Area Table 1", "Raised Area Table 2", "Raised Area Table 3", "Raised Area Table 4", "Raised Area Table 5", "Raised Area Table 6");

//converting comma separated into array using explode function
    $dbcolors= explode(',',$row['location']);
     $i = 0;     

          echo "<table border='0'><tr>    <td>";   

  foreach ($aColors as $locations) {

      $i++ ;


      if ($i % 5 == 0) {echo "</td>
    <td>";}

     if(in_array($locations,$dbcolors)) {
      echo "<input name=\"locations[]\" type=\"checkbox\" value=\"$locations\" CHECKED><span style='font-size:9px;'> $locations</span> <br> ";
          } else
          {
      echo "<input name=\"locations[]\" type=\"checkbox\" value=\"$locations\"> <span style='font-size:9px;'> $locations </span><br>";
                  }
              }

               echo "</td>
  </tr>
</table>";
?>
person Rob Crouch    schedule 20.11.2012