2012-10-07 35 views
0

我一直在试图为此自定义一部分PHP脚本。如果输入值是数字/数字,则显示图像,如果输入值不是数字,则显示文本,如果输入值为0,则不显示任何内容

我希望它显示图像,如果输入值在数字(1,3,20,99或等)。否则,如果输入值是文本(lorem,randomtext等),我希望它显示文本。如果值为0,我希望它不显示任何内容。

但是我一直在弄错。无论输入值是什么,它总是显示文本。

这里是PHP代码:

if ($topic['topic_icon']  = $topic['icon_id'] ) { 
       if (is_numeric($topic['icon_id'])) { 
       "<img src='".$ibforums->vars['img_url']."/icon{$topic['icon_id']}.gif' alt='{$topic['icon_id']}' />"; 
       } else { 
       "<span class='text-icon {$topic['icon_id']}'>{$topic['icon_id']}</span>"; 
       } 
      } else { 
      ""; 
      } 

这里是用户可以输入值(它与单选按钮,将<form />标签不包括在内,因为它是大块的一部分HTML的一部分的代码):

<input type="radio" class="radiobutton" name="iconid" value="15" />&nbsp;&nbsp;<img src="{$ibforums->vars['img_url']}/icon15.gif" align='middle' alt='' /> 
<input type="radio" class="radiobutton" name="iconid" value="16" />&nbsp;&nbsp;<img src="{$ibforums->vars['img_url']}/icon16.gif" align='middle' alt='' /> 
<input type="radio" class="radiobutton" name="iconid" value="17" />&nbsp;&nbsp;<img src="{$ibforums->vars['img_url']}/icon17.gif" align='middle' alt='' /><br /> 
<input type="radio" class="radiobutton" name="iconid" value="SPRING" />&nbsp;&nbsp;<span class='text-icon SPRING'>SPRING</span> 
<input type="radio" class="radiobutton" name="iconid" value="SUMMER" />&nbsp;&nbsp;<span class='text-icon SUMMER'>SUMMER</span> 
<input type="radio" class="radiobutton" name="iconid" value="AUTUMN" />&nbsp;&nbsp;<span class='text-icon AUTUMN'>AUTUMN</span> 
<input type="radio" class="radiobutton" name="iconid" value="WINTER" />&nbsp;&nbsp;<span class='text-icon WINTER'>WINTER</span><br /> 
<input type="radio" class="radiobutton" name="iconid" value="0" checked="checked" />&nbsp;&nbsp;[ Use None ] 

在MySQL表(它是icon_id)所用的柱设定为varchar(64)

我的长标题道歉......

回答

0

好吧,我知道我不应该在我困倦时尝试编码......这纯粹是我的愚蠢。

这是原来的代码:

$topic['topic_icon']  = $topic['icon_id'] 
          ? "<img src='".$ibforums->vars['img_url']."/icon{$topic['icon_id']}.gif' alt='{$topic['icon_id']}' />&nbsp;&nbsp;" 
          : ""; 

我应该先已取消快捷键吧。没有三元运算符快捷方式,它应该已经被写成这样:

if ($topic['icon_id']) { 
       $topic['topic_icon'] = "<img src='".$ibforums->vars['img_url']."/icon{$topic['icon_id']}.gif' alt='{$topic['icon_id']}' />&nbsp;&nbsp;"; 
     } else { 
       $topic['topic_icon'] = ""; 
     } 

,然后实现我需要什么,它只是需要一点额外的IF

if ($topic['icon_id']) { 
      if (is_numeric($topic['icon_id'])) { 
       $topic['topic_icon'] = "<img src='".$ibforums->vars['img_url']."/icon{$topic['icon_id']}.gif' alt='{$topic['icon_id']}' />&nbsp;&nbsp;"; 
      } else { 
       $topic['topic_icon'] = "<span class='text-icon {$topic['icon_id']}'>{$topic['icon_id']}</span>"; 
      } 
     } else { 
       $topic['topic_icon'] = ""; 
     } 

当当,奇迹般有效。不知道如果这是最好的做法(我觉得它可以做得更好)。但它仍然有效。

谢谢@jtheman的回答,告诉我我做错了什么,尤其是感谢@JohnT(https://stackoverflow.com/a/1080257)让我意识到我做错了什么。

1

您最初的IF条件包含=,这不是一个比较操作,但应==

if ($topic['topic_icon'] == $topic['icon_id'] ) { 

然后,你似乎缺少echo命令:

if (is_numeric($topic['icon_id'])) { 
      echo "<img src='".$ibforums->vars['img_url']."/icon{$topic['icon_id']}.gif' alt='{$topic['icon_id']}' />"; 
      } else { 
      echo "<span class='text-icon {$topic['icon_id']}'>{$topic['icon_id']}</span>"; 
      } 
} else { 
     echo ""; 
     } 

您没有指定如何设置$ topic数组的内容。可能的错字是单选按钮名称iconid但是$topic['icon_id'](带_)

+0

似乎没有任何区别,即使使用'echo'命令,它仍然显示为文本。并且用==而不是'='使它不显示任何内容.. – deathlock

+0

那么你不能仅仅使用=反正。使IF条件失败!那么你的$ topic数组中有什么? – jtheman

+0

我不确定...我只修改一个PHP脚本,而函数内的其他内容似乎只使用'='。这里是函数:http://pastebin.com/fYk35FEJ我包括我想修改的原始代码。它正在处理原始内容(但它只能显示图像),但它不适用于我的修改。 – deathlock

相关问题