CGI-BBS > データベース > 簡易データベース > 簡易データベースでリンク処理


カレッヂ
カレッヂ


質問者 M.Y.  投稿日 2/1(木) 04:31:51
簡易データベースで、$URL に記入のあるときだけ、$HANDLE にリンクをつけたいのですが、
下記のように入れると、$URL に記入のないものまですべてリンクがついてしまいます。

if ($URL ne '') { $HANDLE = "<a href=\"$URL\" target=\"_back\">$HANDLE</a>"; }



↓こんな感じで・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

print "<CENTER><table width=100% align=center border=2 cellpadding=1 cellspacing=1><tr bgcolor=#330066>\n";

print "<th>店名</th>\n";
print "<th>お問合せ先</th>\n";
print "<th>所在地</th>\n";
print "</tr>\n";

foreach $data (@NEW) {
($d,$HANDLE,$TEL,$PREF,$URL) = split(/\,/,$data);

if ($URL ne '') { $HANDLE = "<a href=\"$URL\" target=\"_back\">$HANDLE</a>"; }

print "<tr>\n";
print "<td>$HANDLE</td>\n";
print "<td>$TEL</td>\n";
print "<td>$PREF</td>\n";
print "</tr>\n";
        }

print "</table></CENTER><p>\n";

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

どこが間違っているのか、さっぱりわかりません・・・。
ご存知の方、教えてください。m(_ _)m
回答者 しあわせのツボ  [削除]  投稿日 2/1(木) 11:25:49
1.
if ($URL ne "") と、シングルクォートでなくダブルクォートにするだけで変わることがあります。

2. (たぶんこちらです)
ファイルから1行を読み込んだ場合、末尾に\nがついていますので、取り除いてやって下さい。
質問者 M.Y.  [削除]  投稿日 2/3(土) 13:35:08
ありがとうございます。
取り除ける \n を全部取ってみても表示は同じでした。
(どの \n かわからなかったので・・・^^;)

↓に変えると、$URLに記入のあるものだけが、表示リンクされるので、今はこれでしのいでます。
if ($URL ne '') { $URL = "<a href=\"$URL\" target=\"_back\">$URL</a>"; }



回答者 しあわせのツボ  [削除]  投稿日 2/3(土) 16:48:06
そうじゃないです。ソース上に見えている\nを外しても意味がありません。
($d,$HANDLE,$TEL,$PREF,$URL) = split(/\,/,$data);
の時点で、$dataの末尾に\nがあり、それがそのまま$URLに入る、ということです。
chomp $URL;
として、$URLに入っている\nを取り除いて下さい。
質問者 M.Y.  [削除]  投稿日 2/3(土) 18:47:02
うまくいきました!
いろいろ親切に教えていただいて、本当にとても助かりました。
ありがとうございました!



返信(回答)する


Web裏技