• ベストアンサー

検索結果テーブルの背景色を変更したい

質問があります。 以下のようにperlで検索結果を表示させているのですが、<td>の背景色を変えたいのです。 ところがbgcolorタグを挿入するとinternal server error を起こしてしまいます。 以下のようなループのなかにbgcolorタグを挿入するのは無理なのでしょうか? perl初心者なもので単純な質問かもしれませんが教えていただけたらと思います。 よろしくお願いします。 ちなみに結果は正常に表示されます。 for ((my $count)=0; $count<$num_rows;$count++){ my @ar=$sth->fetchrow_array; print "<tr>\n"; print "<td>" . $ar[0] . "</td>\n"; print "<td>" . $ar[1] . "</td>\n"; print "<td>" . $ar[2] . "</td>\n"; print "<td>" . $ar[3] . "</td>\n"; print "<td>" . $ar[4] . "</td>\n"; print "<td>" . $ar[5] . "</td>\n"; print "</tr>\n"; }

  • gahau
  • お礼率15% (12/80)
  • Perl
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

他の方と同じくエスケープミスかも。 print "<td bgcolor="#xxxxxx">" . $ar[0] . "</td>\n"; これはNG 文字列内に「"」を含む場合は\を付けるか print "<td bgcolor=\"#xxxxxx\">" . $ar[0] . "</td>\n"; くくりを変える print qq|<td bgcolor="#xxxxxx">| . $ar[0] . "</td>\n"; http://www.rfs.jp/sitebuilder/perl/02/02.html#%83G%83X%83P%81[%83v%82%BE%82%E7%82%AF%82%C9%82%C8%82%E9%82%CC%82%F0%94%F0%82%AF%82%E9

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

直接の回答とは違いますが 検索結果のテーブルにクラスを付けて CSSで指定するのがいいかも

回答No.2

とくに問題ないみたいですけどねー。 "<td bgcolor=\"#FF0000\">" この手のエラーかな?

  • Sawara13
  • ベストアンサー率27% (16/59)
回答No.1

Internal Errorを起こしたときのソースを載せてください。 # エスケープし忘れとかのケアレスミスかもしれないですよ?

関連するQ&A

  • DB検索の結果について

    PerlでDB検索をし、結果を画面に表示させるというプログラムを作成しているのですが、なぜか検索結果が1件の時は結果の表示がされないという現象が起こっています。複数件の時は、表示されるのですが。 プログラムは下記のようなものです。 ●入力画面から検索する文字列($name)を取得します。 #my $sql = "SELECT AAA FROM PRODUCT WHERE XXX '%$name%'"; my $sth = $dbh->prepare($sql) || die $dbh->errstr; $sth->execute || die $dbh->errstr; ●一致したデータを書き出します。 print "検索製品は、$name<P>"; while(@results = $sth->fetchrow) { @results = $sth->fetchrow; print @results, "\n<P>"; print $count, " 件完了<P>"; $count++; } print "合計 $count 件、見つかりました!"; <一件の結果> 検索製品は、12345で 1 件見つかりました! <複数件の結果> 検索製品は、12345で 12345製品A 件完了 12345製品B 2件完了 12345製品C 3件完了 12345製品D 4 件見つかりました! 上記のような結果です。検索結果1件の時はデータが表示されず、2件以上の時も表示件数、合計件数は合っていますが、$countの動作がおかしいです。("件完了"になってしまう) コードの記述の仕方に問題があるのでしょうか?おわかりの方がいらっしゃいましたら、ご教授頂けると幸いです。宜しくお願い致します。

  • 配列に入った変数を二度使いたい

    perlでDBデータをセレクトし表示させるプログラムで 以下のように一回目のforループでは正常に表示されます。 二度目に表示させようとすると何もデータがなくなっているようです。 print でも、もちろんなにも表示しません。 配列名を変えてもだめでした。とこが原因なのかわかりません。 ステートメントハンドルとかが関係あるのでしょうか? いろいろ調べたのですが、ちょっとわかりませんでした。 申し訳ないのですが、教えてください。 話をまとめるとDBからセレクトした同じ行のデータを2回表示させたいということです。 よろしくお願いします。 my $db = DBI->connect("DBI:Pg:dbname=$UDBNAME",$USERNAME,$USERPASS); my $sth=$db->prepare(" select * from server where no = $no "); $sth->execute; #一回目 for ((my $count)=0; $count<$num_rows;$count++){ my @ar=$sth->fetchrow_array; #二回目 for ((my $count)=0; $count<$num_rows;$count++){ my @ar=$sth->fetchrow_array;

    • ベストアンサー
    • Perl
  • 表の色を交互に変更

    以下の<tr bgcolor=\"#ffffff\">の部分を<tr bgcolor=\"#eeeeee\">と交互に表示させたいのですが、方法がわかりません。よろしくお願いいたします。 open(IN,"$file") || &error("file"); while (<IN>) { ($now,$host) = split(/<>/); print "<tr bgcolor=\"#ffffff\">\n"; print "<td>$now</td>\n"; print "<td>$host</td>\n"; } close(IN);

    • ベストアンサー
    • Perl
  • mysqlへの接続でつまづいてまーす

    Perlのプログラムでログイン画面を作ろうと思っています。 ブラウザのログインフィールドからデータをとり、mysqlに接続してDBを検索し、照合するデータを見つけたら、合致するかどうか判断させて、エラーもしくはHPへ入ってしまえよ!という感じです。 で、似たようなサンプルソースを見つけていじっているのですが、これが出来ないんですよね~。接続だけなら出来るのに・・・ とりあえずこの中にエラーがないか教えてほしいです(>_<) if($i_id eq "" || $i_pw eq ""){ print "ログイン情報を入力してプリーズ(´д`;)ノ"; }else{ $dbh = DBI->connect($dbn,$user,$pw); $dbh->do("SET NAMES sjis"); $rows = $dbh->selectrow_array("SELECT count(*) from list where id = $i_id"); if($rows == 0){ print "該当するデータはないっすね~(゜*゜)"; }else{ $sth = $dbh->prepare("SELECT * FROM list where id = $i_id"); $sth->execute(); print <<"html"; 検索結果一覧<br><br> <table border="1"> <tr bgcolor="#dddddd"> <td>学籍番号</td> <td>パスワード</td> </tr> html while (@row = $sth->fetchrow_array()){ print <<"html"; <tr> <td>$row[0]</td> <td>$row[1]</td> </tr> html } print "</table>\n"; } ※ちなみにこれは一部です・・・

  • 背景色を戻したい

    いつもお世話になっています。 複数行のテーブルを作成して、ラジオボタンで選択行のみ背景色を変更する画面を作っています。 以下がソースです。 <HTML> <BODY bgcolor="#F0E68C">  <TABLE border="1" cellspacing="0">   <TR>    <TD width="5%">     <INPUT type="radio" name="count" onFocus="this.parentNode.parentNode.bgColor='#F4A460';" onBlur="this.parentNode.parentNode.bgColor='';"></TD>    <TD width="10%">1行目左</TD>    <TD width="10%">1行目右</TD>   </TR>   <TR bgcolor="#E9967A">    <TD width="5%">     <INPUT type="radio" name="count" onFocus="this.parentNode.parentNode.bgColor='#F4A460';" onBlur="this.parentNode.parentNode.bgColor='';"></TD>    <TD width="10%">2行目左</TD>    <TD width="10%">2行目右</TD>   </TR>   <TR>    <TD width="5%">     <INPUT type="radio" name="count" onFocus="this.parentNode.parentNode.bgColor='#F4A460';" onBlur="this.parentNode.parentNode.bgColor='';"></TD>    <TD width="10%">3行目左</TD>    <TD width="10%">3行目右</TD>   </TR>  </TABLE> </BODY> </HTML> ラジオボタンの選択が外れた場合、元の行背景色に戻したいのですが(『2行目』)、 <TR>のbgcolor="#E9967A"に戻らず、<BODY>のbgcolor="#F0E68C"になってしまいます。 どうしたら元の行背景色に戻すことができるのでしょうか? それとも他に方法があるのでしょうか? ご存知の方、教えてください・・・。

  • perlでdb(mysql)に接続

    perlでdb(mysql)に接続し、取得したデータを 表示させるというようなことをしたいのですが、うまく いきません。 ファイル名test.cgi mysqlのバージョンは 5.0.45で 記述は以下です。 #!/usr/bin/perl use DBI; my $dbh = DBI->connect("DBI:mysql:database, "userid", "password"); my $sth = $dbh->prepare('SELECT * FROM tablename'); $sth->execute; print "Content-Type: text/plain\n\n"; print "\n"; while(my @row = $sth->fetchrow_array) { print "$row[0]:$row[1]\n"; } $sth->finish(); $dbh->disconnect(); exit; ブラウザで確認すると何も表示されず、ログとして 以下のエラーが確認できます。 DBD::mysql::st execute failed: Table 'database.tablename' doesn't exist at test.cgi line 8. DBD::mysql::st fetchrow_array failed: fetch() without execute() at test.cgi line 11. my $sth = $dbh->prepare('SELECT * FROM tablename'); で指定したテーブルは存在しておりますし、SQL文の記述も 問題ないと思われます。 また、ファイルのパーミッションは705(755でも同様の結果)です。 perl初心者のため、どこが問題なのか検討がつきません。 ご助言いただきたく存じます。 よろしくお願いいたします!

    • ベストアンサー
    • Perl
  • PerlでDBIを使いますが、結果セットをフィールド名でアクセスするには?

    OSはWindowsでAccess2002のデータベースをODBC経由でDBIを用いて、Perlからアクセスします。 以下のように、結果セットをフィールド名でアクセスしたいです。 可能でしょうか? #!/perl/bin/perl #!/usr/bin/perl -w use DBI; # create the DSN connection $dsn = "dbi:odbc:test"; $dbh = DBI->connect($dsn) or die "接続エラー"; $query = "select * from goods;"; # execute the query $sth = $dbh->prepare($query); $sth->execute(); print "no name price\n"; print "--------------------------------------\n"; while(@item = $sth-> fetchrow) { #print "@item[0] @item[1] @item[2]"; #----- 通常はこうだが、 print "$item{'goods_name'} $item{'goods_price'} $item{'auto_no'}"; #----こんな感じで利用したい。 print ("\n"); } # disconnect $sth->finish(); $dbh->disconnect(); exit; __END__

    • ベストアンサー
    • CGI
  • 同じname属性の結果を1行にまとめる方法

    いつもお世話になっている者です。フォームメールCGIで行き詰っております。 push(@DATA_KS,$name); push(@DATA_VS,$value); としてHTML側のname属性を@DATA_KSに、valueの値を@DATA_VSに代入しています。 <table border=0 cellpadding=3 cellspacing=1 bgcolor="#ffffff"> <tr><td bgcolor="#ff8000"><b><font size=+1>項目</font></b></td><td bgcolor="#ff8000"><b><font size=+1>内容</font></b></td></tr> EOF $count = @DATA_KS; foreach (0..$count-1) { print "<input type=hidden name=\"$DATA_KS[($_)]\" value=\"$DATA_VS[($_)]\">\n"; if ($DATA_VS[($_)] eq '') {} else { print "<td bgcolor=\"#009900\">$DATA_KS[($_)]</td>\n"; } if ($DATA_VS[($_)] eq '') {} else { print "<td bgcolor=\"#ffffff\">$DATA_VS[($_)]</td>\n"; } print "</td></tr>\n"; } これで 項目 内容 が1セットで横並びになり項目の数だけ下に続き、値の無い項目は表示されない。というところまでは出来たのですが さらに「name属性が同じ場合はvalueの値をカンマで区切ってヨコに並べる」ということがしたいのですが方法が分かりません。何卒宜しくお願いします。 例:  ○(希望表示方法) 好きな食べ物  りんご,ハチミツ,カレー × 好きな食べ物  りんご 好きな食べ物  ハチミツ 好きな食べ物  カレー

    • ベストアンサー
    • CGI
  • スクロール式テーブル内での改行を反映させる方法

    アメブロのサイドバーでスクロール表示式の<table>タグを使いたいのですが、本文内が改行できず困っています。 アメブロの「フリースペース」「フリープラグイン」のどちらで試しても改行が反映されません。 スクロール素材は以下のソースのものです。 <!--★始まり--> <table cellpadding="7" cellspacing="2" bgcolor="#225599" width="320" style="font-size:13px;"> <tr><th bgcolor="#bbbbbb"> タイトル </th></tr> <tr><td bgcolor="#ffffff"> <textarea rows="6" style="width:100%;border-style:none;scrollbar-base-color:#88f6c6;"> 本文 本文 本文 本文 </textarea> </td> </tr> <tr><td bgcolor="#bbbbbb" height="16"></td></tr> </td> </tr> </table> <!--終わり★--> 「フリースペース」の方で上記タグを入れると、 プレビュー欄に自動で<br />タグが挿入され その状態で本文が表示されてしまいます。 「フリープラグイン」の方では 文字と文字の間で改行ができるものの なんの文字もない部分で「行間を1行あける」という事ができません。 フリースペースでもプラグインでもどちらを使っても構わないのですが 改行を反映させる方法(タグなどの挿入)があるでしょうか? 上記の<table>タグを使わなくても スクロールができるような素材でしたら構わないのですが。 何かありましたら教えて下さい。

  • 1ページにテーブルを複数設定・一括変更の方法について

    一つのページに複数(十数個)を設置する場合 まとめて設置する方法はあるのでしょうか? また、サイズ等を変更したい場合も 一括して変更する方法はあるのでしょうか? 例えば、以下の物を数十個設置する場合 設置自体は簡単なのですが、変更が・・、 どうにか簡単にできる方法があればご教授下さい。 <center> <table border="0" width="600" cellspacing="1" bgcolor="#0fb1ff" height="200"> <tbody> <tr> <td colspan="2" width="600" bgcolor="#ffffff" height="20" align="center"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="100" align="center"></td> <td width="400" bgcolor="#ffffff" height="100"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="20" align="center"></td> <td width="400" bgcolor="#ffffff" height="20"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="20" align="center"></td> <td width="400" bgcolor="#ffffff" height="20"></td> </tr> <tr> <td width="200" height="20" bgcolor="#ffffff" align="center"></td> <td width="400" height="20" bgcolor="#ffffff"></td> </tr> <tr> <td width="200" bgcolor="#ffffff" height="20" align="center"></td> <td width="400" bgcolor="#ffffff" height="20"></td> </tr> </tbody> </table> </center> 宜しくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう