Проверка значения всех значений цикла - PullRequest
0 голосов
/ 02 февраля 2010

У меня есть этот цикл в PHP, который выводит таблицу результатов,

<table cellspacing="0" cellpadding="3">
  <tr>
    <td><b>Content Image Title</b></td>
    <td><b>Content Image Type</b></td>
    <td><b>Headline Image</b></td>
    <td><b>Content Image Belongs To</b></td>
    <td><b>Date Created</b></td>
    <!--<td><b>Uploaded By</b></td>-->

  </tr>
  <?php $colours = array("#f9f9f9", "#f3f3f3"); $count = 0;?>
  <?php foreach ($allContentImages as $contentImages) : ?>
    <tr bgcolor="<?php echo $colours[$count++ % count($colours)];?>">
      <td><?php echo "<a href='#' class='screenshot' rel='/media/uploads/$contentImages[categoryId]/$contentImages[contentImageName]'>".$contentImages['contentImageName']; ?></td>
      <td><?php echo $contentImages['contentImageType']; ?></td>
      <td><?php if($contentImages['isHeadlineImage'] == 1){ echo "Y";}else{echo "N";} ?></td>
      <td><?php echo $contentImages['contentTitle'] ?></td>
      <td><?php echo date("d-m-Y", $contentImages['contentImageDateUploaded']); ?></td>
      <td align="left"><a class="delete" href="<?php echo base_url();?>dashboard/deleteContentImage/<?php echo $contentImages['contentImageId'];?>"><img src="/media/images/icons/cancel.png" alt="Delete A Category"/></a></td>
    </tr>
  <?php
    if($contentImages['isHeadlineImage'] == '0') {
        echo "<tr bgcolor='red'>";
        echo "<td><p>You need to assign a headline image</p></td>";
        echo "</tr>";

  ?>
  <?php endforeach; ?>
</table>

Мне нужно проверить для каждого фрагмента контента с тем же заголовком, что и заголовок изображения, и если нет, то вывести эхоновая строка красного цвета ... но я получаю новую строку каждый раз, когда появляется изображение, которое не является заголовком.Может кто-нибудь мне помочь?Я не против использования JavaScript, если это помогает соответствовать значениям ТД?Но, очевидно, моя попытка не верна.

Ответы [ 2 ]

1 голос
/ 02 февраля 2010

Похоже, что то, что вы хотите сделать, нужно предварительно рассчитать, поскольку цикл foreach не может знать о будущем контенте.

Может быть, что-то вроде этого до вашего foreach заявления:

$contentHasHeadlineImage = array();
foreach ($allContentImages as $contentImages) {
  if ( $contentImages['isHeadlineImage'] == 1)
    $contentHasHeadlineImage[ $contentImages['contentTitle'] ] = true;
}

И тогда вы можете использовать

if (array_key_exists($contentImages['contentTitle'], $contentHasHeadlineImage)) {
  // Has headline image... 
}

чтобы проверить, есть ли заголовок для определенного заголовка.

0 голосов
/ 02 февраля 2010

Попробуйте мой код ниже:

<table cellspacing="0" cellpadding="3">
  <tr>
    <td><b>Content Image Title</b></td>
    <td><b>Content Image Type</b></td>
    <td><b>Headline Image</b></td>
    <td><b>Content Image Belongs To</b></td>
    <td><b>Date Created</b></td>
    <td>Action</td>
  </tr>
  <?php
  $colours = array("#f9f9f9", "#f3f3f3");
  $num_colours = count($colours);
  $i = 0;
  ?>
  <?php foreach ($allContentImages as $row) : ?>
    <tr bgcolor="<?php echo $colours[($i++) % $num_colours]; ?>">
      <td><a href="#" class="screenshot"
             rel="/media/uploads/<?php echo $row['categoryId']; ?>/<?php echo $row['contentImageName']; ?>">
        <?php echo $row['contentImageName']; ?>
      </a></td>
      <td><?php echo $row['contentImageType']; ?></td>
      <td><?php echo $row['isHeadlineImage'] == 1 ? "Y" : "N"; ?></td>
      <td><?php echo $row['contentTitle']; ?></td>
      <td><?php echo date("d-m-Y", $row['contentImageDateUploaded']); ?></td>
      <td align="left"><a class="delete"
                          href="<?php echo base_url(); ?>dashboard/deleteContentImage/<?php echo $row['contentImageId'];?>">
        <img src="/media/images/icons/cancel.png" alt="Delete A Category" />
      </a></td>
    </tr>
    <?php if ( $row['isHeadlineImage'] == 0 ): ?>
      <tr bgcolor="red">
        <td colspan="6"><p>You need to assign a headline image</p></td>
      </tr>
    <?php endif; ?>
  <?php endforeach; ?>
</table>

При уборке вашего кода я обнаружил незамеченное a href в первом столбце. Для специальной дополнительной строки я добавляю colspan. Я предполагаю, что $row['isHeadlineImage'] имеет значение только 1 или 0 (целое или логическое).

Я также узнал, что вы обращаетесь к ключу массива без использования кавычек. Это может стать потенциальной ошибкой в ​​будущем.

Пишите код с аккуратным отступом и непротиворечивость при использовании block или повторении php-переменной поможет вам быстро найти ошибку. Кроме того, проверьте результаты в браузере, используя Firebug в Firefox или Web Inspector в Safari и Google Chrome, чтобы убедиться, что структура страницы соответствует вашим требованиям, все теги сбалансированы и закрыты в нужном месте.

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