0

我一直在尝试为此定制一部分 PHP 脚本。

如果输入值是数字(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 {
             "";
             }

这是 HTML 的一部分,用户可以在其中输入值(它带有单选按钮,<form />不包括标签,因为它是大量代码的一部分):

<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 表中使用的列 (it's icon_id) 设置为varchar(64).

我为长标题道歉...

4

2 回答 2

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'](带 _)

于 2012-10-07T19:50:55.900 回答
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)让我意识到我做错了什么。

于 2012-10-07T21:04:30.643 回答