2010-02-02 3 views
0

Je cette boucle en PHP qui fait écho à un tableau des résultats,Vérification de la valeur de toutes une valeur de boucles

<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> 

Je dois vérifier pour chaque morceau contenu avec le même titre qu'il ya l'image globale, et si ce n'est pas le cas, faites une nouvelle ligne rouge ... mais tout ce que je reçois est une nouvelle ligne chaque fois qu'il y a une image qui n'est pas une image de titre. Quelqu'un peut-il m'aider? Cela ne me dérange pas d'utiliser javascript si cela aide à faire correspondre les valeurs du td? Mais évidemment, ma tentative n'est pas correcte.

+0

Pourquoi êtes-vous tellement à l'aise dans le code PHP? Il serait nettement plus lisible si vous incluez simplement les petits bits de HTML dans votre chaîne PHP, ou précalculez les valeurs plutôt que de faire les calculs en ligne. –

+0

Ou, de mon point de vue, inversez les chaînes ' bobince

Répondre

1

Il semble que ce que vous voulez faire doit être précalculé, car la boucle foreach ne peut pas connaître le contenu futur.

Peut-être quelque chose comme ça avant votre déclaration foreach:

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

Et vous pouvez alors utiliser

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

à vérifier si un titre a un titre.

0

Essayez mon code ci-dessous:

<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> 

Alors que le nettoyage de votre code, j'ai trouvé une a href non fermée dans la première colonne. Pour la rangée supplémentaire spéciale, j'ajoute colspan. Je suppose que $row['isHeadlineImage'] ont une valeur seulement 1 ou 0 (entier ou booléen).

J'ai également découvert que vous accédez à la clé de tableau sans utiliser de citation. Cela peut devenir un bug potentiel dans le futur. Ecrivez le code dans une indentation ordonnée et cohérente lorsque vous utilisez un bloc ou en écho à la variable php vous aidera à trouver rapidement le bogue. En outre, inspecter le résultat dans le navigateur en utilisant Firebug dans Firefox ou Web Inspector dans Safari et Google Chrome pour voir si la structure de la page est comme vous voulez avoir, tout le tag est équilibré et fermé au bon endroit.

Questions connexes