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テーブルで使用される列(それ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

OK、私は眠いときにコーディングしようとすべきではないことを知っています...これは私の愚かさの純粋です。

これは元のコードです:

$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 に答える