2010-10-25 7 views
0

J'ai un module Joomla qui affiche essentiellement une liste de catégories. À côté du nom de la catégorie, le nombre d'éléments dans cette catégorie particulière est affichée en utilisant la ligne ci-dessousUne simple question PHP

<em>(<?php echo $row->counter ;?>) </em> 

Les articles dans les catégories sont définies soit « ouvert », « proche » ou « gelé » et je suis essayer de faire en sorte qu'il n'affiche que le nombre d'éléments 'ouverts' et n'inclut pas les éléments fermés ou gelés.

<?php 

// no direct access 
defined('_JEXEC') or die('Restricted access'); 

$document =& JFactory::getDocument(); 
$html = '<link href="'.JURI::base(). 'modules/mod_glance_categories/css/style.css" rel="stylesheet" type="text/css" />'; 
$document->addCustomTag($html); 

$n = 0; 
if(count($rows) > 0){ 

?> 
<table width="100%" cellpadding="0" cellspacing="0"> 
<?php 
foreach ($rows as $row) 
{ 
$n++; 
if($n ==1){?> 
<tr> 
<?php 
} 
if($n <= $columns){ 
?> 
<td align="left" valign="top" > 
<?php $link_proj_categ = JRoute::_('index.php?option=com_glance&task=categproj&id='.$row->id);?> 
<a href="<?php echo $link_proj_categ;?>" class="tpf_tcatnode"> 
<strong><?php echo $row->categories; ?></strong> 
<em>(<?php echo $row->counter ;?>) </em> 
</a> 
    </td> 
<?php 
} 
if($n == $columns){?> 
    </tr> 
    <?php 
$n =0; 
    } 
} 
$n++; 
if($n <= $columns){ 
for($x=$n;$x<=$columns;$x++){?> 
    <td>&nbsp;</td> 
<?php 
}?> 
</tr> 
<?php 
} ?> 

    </table> 
    <?php } ?> 
+0

Quel est le statut, une chaîne ? Qu'est-ce que '$ n'? –

+0

if (count ($ rows)> 0) && ($ row-> status)> open) { -peut-être if (count ($ rows)> 0) && ($ row-> status)> $ open) { – lock

+0

Je suis d'accord avec la serrure. À moins que open soit une constante, il faut un "$". Certains paramètres supposent que cela est supposé être "ouvert", mais> n'est pas bon pour la comparaison de chaînes. – cwallenpoole

Répondre

0

Si vous voulez "si l'état est ouvert", votre instruction if devrait ressembler à:

if(count($rows) > 0 && ($row->status) == "open"){ 
     // Do something 
} 

Cependant, dans votre code, il est n $, ce qui est utilisé. $ rows et $ row n'ont pas été initialisés. $ rows et $ row sont des variables différentes (j'espère que vous comprenez cette partie). :)

+0

Vos parenthèses ne sont pas alignées. –

+0

Au moment où je l'ai écrit, la question était erronée. Merci d'avoir attrapé BTW. – tanjir

0

Sans plus de détails, je dirais que votre réponse est l'un des éléments suivants: (Je suppose que les 2 variables dans la condition aurait dû être la même.)

if(count($rows) > 0 && $rows->status) == "open"){ 
if(count($rows) > 0 && $rows[0]->status == "open"){ 
if(count($rows) > 0 && $rows['status'] == "open"){ 
if(count($rows) > 0 && $rows[0]['status'] == "open"){ 
+0

Merci pour la réponse rapide. J'ai essayé tout ce qui précède mais il ne cesse de retourner erreur Parse: erreur de syntaxe, inattendu T_BOOLEAN_AND dans blah/blah/Il me manque évidemment quelque chose? – snails07

+0

Vos parenthèses ne sont pas alignées. –

+0

@ snails07 Mon mauvais .. mis à jour la réponse. – Fosco