CGI コメント欄の文章を行替えする方法

このQ&Aのポイント
  • 野球スコアボードのCGIで、コメント欄の文章が1列になってしまう問題があります。改行の2行目以降が表示されません。どのようにすれば文章の行替えが可能になるでしょうか?
  • 野球スコアボードのCGIで、コメント欄の文章を行替えする方法を教えてください。
  • CGIのスコアボードで、コメント欄の文章が1列に表示されてしまいます。改行を入れても2行目以降が表示されません。行替えする方法を教えてください。
回答を見る
  • ベストアンサー

CGI コメント欄の文章を行替えしたいのです

お世話になります。 野球スコアボードのCGIなのですが、コメント欄の文章がどうしても1列になってしまい、行替えができません。 文章で<br>を書き加えると、1行分のみしか表示されず、改行の2行目以降が表示されません。   以下の構成でどのようにすれば、文章の行替えが可能になりますか? アドバイスよろしくお願い致します。 <tr><td colspan=\"2\"> <font color=white>スコアボード<center> <table border=\"1\" bgcolor=\"#009933\" cellspacing=0 bordercolor=\"black\"> "; for($i=0;$i<@score;$i++){ print "<tr>"; @team_score=split(/,/,$score[$i]); if($i eq 0){ print "<tr>"; for($s=0;$s<@team_score;$s++){ if($s eq 0){ print "<td width=80> <font color=\"white\"> <center><i>チーム名 </td>"; }else{ print "<td width=\"20\"> <font color=\"white\"> <center><i>$s </td>"; } } print "<td width=40><font color=\"white\"><center><i>合計</td>"; print "</tr><tr>"; } $point=0; for($j=0;$j<@team_score;$j++){ print "<td><font color=\"white\">"; print"<center>"; if($team eq $team_score[$j]){ print "<b>" } print"$team_score[$j]</td>"; if($j eq 0){ }else{ $point=$point+$team_score[$j]; } } if($cnt[$i-1] eq $j || $i eq 0){ print "<td><font color=\"white\"><center>$point</td>"; }else{ print "<td> <font color=\"white\"><center>× </td> <td> <font color=\"white\"><center>$point </td>"; } print "</tr>"; $cnt[$i]=$j; } print "</table><p></td></tr>"; print "<tr><td bgcolor=\"#778899\" height=100> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> $cmt[$p] </td></tr>"; print "</table>"; print "<p><hr width=500><p>"; } } print " </body></html>"; exit;

  • CGI
  • 回答数6
  • ありがとう数6

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.6

核心となる部分は見当たりませんが、内部では$cmtという変数に代入されて処理しているのがわかりました。 「score_chk.cgi」側には 改行があった場合は「<br>」タグに変換しているコードが入っているのでフォーム側からわざわざタグを記述する必要はないと思います。 「$cmt =~ s/\n/<br>/g;」の部分 できれば「$cmt =~ s/\r\n|\r|\n/<br>/g;」と記述したほうがいいです。 ただし文字コードがShift-JISをベースに書かれているので正規表現の記述が正確に作動するかどうかは気になるところです(まあ半角文字だけなので大丈夫とは思います)。 「score_cmp.cgi」側は 文字「35124」を「>」に変換するコードが入っています。 「$cmt =~ s/35124/>/g;」 もしかしたらその「次の行」に以下の一行 「$cmt =~ s/br683/br>/g;」 もしくは 「$cmt =~ s/683/>/g;」 と記述することで新規の入力データからはちゃんと動作するかもしれません(過去のものは683となったままデータ内に残っているので表示時に変換するか更新時のコードに追記して変更する、はたまたデータが入ってるディレクトリでcmt.txtをテキストエディタで「683」を「>」に置換して保存する)。 エラーメッセージなんかがけっこう適当に書かれているので身内の手作り感満載ですが上記変換コードもその類のミスかもしれません。 コメントは「cmt.txt」に記述されています。 お試しください。

yoshiritomo
質問者

お礼

再度のご回答ありがとうございます。 早速、書き込み追加しましたところ、正常に行替えができました!!! とてもうれしいです!!! フリーCGIをいただいたものの正常に動作せず、すっと悩んでいました。 6回も回答いただき、ほんとにありがとうございます! お金に換えられないありがたみを感じております。 ralf124c様には感謝感謝です! ファン登録させていただきます! 人間的にもすばらしい方です!

その他の回答 (5)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.5

こちらこそたびたびで申し訳ありません。 示していただいたところには無さそうです。 ほとんどが表示のためのデータばかりで処理そのものはほとんどありません。 ただ、フォームから受信したデータはdataという連想配列から参照するようになっているのがわかりましたので $data{'cmt'} で探してみてはどうでしょうか。 これはコメントデータを格納している変数です。

yoshiritomo
質問者

お礼

お時間下さりありがとうございます。 $data{'cmt'} で検索して表示されました箇所が以下の2つです。 (補足入力に2あり) この部分で改行エラーとなる間違いはありますでしょうか。 (1) ● score_chk.cgi print"Content-type: text/html;charset=Shift_JIS\n\n"; #//準備 *data = GetPara(); $pass = $data{'login'}; $inp_pass = $data{'login2'}; $year = $data{'year'}; $month = $data{'month'}; $day = $data{'day'}; $stadm = $data{'stadm'}; $f_team = $data{'f_team'}; $b_team = $data{'b_team'}; for($i=1;$i<10;$i++){ $pre_f_point="f_point_$i"; $f_point[$i]=$data{"$pre_f_point"}; } for($i=1;$i<10;$i++){ $pre_b_point="b_point_$i"; $b_point[$i]=$data{"$pre_b_point"}; } $cmt = $data{'cmt'}; $flag=0; $message=null; #パスワード設定 require("./pass/pass"); $team=$my_team; $pass=$conf_pass; if($pass eq $inp_pass){ $flag=1; } if($flag eq 0){ $message="IDまたはPASSWORDが違います。\n"; } if($f_team eq $team && $b_team eq $team){ $message="チーム名が同一です。"; } if($stadm eq null || $stadm eq ""){ $stadm="未記入"; } if($cmt eq null || $cmt eq ""){ $cmt="未記入"; } #点数チェック for($i=1;$i<10;$i++){ if($f_point[$i] eq null || $f_point[$i] eq ""){ for($j=$i;$j<10;$j++){ $f_point[$j]=""; } last; } if($f_point[$i] =~ /\D/i){ $message="点数を半角数字で入力してください。\n"; last; } $front=$i; } for($i=1;$i<10;$i++){ if($b_point[$i] eq null || $b_point[$i] eq ""){ for($j=$i;$j<10;$j++){ $b_point[$j]=""; } last; } if($b_point[$i] =~ /\D/i){ $message="点数を半角数字で入力してください。\n"; last; } $back=$i; } if($front < $back || $front > $back+1 || $f_point[1] eq "" || $b_point[1] eq ""){ if($message eq null){ $message="点数を正しく入力してください。\n"; } } $cmt =~ s/\n/<br>/g; #エラー画面表示 if($message eq null){} else{ print"<html>\n<head>\n"; print"<head>\n<title>新規登録(エラー)</title>\n</head>\n"; print"<body>\n"; print"<center><font size=\"5\" color=\"red\">\n"; print"エラーが発生しました\n"; print"</font>\n"; print"<p><hr><p>\n"; print"<table>\n"; print"<tr><td>$message</td></tr>\n"; print"</table>\n"; print"<p><hr><p>\n"; print "<FORM>\n"; print "<INPUT TYPE=\"BUTTON\" VALUE=\"前画面へ戻る\" ONCLICK=\"history.back()\">"; print "</FORM>\n"; print"</body></html>"; exit; } #スケルトン表示 print "<html>\n"; print "<head>\n"; print "<title>スコア登録確認</title>\n"; print "</head>\n"; print "<body>\n"; print "<center><h1>スコア登録確認</h1></center>\n"; print "<p><hr><p>\n"; print "<center><table><tr><td>スコアを確認してください。<br> 自分のチームを登録しない場合、勝敗はカウントしません。<p>\n"; print "</td></tr></table>\n"; print "<table width=\"500\" border=\"0\">\n"; print" <form action=\"./score_cmp.cgi\" method=\"post\"> <tr> <td bgcolor=\"#778899\" width=150> <font color=white>試合日 </td> <td bgcolor=\"#f8f8ff\" width=350>"; print" $year "; print" 年"; print" $month "; print" 月 "; print" $day "; print" 日 </td> </tr> <tr> <td bgcolor=\"#778899\"><font color=white>試合日試合場所</td> <td bgcolor=\"#f8f8ff\"> $stadm </td> </tr> <tr> <td colspan=\"2\"><font color=white>スコアボード<center> <table border=\"1\" bgcolor=\"#009933\" cellspacing=0 bordercolor=\"black\"> <tr><td><center><font color=white>チーム名</td> "; for($i=1;$i<10;$i++){ print" <td><center><font color=white>$i</td> "; } print "<td><center><font color=white>合計</td></tr>"; exit; #//=================== #// パラメタ取得 #//=================== sub GetPara { my($encoding) = @_; my($method) = $ENV{'REQUEST_METHOD'}; local($query, @in, $key, $val); #// 日本語コード変換 jcode.pl 読み込み require 'jcode.pl' if $encoding; #// パラメタ取得 if ($method eq 'GET') { $query = $ENV{'QUERY_STRING'}; } elsif ($method eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } local(@query) = split(/&/, $query); foreach (@query) { tr/+/ /; ($key, $val) = split(/=/); $key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge; $val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge; $val =~ s/\r\n/\n/g; jcode'convert(*key, $encoding) if ($encoding); jcode'convert(*val, $encoding) if ($encoding); $in{$key} = $val; } #// 戻り値セット

yoshiritomo
質問者

補足

(2) ●score_cmp.cgi print"Content-type: text/html;charset=Shift_JIS\n\n"; #//準備 *data = GetPara(); $pass = $data{'login'}; $inp_pass = $data{'login2'}; $year = $data{'year'}; $month = $data{'month'}; $day = $data{'day'}; $stadm = $data{'stadm'}; $result = $data{'result'}; $f_team = $data{'f_team'}; $b_team = $data{'b_team'}; $f_all_point = $data{'f_all_point'}; $b_all_point = $data{'b_all_point'}; for($i=1;$i<10;$i++){ $pre_f_point="f_point_$i"; $f_point[$i]=$data{"$pre_f_point"}; } for($i=1;$i<10;$i++){ $pre_b_point="b_point_$i"; $b_point[$i]=$data{"$pre_b_point"}; } $cmt = $data{'cmt'}; $flag=0; $message=null; #パスワード設定 require("./pass/pass"); $team=$my_team; $pass=$conf_pass; $cmt =~ s/35124/>/g; $cmt =~ s/\"/\s/g; if($pass eq $inp_pass){ $flag=1; } if($flag eq 0){ $message="IDまたはPASSWORDが違います。\n"; } if($f_team eq $team && $b_team eq $team){ $message="チーム名が同一です。"; } if($stadm eq null || $stadm eq ""){ $stadm="未記入"; } if($cmt eq null || $cmt eq ""){ $cmt="未記入"; } #点数チェック for($i=1;$i<10;$i++){ if($f_point[$i] eq null || $f_point[$i] eq ""){ for($j=$i;$j<10;$j++){ $f_point[$j]=""; } last; } if($f_point[$i] =~ /\D/i){ $message="点数を半角数字で入力してください。\n"; last; } $front=$i; } for($i=1;$i<10;$i++){ if($b_point[$i] eq null || $b_point[$i] eq ""){ for($j=$i;$j<10;$j++){ $b_point[$j]=""; } last; } if($b_point[$i] =~ /\D/i){ $message="点数を半角数字で入力してください。\n"; last; } $back=$i; } if($front < $back || $front > $back+1 || $f_point[1] eq "" || $b_point[1] eq ""){ if($message eq null){ $message="点数を正しく入力してください。\n"; } } $month =sprintf("%02d",$month); $day =sprintf("%02d",$day); $tmp="$year$month$day"; $dir = "./score/$tmp"; #ディレクトリ内にあるファイルを全部取得 #ディレクトリを開く opendir(New , "./score"); #Newディレクトリ内のファイル表示 @files = readdir(New); #ディレクトリClose closedir(New); for($i=0;$i<@files;$i++){ if($tmp eq $files[$i]){ $dir_flg=1; $message="その日付はすでに登録されています。"; } } #エラー画面表示 if($message eq null){} else{ print"<html>\n<head>\n"; print"<head>\n<title>新規登録(エラー)</title>\n</head>\n"; print"<body>\n"; print"<center><font size=\"5\" color=\"red\">\n"; print"エラーが発生しました\n"; print"</font>\n"; print"<p><hr><p>\n"; print"<table>\n"; print"<tr><td>$message</td></tr>\n"; print"</table>\n"; print"<p><hr><p>\n"; print "<FORM>\n"; print "<INPUT TYPE=\"BUTTON\" VALUE=\"前画面へ戻る\" ONCLICK=\"history.back()\">"; print "</FORM>\n"; print"</body></html>"; exit; } #フォルダ作成 if($dir_flg eq 1){ }else{ #ディレクトリの作成 if(!-d $dir){ mkdir($dir,0755) || die "$idディレクトリを作成できません。:$!\n"; }else{ print"ディレクトリが作成できません。\n"; exit; } } #スコアファイル作成 $score_file="./$dir/score.csv"; open(File_Score,">$score_file") || "$file_bat.csvをOpenできません。\n"; print File_Score "$f_team"; for($i=1;$i<10;$i++){ print File_Score ",$f_point[$i]"; } print File_Score "\n"; print File_Score "$b_team"; for($i=1;$i<10;$i++){ print File_Score ",$b_point[$i]"; } print File_Score "\n"; close (File_Score); #勝敗テキスト作成 $score_file="./$dir/result.txt"; open(File_Score,">$score_file") || "result.csvをOpenできません。\n"; print File_Score "$result"; close (File_Score); #コメントファイル作成 $score_file="./$dir/cmt.txt"; open(File_Score,">$score_file") || "cmt.csvをOpenできません。\n"; print File_Score "$cmt"; close (File_Score); #試合場所ファイル作成 $score_file="./$dir/stadm.txt"; open(File_Score,">$score_file") || "cmt.csvをOpenできません。\n"; print File_Score "$stadm"; close (File_Score); #スケルトン表示 print "<html>\n"; print "<head>\n"; print "<title>スコア登録完了</title>\n"; print "</head>\n"; print "<body>\n"; print "<center><h1>スコア登録完了</h1></center>\n"; print "<p><hr><p>\n"; print "<center><table><tr><td>スコアを登録しました。</td></tr></table>";

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.4

こちらは確認表示用 -------------------------------------------------------------------- <td bgcolor="#f8f8ff"> 投手<br>捕手<br>本塁打<p> </td> -------------------------------------------------------------------- こちらは送信用 -------------------------------------------------------------------- <input type="hidden" name="cmt" value="投手<br683捕手<br683本塁打"> -------------------------------------------------------------------- ですので確認画面時にはすでに化けて(変換されて)おりますので最初のCGI、要するに入力時のHTMLソースから<form>タグを見て呼び出してるCGIをチェックするのが順当かと思います。 ">"が"683"にしている理由は推測するよりも内部のコードを見たほうが早いと思います。 隠しフォームを生成しているパートがCGI内部にあるはずなのでhiddenとかで探すと見つけやすいかも でもこれって意図的に変換してるはずなので、普通に改行を入れるだけで<br>に変換してくれるってことはないですか?

yoshiritomo
質問者

お礼

何度も申し訳ありません。 入力時のHTMLソースから<form>タグを見て呼び出してるCGIを補足に載せました。 一見、コメント欄あたりを凝視してもどこがエラー箇所なのかわかりませんでした。 あと、コメント欄には文字を入れ普通に行がえをしているだけですので<br>に変換してくれているようです。 念のため、入力ページのソースは以下のとおりです。 <font color=white>コメント </td> <td bgcolor="#f8f8ff"> <TEXTAREA NAME="cmt" COLS=40 ROWS=6></TEXTAREA><p> </td></tr> <tr><td colspan=2><center> <input type="hidden" name="login" value="0123"> <input type="hidden" name="login2" value="0123"> <input type="submit" value="登録"> <input type="reset" value="取消"> </td> </tr> </form> </table> <p><hr><p> <form action="./point_main.cgi" method="post"> <input type="hidden" name="login" value="0123"> <input type="hidden" name="login2" value="0123"> <input type="submit" value="メインへ戻る"></form> </body></html> ほんとに何度も申し訳ございません。

yoshiritomo
質問者

補足

入力時のH#!/usr/local/bin/perl print"Content-type: text/html;charset=Shift_JIS\n\n"; #//準備 *data = GetPara(); $pass = $data{'login'}; $inp_pass = $data{'login2'}; $flag=0; $message=null; #パスワード設定 require("./pass/pass"); $pass=$conf_pass; if($pass eq $inp_pass){ $flag=1; } if($flag eq 0){ $message="IDまたはPASSWORDが違います。\n"; } #エラー画面表示 if($message eq null){} else{ print"<html>\n<head>\n"; print"<head>\n<title>新規登録(エラー)</title>\n</head>\n"; print"<body>\n"; print"<center><font size=\"5\" color=\"red\">\n"; print"エラーが発生しました\n"; print"</font>\n"; print"<p><hr><p>\n"; print"<table>\n"; print"<tr><td>$message</td></tr>\n"; print"</table>\n"; print"<p><hr><p>\n"; print "<FORM>\n"; print "<INPUT TYPE=\"BUTTON\" VALUE=\"前画面へ戻る\" ONCLICK=\"history.back()\">"; print "</FORM>\n"; print"</body></html>"; exit; } #//時間取得処理 ($sec,$min,$hour,$mday,$mon,$myear,$wday,$yday,$ttt)=localtime(); $myear=1900+$myear; $mon=$mon+1; #スケルトン表示 print "<html>\n"; print "<head>\n"; print "<title>スコア登録</title>\n"; print "</head>\n"; print "<body>\n"; print "<center><h1>スコア登録</h1></center>\n"; print "<p><hr><p>\n"; print "<center><table><tr><td>スコアを登録してください。<br><p>\n"; print "</td></tr></table>\n"; print "<table width=\"500\" border=\"0\">\n"; print" <form action=\"./score_chk.cgi\" method=\"post\"> <tr> <td bgcolor=\"#778899\" width=150> <font color=white>試合日 </td> <td bgcolor=\"#f8f8ff\" width=350> <SELECT NAME=\"year\">"; for($i=2000;$i<2100;$i++){ if($myear eq $i){ print" <OPTION VALUE=\"$i\" selected>$i "; }else{ print" <OPTION VALUE=\"$i\">$i "; } } print" </SELECT>年 <SELECT NAME=\"month\">"; for($i=1;$i<13;$i++){ if($mon eq $i){ print" <OPTION VALUE=\"$i\" selected>$i "; }else{ print" <OPTION VALUE=\"$i\">$i "; } } print" </SELECT>月 <SELECT NAME=\"day\">"; for($i=1;$i<32;$i++){ if($mday eq $i){ print" <OPTION VALUE=\"$i\" selected>$i "; }else{ print" <OPTION VALUE=\"$i\">$i "; } } print" </SELECT>日 </td> </tr> <tr> <td bgcolor=\"#778899\"><font color=white>試合日試合場所</td> <td bgcolor=\"#f8f8ff\"> <input type=\"text\" name=\"stadm\" maxlength=\"40\" size=\"40\"> </td> </tr> <tr> <td colspan=\"2\"><font color=white>スコアボード<center> <table border=\"1\" bgcolor=\"#009933\" cellspacing=0 bordercolor=\"black\"> <tr><td><center>チーム名</td> "; for($i=1;$i<10;$i++){ print" <td><center>$i</td> "; } print"<tr> <td> <center><input type=\"text\" name=\"f_team\" size=10 maxlength=16> </td> "; for($i=1;$i<10;$i++){ $f_point="f_point_$i"; print"<td> <center><input type=\"text\" name=\"$f_point\" size=2 maxlength=2> </td>"; } print "</tr>"; print"<tr> <td> <center><input type=\"text\" name=\"b_team\" size=10 maxlength=16> </td> "; for($i=1;$i<10;$i++){ $b_point="b_point_$i"; print"<td> <center><input type=\"text\" name=\"$b_point\" size=2 maxlength=2> </td>"; } print "</tr></table><p></td></tr>"; print "<tr><td bgcolor=\"#778899\" height=100> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> <TEXTAREA NAME=\"cmt\" COLS=40 ROWS=6></TEXTAREA><p> </td></tr>"; print" <tr><td colspan=2><center> <input type=\"hidden\" name=\"login\" value=\"$pass\"> <input type=\"hidden\" name=\"login2\" value=\"$inp_pass\"> <input type=\"submit\" value=\"登録\"> <input type=\"reset\" value=\"取消\"> </td> </tr> </form> "; print "</table>\n"; print "<p><hr><p> <form action=\"./point_main.cgi\" method=\"post\"> <input type=\"hidden\" name=\"login\" value=\"$pass\"> <input type=\"hidden\" name=\"login2\" value=\"$inp_pass\"> <input type=\"submit\" value=\"メインへ戻る\"></form>\n"; print "</body>"; print "</html>"; exit; #//===================================================================== #// パラメタ取得 #//================ sub GetPara { my($encoding) = @_;

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.3

大変申し訳ありませんが、示していただいたところは的を得ていません。 どこを見なければいけないのか、現時点で分かっているポイントは 1.確認時は一見正常(一見という理由は、'>'は確実に半角でしょうか?とりあえず半角であることを前提とします) 2.登録後は文字化け('>'->'683') このことから、 「登録時に文字が変換されている」 「表示時に文字が変換されている」 の2通りの問題が生じていることがわかりますので、問題点は表示ではなくプログラム側(文字変換される)にあるということになります。 この状態から問題点を探るには、 ◎登録されたデータは記録ファイルまたはデータベース上でどのように記録されているのか   記録されているデータが化けていれば「登録側」   化けていなければ「表示側」   に問題があるのがわかります。   コメントやスコアなど記録されているのは外部ファイルかデータベース上だと思います(システムの中身を見るか仕様書を見るあるいは制作者に問う以外知る術はありません)。 とにかくプログラムの問題なので、部分部分で見せられている状態だと気長にキャッチボールしてゆく以外にないでしょう。 ◎登録側だと仮定した場合   確認画面のHTMLソースから<form>タグを探してACTIONで指定されているCGI名を確認   そのCGIの中で文字'>'または'683'を探して変換している部分を探す ◎表示側と仮定した場合   表示画面のアドレス(フレームなら表示フレームのアドレス)からCGIの名前を確認   そのCGIの中で文字'>'または'683'を探して変換している部分を探す ご確認ください。

yoshiritomo
質問者

お礼

何度もお手数おかけして申し訳ございません。 確認画面のHTMLソースを見ますと、補足のようになっていました。 <br>と<br683 の両方表示されています。 ここにヒントがあるのでしょうか。 <form action="./point_main.cgi でそこのCGIの中を>や683を探しましたが 発見できませんでした。 何度もアドバイスありがとうございます。

yoshiritomo
質問者

補足

<tr> <td bgcolor="#778899"><font color=white>試合日試合場所</td> <td bgcolor="#f8f8ff"> ABC球場 </td> </tr> <tr> <td colspan="2"><font color=white>スコアボード<center> <table border="1" bgcolor="#009933" cellspacing=0 bordercolor="black"> <tr><td><center><font color=white>チーム名</td> <td><center><font color=white>1</td> <td><center><font color=white>2</td> <td><center><font color=white>3</td> <td><center><font color=white>4</td> <td><center><font color=white>5</td> <td><center><font color=white>6</td> <td><center><font color=white>7</td> <td><center><font color=white>8</td> <td><center><font color=white>9</td> <td><center><font color=white>合計</td></tr><tr> <td> <center><font color=white>第一高校 </td> <td width=20> <center><font color=white>1 </td><td width=20> <center><font color=white>2 </td><td width=20> <center><font color=white>3 </td><td width=20> <center><font color=white>4 </td><td width=20> <center><font color=white>5 </td><td width=20> <center><font color=white>6 </td><td width=20> <center><font color=white>7 </td><td width=20> <center><font color=white>8 </td><td width=20> <center><font color=white>8 </td><td><center><font color=white>44</td></tr><tr> <td> <center><font color=white>山田高校 </td> <td> <center><font color=white>1 </td><td> <center><font color=white>2 </td><td> <center><font color=white>3 </td><td> <center><font color=white>4 </td><td> <center><font color=white>5 </td><td> <center><font color=white>6 </td><td> <center><font color=white>7 </td><td> <center><font color=white>8 </td><td> <center><font color=white>9 </td><td><center><font color=white>45</td></tr></table><p></td></tr><tr><td bgcolor="#778899" height=100> <font color=white>コメント </td> <td bgcolor="#f8f8ff"> 投手<br>捕手<br>本塁打<p> </td></tr> <tr><td bgcolor="#778899"> <font color=white>勝敗</td> <td bgcolor="#f8f8ff"> 勝利 </td> </tr> </table> <center><table> <tr><td> <center> <input type="hidden" name="stadm" value="ABC球場"> <input type="hidden" name="result" value="勝利"> <input type="hidden" name="f_all_point" value="44"> <input type="hidden" name="b_all_point" value="45"> <input type="hidden" name="b_point_1" value="1"> <input type="hidden" name="b_point_2" value="2"> <input type="hidden" name="b_point_3" value="3"> <input type="hidden" name="b_point_4" value="4"> <input type="hidden" name="b_point_5" value="5"> <input type="hidden" name="b_point_6" value="6"> <input type="hidden" name="b_point_7" value="7"> <input type="hidden" name="b_point_8" value="8"> <input type="hidden" name="b_point_9" value="9"> <input type="hidden" name="f_point_1" value="1"> <input type="hidden" name="f_point_2" value="2"> <input type="hidden" name="f_point_3" value="3"> <input type="hidden" name="f_point_4" value="4"> <input type="hidden" name="f_point_5" value="5"> <input type="hidden" name="f_point_6" value="6"> <input type="hidden" name="f_point_7" value="7"> <input type="hidden" name="f_point_8" value="8"> <input type="hidden" name="f_point_9" value="8"> <input type="hidden" name="day" value="7"> <input type="hidden" name="month" value="11"> <input type="hidden" name="year" value="2012"> <input type="hidden" name="cmt" value="投手<br683捕手<br683本塁打"> <input type="hidden" name="f_team" value="第一高校"> <input type="hidden" name="b_team" value="山田高校"> <input type="hidden" name="login" value="0123"> <input type="hidden" name="login2" value="0123"> <input type="submit" value="確認"> </form></td><td><FORM> <INPUT TYPE="BUTTON" VALUE="戻る" ONCLICK="history.back()"></FORM></td></tr></table> <p><hr><p> <form action="./point_main.cgi" method="post"> <input type="hidden" name="login" value="0123"> <input type="hidden" name="login2" value="0123"> <input type="submit" value="メインへ戻る"></form> </body></html>

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

$cmt[$p]を$cmp[$p]と誤記してしまいました。 たいへん失礼いたしました。 再掲載していただいたリストにはその部分がありません。 ざっと見た感じ表示部分だけで、表示用に準備された各変数に対する代入操作部分が見当たりません。 たとえば、DBなりCSVなりから読み込んだデータを $cmt[$p] = "読み込みデータ"; みたいな感じの部分です。 どちらにしても手順として「表示の問題」なのか「加工された結果」なのかを切り分けて問題を絞っていかないと核心には程遠い状況です。 ◎「表示の問題」なのか「加工された結果」なのかの確認方法   問題のある表示のHTMLソースを見て「<br>」以降のデータがソース内に有るのか無いのか   有れば「表示の問題」、なければ表示以前の「加工された結果」の問題 ◎「表示の問題」ならばHTMLやCSSをチェックして問題点を探す ◎「加工された結果」ならば、「cmt[$p]」を操作しているCGIのプログラム部分を順に見てゆく。 というところでしょうか。

yoshiritomo
質問者

お礼

ご回答ありがとうございます。 表示の問題でしょうか、補足に登録後のページのソースを掲載しました。 お手数おかけしますが、再度よろしくお願い致します。 また、別の score_del.cgiにも関係ありますか 以下です ________ print " <html> <head> <title>スコアボード</title> </head> <SCRIPT LANGUAGE=\"JavaScript\"> function check(){ res=confirm(\"スコアを削除しても良いですか?\"); if(res == true){ }else{ return false; } } </SCRIPT> <body> <center> <h1>$team通算成績</h1> <p> <hr> <p>"; $f = sprintf("%0.3f",$win/$add); print "<table border=0 width=450> <tr>"; print" <td bgcolor=\"#778899\" width=100> <font color=white>通算成績 </td> <td width=50 bgcolor=\"#f8f8ff\"> $add戦 </td> <td width=50 bgcolor=\"#f8f8ff\"> $win勝 </td> <td width=50 bgcolor=\"#f8f8ff\"> $lose敗 </td> <td width=50 bgcolor=\"#f8f8ff\"> $draw分 </td> <td bgcolor=\"#778899\" width=100> <font color=white>通算勝率 </td> <td width=50 bgcolor=\"#f8f8ff\"> $f </td> </tr> </table><p>"; print "<table width=100%><tr><td align=left>"; if($start > 4){ $hr=$start-5; print "<a href=\"./index.cgi?start=$hr\">次の5件</a></td>"; } print"<td align=right>"; if($start eq 0 || $start+5 < @files){ $hr=$start+5; print "<a href=\"./index.cgi?start=$hr\">前の5件</a></td>"; } print "</tr></table>"; #カレント"./"と"../"を取り除いて、残りを表示する。 $tmp=0; for($p=$start;$p<@files;$p++){ if($tmp eq 5){ last; } $tmp++; if($files[$p] eq "." || $files[$p] eq ".."){ }else{ #スコアファイル読み込み $score_file="./score/$files[$p]/score.csv"; open(File_Score,$score_file) || "$file_bat.csvをOpenできません。\n"; $i=0; while(<File_Score>){ $score[$i]=$_; chomp($score[$i]); $i++; } close (File_Score); $year=sprintf("%0.4f",$files[$p]/100000000)*10000; $month=$files[$p]-($year*10000); $month=sprintf("%0.2f",$month/10000)*100; $day=$files[$p]-($year*10000)-($month*100); $day=sprintf("%0.2f",$day/100)*100; print "<table border=0 width=500> <form action=\"./score_del.cgi\" method=\"post\" onSubmit=\"return check()\"> <tr>"; print" <td bgcolor=\"#778899\" width=150> <font color=white>試合日 </td> <td width=350 bgcolor=\"#f8f8ff\">$year年$month月$day日</td> </tr> <tr> <td bgcolor=\"#778899\"><font color=white>試合場所</td> <td bgcolor=\"#f8f8ff\"> $stadm[$p] </td> </tr> <tr><td colspan=\"2\"> <font color=white>スコアボード<center> <table border=\"1\" bgcolor=\"#009933\" cellspacing=0 bordercolor=\"black\"> "; for($i=0;$i<@score;$i++){ print "<tr>"; @team_score=split(/,/,$score[$i]); if($i eq 0){ print "<tr>"; for($s=0;$s<@team_score;$s++){ if($s eq 0){ print "<td width=80> <font color=\"white\"> <center><i>チーム名 </td>"; }else{ print "<td width=\"20\"> <font color=\"white\"> <center><i>$s </td>"; } } print "<td width=40><font color=\"white\"><center><i>合計</td>"; print "</tr><tr>"; } $point=0; for($j=0;$j<@team_score;$j++){ print "<td><font color=\"white\">"; print"<center>"; if($team eq $team_score[$j]){ print "<b>" } print"$team_score[$j]</td>"; if($j eq 0){ }else{ $point=$point+$team_score[$j]; } } if($cnt[$i-1] eq $j || $i eq 0){ print "<td><font color=\"white\"><center>$point</td>"; }else{ print "<td> <font color=\"white\"><center>× </td> <td> <font color=\"white\"><center>$point </td>"; } print "</tr>"; $cnt[$i]=$j; } print "</table><p></td></tr>"; print "<tr><td bgcolor=\"#778899\" height=100> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> $cmt[$p] </td></tr>"; print "<tr> <td colspan=2 align=right> $files[$p] <input type=\"hidden\" name=\"del_dir\" value=\"$files[$p]\"> <input type=\"hidden\" name=\"login\" value=\"$pass\"> <input type=\"hidden\" name=\"login2\" value=\"$inp_pass\"> <input type=\"submit\" value=\"削 除\"> </td> </tr> "; print "</table></form>"; print "<p><hr width=500><p>"; } } print " <form action=\"./point_main.cgi\" method=\"post\"> <input type=\"hidden\" name=\"login\" value=\"$pass\"

yoshiritomo
質問者

補足

◎「表示の問題」のようですが、CGIのソースをどのように 書き換えたらよろしいでしょうか。 登録前の確認ページでは<br>とソースに表示されてたのが、 登録後のページのソースを見ますと、同じ個所が <br683 となっているようです。 ____________________ <font color=white>コメント </td> <td bgcolor="#f8f8ff"> 投手<br683捕手<br683<br683本塁打<br683三塁打<br683二塁打 </td></tr></table><p><hr width=500><p><table border=0 width=500> <tr> <td bgcolor="#778899" width=150> <font color=white>試合日 </td>

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

$cmp[$p]への代入部分がすっぽり抜け落ちてどんな加工処理を施してるのかわからない為、質問のリストが参考になりませんが、もしかしてCGIの問題じゃなくてHTMLの問題じゃないですか? 以下の部分の ----------------------------- print "<tr><td bgcolor=\"#778899\" height=100> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> $cmt[$p] </td></tr>"; 1.HEIGHT指定を外してみたら・・・ ----------------------------- print "<tr><td bgcolor=\"#778899\"> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> $cmt[$p] </td></tr>"; どうなりますか?

yoshiritomo
質問者

お礼

ご回答ありがとうございます。 HEIGHT指定を外してみたら、同じままでした。 $cmp[$p]への代入部分 補足欄に再度、書き込みしてみましたが こちらでおわかりになりますでしょうか。 大変困っています。

yoshiritomo
質問者

補足

$cmp[$p]への代入部分とは、以下でよろしいのでしょうか。   _____________ print " <html> <head> <title>スコアボード</title> </head> <body> <form action=\"./point_main.cgi\" method=\"post\"> 管理者用 <input type=\"password\" name=\"login\" maxlength=\"4\" size=\"5\"> <input type=\"submit\" value=\"ログイン\"> <center> <h1>野球部 通算成績</h1> <p> <hr> <p>"; $f = sprintf("%0.3f",$win/$add); print "<table border=0 width=450> <tr>"; print" <td bgcolor=\"#778899\" width=100> <font color=white>通算成績 </td> <td width=50 bgcolor=\"#f8f8ff\"> $add戦 </td> <td width=50 bgcolor=\"#f8f8ff\"> $win勝 </td> <td width=50 bgcolor=\"#f8f8ff\"> $lose敗 </td> <td width=50 bgcolor=\"#f8f8ff\"> $draw分 </td> <td bgcolor=\"#778899\" width=100> <font color=white>通算勝率 </td> <td width=50 bgcolor=\"#f8f8ff\"> $f </td> </tr> </table><p>"; print "<table width=100%><tr><td align=left>"; if($start > 4){ $hr=$start-5; print "<a href=\"./index.cgi?start=$hr\">次の5件</a></td>"; } print"<td align=right>"; if($start eq 0 || $start+5 < @files){ $hr=$start+5; print "<a href=\"./index.cgi?start=$hr\">前の5件</a></td>"; } print "</tr></table>"; #カレント"./"と"../"を取り除いて、残りを表示する。 $tmp=0; for($p=$start;$p<@files;$p++){ if($tmp eq 5){ last; } $tmp++; if($files[$p] eq "." || $files[$p] eq ".."){ }else{ #スコアファイル読み込み $score_file="./score/$files[$p]/score.csv"; open(File_Score,$score_file) || "$file_bat.csvをOpenできません。\n"; $i=0; while(<File_Score>){ $score[$i]=$_; chomp($score[$i]); $i++; } close (File_Score); $year=sprintf("%0.4f",$files[$p]/100000000)*10000; $month=$files[$p]-($year*10000); $month=sprintf("%0.2f",$month/10000)*100; $day=$files[$p]-($year*10000)-($month*100); $day=sprintf("%0.2f",$day/100)*100; print "<table border=0 width=500> <tr>"; print" <td bgcolor=\"#778899\" width=150> <font color=white>試合日 </td> <td width=350 bgcolor=\"#f8f8ff\">$year年$month月$day日</td> </tr> <tr> <td bgcolor=\"#778899\"><font color=white>試合場所</td> <td bgcolor=\"#f8f8ff\"> $stadm[$p] </td> </tr> <tr><td colspan=\"2\"> <font color=white>スコアボード<center> <table border=\"1\" bgcolor=\"#009933\" cellspacing=0 bordercolor=\"black\"> "; for($i=0;$i<@score;$i++){ print "<tr>"; @team_score=split(/,/,$score[$i]); if($i eq 0){ print "<tr>"; for($s=0;$s<@team_score;$s++){ if($s eq 0){ print "<td width=80> <font color=\"white\"> <center><i>チーム名 </td>"; }else{ print "<td width=\"20\"> <font color=\"white\"> <center><i>$s </td>"; } } print "<td width=40><font color=\"white\"><center><i>合計</td>"; print "</tr><tr>"; } $point=0; for($j=0;$j<@team_score;$j++){ print "<td><font color=\"white\">"; print"<center>"; if($team eq $team_score[$j]){ print "<b>" } print"$team_score[$j]</td>"; if($j eq 0){ }else{ $point=$point+$team_score[$j]; } } if($cnt[$i-1] eq $j || $i eq 0){ print "<td><font color=\"white\"><center>$point</td>"; }else{ print "<td> <font color=\"white\"><center>× </td> <td> <font color=\"white\"><center>$point </td>"; } print "</tr>"; $cnt[$i]=$j; } print "</table><p></td></tr>"; print "<tr><td bgcolor=\"#778899\" height=100> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> $cmt[$p] </td></tr>"; print "</table>"; print "<p><hr width=500><p>"; } } print " </body></html>"; exit;

関連するQ&A

  • CGIの動作環境に関して

    教えて下さい。 私の作成したapacheの環境では、   print "Content-type: text/plain\n\n"; print "Hello Perl !"; この表記ではダウンロードのポップアップが表示されてしまい、 調べたところ、 print "Content-type: text/html\n\n"; print "<html><h1>Hello Perl !</h1>"; のようにhtml形式にすれば正しく表示されるようになりました。 しかし、自分で作成しておきながら、html形式というものが 良くわかりません。 仮に、以下のような"行動予定表"のようなものを表示させたい場合、 どのように"html形式"で記述すれば良いでしょうか。。。。 # 行動予定表の表示 print "Content-type: text/html\n\n"; print qq! <HTML> <HEAD> <TITLE>行動予定表</TITLE> <META Http-Equiv="Content-Type" Content="text/html;charset=shift-jis"> </HEAD> <BODY link="#0000ff" vlink="#0000ff" alink="#0000ff"> <CENTER> <TABLE BORDER="0" WIDTH="90%"> <TD WIDTH="20%"> <FONT SIZE="4"> <IMG src="../../image/mrd3.gif" width="80" height="27" border="0"> </FONT> </TD> <TD WIDTH="60%" ALIGN="center"> <B><U>行動予定表</U></B> </TD> <TD WIDTH="20%" ALIGN="right"> <FONT SIZE="4"><U>$date</U></FONT> </TD> </TABLE> <FONT COLOR="#FF0000"><B>$error</B></FONT><BR> <TABLE BORDER="1" WIDTH="650" CELLPADDING="2" CELLSPACING="1"> <TR ALIGN="center"> <TD NOWRAP WIDTH="150" BGCOLOR="#DDDDDD"> <FONT SIZE="2"><B>名前</B></FONT> </TD> <TD NOWRAP WIDTH="300" BGCOLOR="#DDDDDD"> <FONT SIZE="2"><B>行  先</B></FONT> </TD> <TD NOWRAP WIDTH="150" BGCOLOR="#DDDDDD"> <FONT SIZE="2"><B>帰社時間</B></FONT> </TD> </TR> !; for($loop = 1;$loop <= $#LIST_NAME;$loop++) { $name = qq!<FONT SIZE="2">$LIST_NAME[$loop]</FONT>!; print qq! <TR> <TD WIDTH="2%" VALIGN="middle" NOWRAP> <A HREF="yotei_d1.cgi?edit=$loop">$name</A> </TD> <TD WIDTH="49%" VALIGN="top"> <FONT SIZE="2">$LIST_NOTE[$loop]{'AM'} </FONT> </TD> <TD WIDTH="49%" VALIGN="top"> <FONT SIZE="2">$LIST_NOTE[$loop]{'PM'} </FONT> </TD> </TR> !; } print qq! </TABLE> </CENTER> <CENTER> <TABLE BORDER="0" WIDTH="750" CELLPADDING="0" CELLSPACING="0"> </TABLE> </CENTER> <HR> <CENTER> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"> <TR> <TD COLSPAN="3"> <FONT SIZE="2"><B>ご利用のヒント</B></FONT> </TD> </TR> <TR> </TR> <TR> <TD WIDTH="5%"> </TD> <TD WIDTH="15%"> <FONT SIZE="2"><B>■名前</B></FONT> </TD> <TD WIDTH="80%"> <FONT SIZE="2"> 編集したい名前を押すと、登録画面が表示されます。</FONT> </TD> </TR> </TABLE> </CENTER> <P> <CENTER> <P ALIGN="center"> <FONT SIZE=2><I> <A HREF="http://999999">イントラネットトップページへ </A> </I></FONT> </CENTER> </BODY> </HTML> !; 宜しくお願いします。

    • 締切済み
    • CGI
  • 先日テーブルの質問をした者です。

    先日テーブルの中に画像を入れたいと相談した初心者です。 何とか形になりましたが、「画像の下のテキスト部分の選手名とポジションのすき間が上下のかけ線に近すぎた」ので自己流で離してみましたが、もっとちゃんとした正式な方法が知りたくて質問しました。 私のヘボソースを参考にご教授お願い致します。(汗) <html> <head> <title>○○メンバー紹介</title> </head> <br> <br> <th><center><i><font size="6px" color="white" face="IMPACT" >MEMBER</font></i></center></th> <center><i><font size="5px" color="white" face="IMPACT" >(2005年チーム)</font></i></center> <br> <br> <body bgcolor=navy> <center><table border="1" cellpadding="0" cellspacing="0"> <tr> <td><img src="1234.jpg" width="280" height="210" alt="選手の画像"></td> <td><img src="1235.jpg" width="280" height="210" alt="選手の画像"></td> <td><img src="1236.jpg" width="280" height="210" alt="選手の画像"></td> </tr> <TR BGCOLOR="#696969"> <Td Align="center" Valign="middle"><font color=white>&nbsp;<br>キャプテン○○○<br>○○○<br>ガード<br>&nbsp;</font></td> <Td Align="center" Valign="middle"><font color=white>副キャプテン×△○<br>×○△<br>ガード</font></td> <Td Align="center" Valign="middle"><font color=white>2年○××<br>○××<br>フォワード</font></td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML
  • tableに対するdiv

    テーブル内の文字色を白にしたい場合、 <style type="text/css"><!-- div.font{color:white;} --></style> <tr> <div class="font"> <td align="center" width="20%">★1</td> <td align="center" width="20%">★2</td> <td align="center" width="20%">★3</td> <td align="center" width="20%">★4</td> <td align="center" width="20%">★5</td> </div> </tr> このように指定しましたが、適用されません。 なぜでしょう?

    • ベストアンサー
    • HTML
  • フォームメール確認用ページ

    フォームメールの確認用のページで、 cgiから書き出す、最終的な確認部分を、入力フォームから内容を受けた部分のみ表示しようとおもうのですが、以下の書式だとhtml内のsub部分の指示が効かずに、画面にそのままsub~と書き出されてしまいます。 どなたか良い方法を教えていただけないでしょうか? よろしくお願いいたします。 省略 $errNum = chkFormInput(); fixTags(); &okhtml(); sub okhtml{ print "Content-type:text/html\n\n"; print <<DATA; <html> <head> 省略 sub hoge { if ($hoge eq "") { print "<tr><td height="1" width="1"><img src="bitr.gif" width="1" height="1"></td></tr>\n"; }else{ print "<tr><td align=center width="30" bgcolor="#ffffdd"><font color="#333300" class="text2">8.</font></td> <td width="3"><img src="bitr.gif" width="1" height="1"></td> <td width="106" height="27" bgcolor="#ffffaa"><img src="bitr.gif" width="1" height="1"><font color="#333300" class="text2">連絡先<font class="text2" color="#cc0000"></td> <td width="3"><img src="bitr.gif" width="1" height="1"></td> <td width="414" bgcolor="#ffffdd"><img src="bitr.gif" width="1" height="1"><font class="text5">$hoge</font></td></tr> <tr><td colspan="5" height="2"><img src="bitr.gif" width="1" height="1"></td></tr>\n"; } }

    • ベストアンサー
    • Perl
  • cgi での表示方法について

    for($i=$start;$i<$end;$i++){ my($d,$d,$this_site,$this_url,$this_com) = split(/<>/,$this_data[$i]); print <<EOF; <tr bgcolor="$t_color"> <td width="95%" valign="top" colspan="2"> <table width="45%" border="0" cellspacing="0" cellpadding="2"> <td> <img src="$point_img" width="8" height="8<a href="$this_url" target="down"> <font color="#CC0000">$this_site</font></a> </td> </table> </td> </tr> EOF } という、記述があるのですが、 今のままだと、$this_siteが縦に並んでしまうので、 画面がスクロールしてしまい、見にくい状態です。 例) ABCサイト DEFサイト GHIサイト これを、 ABCサイト  DEFサイト GHIサイト というような感じに並べ替えたいのですが、 どうしたらいいのでしょうか? 自分の頭で考えていたのですが、 どうやってもできません。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIのカスタマイズについて

    ネットレスキューさんの簡易データベースについて search.cgiの表示部分でテーブルを一つずつ生成させようと思ったのですがエラーが出ます。 どこが悪いのでしょうか? ----------ここから------- foreach $data (@NEW) { ($d,$DATE,$PREF,$NAME,$EMAIL,$HURL,$AGE,$HANDLE,$REM) = split(/\,/,$data); print "<table width="450" border="0" cellspacing="0" cellpadding="0" class="p12_16">\n"; print "<tr>\n"; print "<td colspan="2" bgcolor="#CC0033" height="14"><font color="#FFFFFF">● $NAME</font></td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td width="70">地域</td>\n"; print "<td width="380">$PREF</td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td height="14">Eメール</td>\n"; print "<td><a href=\"mailto:$EMAIL\">$EMAIL</a></td>\n"; print "</tr>\n"; ---中略---- print "<td height="14">内容</td>\n"; print "<td>$REM</td>\n"; print "</tr>\n"; print "</table>\n"; if ($next_num ne '') { while (($key,$val) = each %FORM2) { if ($key ne 'FF') { $buf = "$buf&$key=$val"; } } print "<h3>↓<a href=\"search.cgi?$buf&FF=$next_num\">次の$page件</a></h3>\n"; } } print "</body></html>\n\n"; exit; --------------ここまで----- splitの扱い方が良く分っていません。 御存知の方御指導下さいませ。

    • ベストアンサー
    • CGI
  • CGI掲示板カスタマイズ~メッセージ送信の上にプロフを付けたい。

    現在、CGI掲示板のカスタマイズ中ですが、この掲示板は、投稿者の名前をクリックすると、メッセージ送信フォームが出るようになっています。 そこでこの送信フォーム画面の上部に、その投稿者の文章を表示したく、観覧処理や出力処理の中から必要そうな記述を抜き出し、送信フォーム表示処理の中のルーチンに取り込み、なんとか表示させることには成功したのですが、、その人物の投稿内容ではなく、なぜか1番目の投稿者の内容なのです。以下がそのメッセージ送信フォーム表示処理の内容です。 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## SUB >>> メール送信フォーム表示処理 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sub mailform { if ($in{'sex'} eq '0') { if(!open(IN,"$mensfile")) { &error("$mensfile ファイルオープンエラー"); } } elsif ($in{'sex'} eq '1') { if (!open(IN,"$ladysfile")) { &error("$ladysfile ファイルオープンエラー"); } } if ($in{'sex'} eq "0") { $word_color = "$boy_color"; } elsif ($in{'sex'} eq "1") { $word_color = "$girl_color"; } if ($in{'sex'} eq "0") { $word_color = "$boy_color"; } elsif ($in{'sex'} eq "1") { $word_color = "$girl_color"; } if ($in{'sex'} eq "0") { $image = "image/otoko.gif"; } elsif ($in{'sex'} eq "1") { $image = "image/onna.gif"; } #--生年月日から年齢を計算--# $nenrei = ""; unless ($noage) { $nenrei = $year - $age_y; if ($age_m > $month) { $nenrei = $nenrei - 1; } if ($age_m == $month) { if ($age_d > $mday) { $nenrei = $nenrei - 1; } } } #--メール送信可能数の設定--# if ($max) { $max = "$max通まで"; } else { $max = "無制限"; } $i = 0; $allno = 0; while (<IN>) { ($no,$name,$mail,$age,$state,$comment,$hoop,$risou,$max,$date,$H_A,$m_pass,$looks) = split(/\,/,); ($age_y,$age_m,$age_d,$noage) = split(/<>/, $age); ($street,$title) = split(/<>/, $state); $i++; $allno++; if ($i < $start) { next; } if ($i > $end) { next; } if ($in{'sex'} eq '0') { $name_color = "$m_namecolor"; } if ($in{'sex'} eq '1') { $name_color = "$l_namecolor"; } &member_view; } close(IN); ~~~~↑↑↑追加部分↑↑↑~~~~~~~~ &html_head; &title; print <<"HERE"; <TABLE width="580"> <TR><TD bgcolor="$top_t_bgc"><CENTER> <FONT color="$top_t_color"><B>メッセージ送信フォーム</B></FONT> </TD></TR></TABLE> ~~~~↓↓↓追加部分↓↓↓~~~~~~~~ <TABLE width="98%" cellspacing="0" cellpadding="5" border="$table_border"> <TR><TD bgcolor="$table_bgc"> ■<FONT color="$title_color">[<B>$no</B>] <B>$title</B></FONT><BR> ■お名前/ <B>$name</B>さん $date<BR> ■住所/ $street 年齢/ $age_y年$age_m月$age_d日生まれ($nenrei歳)<BR> ■希望/ $risou <FONT color="$word_color">[$hoop]</FONT> ■メール制限数/ <FONT color="$word_color">[$max]</FONT><BR> <FONT color="$word_color">$comment</FONT></TD></TR></TABLE> <TABLE height="$kiji_sp" border="0"><TR><TD></TD></TR></TABLE> HERE ~~~~↑↑↑追加部分↑↑↑~~~~~~~~ 以下は元からある送信フォーム。文字数オーバーのため省略 ~~~ここまでが送信処理のルーチンですが、 この上部の方の記述をどう記したら、その人物の投稿文が出せるのか、宜しくお願い致します。

    • ベストアンサー
    • CGI
  • 楽天オークション HTMLエラー

    楽天オークション商品説明文の欄にHTMLを挿入した結果「PC用説明文欄に認められていないHTMLタグ、または「<」「>」が入力されています。各入力項目ごとの利用可能なHTMLタグをご確認ください。」というエラーが出ました。 どなたか解決方法をお教えください。 <div align="center"> <table width="695" cellpadding="1px" cellspacing="1px" bgcolor="#187353"> <tr> <td align="center"><font color="#ffffff" size="+1"><strong>商品データ</strong></font></td> </tr> </table> <table width="700" cellpadding="5px" cellspacing="3px"> <tr> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ 参考価格</strong></font></td> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ 販売価格</strong></font></td> </tr> <tr> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">29,800円</font></td> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">24,500円</font></td> </tr> <tr> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ ランク</strong></font></td> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ 型番</strong></font></td> </tr> <tr> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">N(新品・未使用品)</font></td> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">J1234</font></td> </tr> <tr> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ 色</strong></font></td> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ サイズ</strong></font></td> </tr> <tr> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">BLACK</font></td> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">縦30cm 横10cm</font></td> </tr> <tr> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ 素材</strong></font></td> <td width="270" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ 付属品</strong></font></td> </tr> <tr> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">レザー</font></td> <td width="270" bgcolor="#EFEFEF"><font color="#231815" size="-1">なし</font></td> </tr> <tr> <td colspan="2" bgcolor="#30AA8E"><font color="#ffffff" size="-1"><strong>■ コメント</strong></font></td> </tr> <tr> <td colspan="2" bgcolor="#EFEFEF"><font color="#231815" size="-1">小さなシミ(変色目立つ)小傷若干(角擦れ目立つが破れなし)</font></td> </tr> </table> </div> 宜しくお願い致します。

  • CGIでの表示の不具合について。

    座席表を作成しようと思い以下のようにしました。 最初の画面で行と列の数を入力。    ↓ その分でテーブルを作成し、入力画面を出す。    ↓ 名前と一緒に数字も入れ、机の向き(1:横向き、2:縦向き)も入力する。    ↓ 完成。 ある程度はうまくいくのですが、なぜか一定のものだけ表示がおかしくなります。 ┏━━━┳━━━━┳━┓ ┃    ┃      ┃  ┃ ┣━━━╋━━━━┫  ┃ ┃    ┃      ┃  ┃ ┗━━━┻━━━━┻━┛ とならなければならないところが ┏━━━┳━━━━┳━┓ ┃    ┃      ┃  ┃ ┣━━━╋━━━━┫  ┣━━┓ ┃    ┃      ┃  ┃   ┃ ┗━━━┻━━━━┻━┻━━┛ となることがあります。 この右端のものは全然関係ない行のログからひっぱられてきます。 でも出るものと出ないものがあります。 表示のコードは $gyou = @FILES; for($i=0;$i<$gyou;$i++){ @log = split(/&/,$FILES[$i]); foreach(@log){ ($key,$value)=split(/=/,$_); $FORM{$key} = $value; } if ($searchkey eq $FORM{'BUSYO'}){ last; } }#for終わり でログファイルを開いて分解し、 for($n=0;$n<$TATE;$n++){ print "<TR>\n"; for($r=0;$r<$YOKO;$r++){ if ($FORM{"NO$n$r"} eq '1'){ print "<TD COLSPAN=2 CLASS=TD WIDTH=100 HEIGHT=50 ALIGN=CENTER>$FORM{\"NAME$n$r\"}</TD>\n"; } elsif ($FORM{"NO$n$r"} eq '2'){ print "<TD ROWSPAN=2 CLASS=TD WIDTH=50 HEIGHT=100 ALIGN=CENTER>$FORM{\"NAME$n$r\"}</TD>\n"; } } #列の終了 print "</TR>\n"; } #行のfor終了 のように表示させています。

    • ベストアンサー
    • CGI
  • colspanを使うと正しく表示できない?!

    あるwebシステムで 現在の予約数を表示するようなhtmlを作成しています。 tableを使って、td内に予約できる数をcolspanで指定して、 現在の予約状況がひとめでわかるように表示しているのですが なぜか、正しく表示できなくなってしまいました。 ブラウザもie6からie8にはなったのですが。 いろいろ検索してみると、似たような質問はたくさんされていましたし、 それぞれにwidth指定もすればよい・・・のように記載されていて解決されているようでした。 でも、同じように試してみましたがダメでした。(表示結果は同じ) サンプルとしまして、(全体で92がMAXの予約数として です) <table width="319" border="1" cellpadding="0" cellspacing="0"> <tr> <td width="100" height="25" colspan="2" align="center">日時</td> <td width="100" colspan="50" align=right>50</td> <td width="84" colspan="42" align=right>92</td> <td width="35" height="25" align="center" bgcolor="#ffd37d">空き</td> </tr> <tr> <td rowspan="12" width="55" align=center valign=top>11月26日</td> <td width="45" align=center>0時</td> <td width="110" colspan="55" bgcolor="#ff4500" align="center">55</td> <td width="74" colspan="37" bgcolor=white><br></td> <td width="35" align=center><font color=navy>37</font></td> </tr> <tr> <td width="45" align=center>1時</td> <td colspan="55" bgcolor="#ff4500"align="center">55</td> <td colspan="37" bgcolor=white><br></td> <td width="35" align=center><font color=navy>37</font></td> </tr> <tr> <td width="45" align=center>2時</td> <td colspan="55" bgcolor="#ff4500" align="center">55</td> <td colspan="37" bgcolor=white><br></td> <td width="35" align=center><font color=navy>37</font></td> </tr> <tr> <td width="45" align=center>3時</td> <td colspan="70" bgcolor="#ff4500" align="center">70</td> <td colspan="22" bgcolor=white><br></td> <td width="35" align=center><font color=navy>22</font></td> </tr>  ・  ・  ・ のような場合、<tr>内の2つめの<td>のcolspan=70も55も同じ幅で表示されます。 違う・・・といえば、align=centerでそれぞれ数字を表示させていますが 55のテキストが少し左寄り、70がcenterに表示されてるように見えます。 また、赤背景色の幅も微妙に0.xミリくらいは colspan=70の方が広いです。 tableのwidthがborderの幅を考慮していないのですが これも問題でしょうか? みなさん、似たような問題がでても解決されているようなのですが 自分の場合、どうやってもなかなか解決できません。 tableの幅を広めに取ったり、style指定したり、widthを入れたり・・・ 因みに依然(今年の春頃まで?)は、width無しのcolspan指定だけで、 思い通りに表示できていました。 その後、ブラウザのバージョンアップがありました。 最初(春頃)はstyleで table{ table-layout:fixed; } を指定したらなんとかうまく表示できました。 今回は春頃のバージョンのままで特に変更なく動かせるはずだったのですが。。。 そのままではダメなようです。 どのような方法があるのかアドバイスいただければと思います。 よろしくお願いします。

    • ベストアンサー
    • CSS

専門家に質問してみよう