Как заполнить поля заполнителей с помощью цикла foreach? - PullRequest
0 голосов
/ 28 ноября 2010

Использование PHP (при необходимости, jquery):

У меня есть эта страница с 30 ящиками. Это никогда не будет больше или меньше.

В этих 30 полях некоторые из них будут заполнены данными, специфичными для коробок.

Как я могу сказать:

Если на foreach есть 20 записей для зацикливания проблем, тогда 20 блоков будут содержать данные, а остальные останутся с заполнителями. Если на foreach есть 10 записей, то с заполнителями останется 20 ящиков.

Как можно добиться чего-то подобного? Кто-нибудь может дать мне хороший пример для этого?

Большое спасибо, MEM

Ответы [ 4 ]

1 голос
/ 28 ноября 2010

Предполагая, $data - это массив ваших данных с числовым ключом:

<?php for($i = 0; $i < 30; $i++): ?>

  <?php if(isset($data[$i]): ?>
    <!-- the html for a box WITH data -->
  <?php else: ?>
    <!-- html for an empty placeholder box -->
  <?php endif; ?>

<?php endfor;?>
1 голос
/ 28 ноября 2010

У вас есть названия для каждой коробки? Предполагая, что в ваших 10 или 20 записях есть какое-то имя / идентификатор, которые, как я предполагаю, находятся в массиве ...

function OutputBoxes($records, $boxes){
      foreach($boxes as $box){
              $box->PopulateWithPlaceHolder();
      }

      foreach($records as $record){
              $box = GetMatchingBox($record);
              $box->SetValue($record['valueProperty']);
      }

      foreach($boxes as $box){
              echo $box->ElementHtml();
      }

}

Предполагая, что у вас есть некоторый тип объекта box, который знает, как выводить себя в виде HTML, и установить любое значение, которое вы хотите, исходя из записи.

1 голос
/ 28 ноября 2010

сделать массив со всеми вашими данными.затем запустите цикл for (0..30), чтобы собрать свои блоки.Для каждого элемента в вашем цикле, если ваш массив box-data содержит элемент, выведите конкретные данные, в противном случае выведите данные-заполнители.Как то так ...

<?php
  $box_data = array(
     "data for box 1", 
     "data for box 2", 
     "data for box 3"
  );
  for( $i=0; $i<30; ++$i ) {
     if( $i >= count($box_data) ) {
        // output "placeholder box"
        echo "<div class=\"box placeholder\">Placeholder Box</div>";
     } else {
        // output the box's specific data
        echo "<div class=\"box non-placeholder\">{$box_data[$i]}</div>";
     }
  }
1 голос
/ 28 ноября 2010

Заполните массив битами данных, которые у вас есть, добавьте 30 заполнителей, возьмите первые 30 элементов массива и выполните итерации по ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...