このようなチェックボックスを作って
<INPUT type="checkbox" name="q1" value="A">A<br>
<INPUT type="checkbox" name="q1" value="B">B<br>
<INPUT type="checkbox" name="q1" value="C">C<br>
このようなPerlの記述をして
use CGI;
$q = new CGI;
@q1 = $q->param('q1');
このようなCGIの値の書き出し部分はどうしたらいいですか?
print "<td width=300><font size=2>●●{'q2'}</font></td>\n";
上記の
@q1 = $q->param('q1');
に、チェックされた値が格納されているんですよね。
その値を表示させたいと思っています。
いろいろ教えてもらって、ここまでたどり着きました。
No.4ベストアンサー
- 回答日時:
#3さんの『お礼』にあるコードですが、間違っているところだけ書いておきます。
原因はCGI.pmと独自の入力処理が、それぞれデータをとり合っていることです。このコード上では、独自の入力処理の部分がSTDINを読み込んでしまうので、CGI.pmからは何も読む事は出来ません。
入力処理には、CGI.pmか独自入力処理の『いずれか』を用いてください。全て書いても使えるのは一つだけです。質問内容から考えられるお勧めは、CGI.pmを利用する事です。(オーバースペックですが、ひとまずそう言うことは考えない方針で。)
コードを見る限り、恐らく『データでコード処理』の部分を全て削除すれば大丈夫だと思います。
hikominさんのおっしゃる通りにしましたら、上手くいきました!!今、ものすごく興奮しています。この作業を始めてから2週間、毎日本を探しに行ったり、人に聞いたり、こちらでお世話になったりと・・・。PerlもCGIも初心者の私には荷が重い作業でしたが、こうやって達成できるとなんとも言えない充実感があります。お陰で期日までに間に合いそうです。それもこれも、今までアドバイスをしてくださった皆さんのお陰で、この場をかりて感謝の気持ちを述べさせていただきます。本当にありがとうございました。
No.3
- 回答日時:
配列になっているので、他の方の回答のように一般的にはループさせて内容を書き出します。
まぁ、一箇所に繋げてABCとかそのまんま書き出すだけでいいなら
print "<td width=300><font size=2>@q1</font></td>\n";
でも書き出してくれるけど。
せめて(A,B,C みたいに)カンマで区切るとかしたほうが見易いかも。
$q1_str = join ',',@q1;
print "<td width=300><font size=2>$q1_str</font></td>\n";
本にもそういう風に書いてありましたが上手くいきません。以下は他人の見本を私が改造して作りましたが何かおかしいですか?余計な記述、意味不明記述もなあるかもしれません
#!/usr/local/bin/perl
# 日本語コード
require 'jcode.pl';
# データデコード処理
if ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
}
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
}
# 配列
use CGI qw(:standard);
@q1=param("q1");
$q1_str = join ',',@q1;
# 確認の画面
print "Content-type: text/html\n\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\">\n\n";
print "<html>\n <head>\n";
print " <title>テスト</title>\n";
print " </head>\n <body>\n";
print " <form method=post action=\"aaa.cgi\">\n";
print " <table border=1 cellspacing=2>\n";
print " <tr>\n";
print " <td width=100><font size=2>質問1</font></td>\n";
print " <td width=300><font size=2>$q1_str</font> </td>\n";
print " </tr>\n";
print " </table>\n";
print " </center>\n";
print "<input type=\"submit\" value=\"送信\"><input type=\"button\" value=\"戻る\" onClick=\"history.back()\"><br><br>";
print " </body>\n";
print " </form>\n";
# エラー処理
sub error
{
($error,@error_fields) = @_;
if ($error eq 'missing_fields')
{
}
exit;
}
No.2
- 回答日時:
foreach my $value (@q1){
print "<td width=\"300\"><font size=\"2\">$value</font></td>\n";
}
省略できるところを省略すると、
foreach (@q1){
print qq|<td width="300"><font size="2">$_</font></td>\n|;
}
forを使った書き方をしてみると、
for($i=0; $#q1>=$i; $i++){
print qq|<td width="300"><font size="2">$q1[$i]</font></td>\n|;
}
print "<td width=300><font size=2>●●</font> </td>\n";
とあって「●●」に
foreach (@q1){
print qq|<td width="300"><font size="2">$_</font> </td>\n|;
}
と入れるのですか?
そうじゃないことは分かっています・・・。
@q1 = $q->param('q1');
で取った値を取り出したいのですが、
foreach my $value (@q1){ print $value;
}
で取り出せるけど、「確認画面」というものに自分がチェックしたものを表示させてあげるのは無理なのでしょうか?
そういうことで
print "~\n";
を使っています。
No.1
- 回答日時:
おっしゃる通り、@q1にチェックされた値が格納されています。
全部出すなら
foreach my $value (@q1){ # @q1から一つずつ取り出して$valueに入れるループ
print $value;
}
とかとかです。(整形はご自分で。)
いろいろ省略する事も出来ますが、うっかり省略しすぎると最初は分けが分からなくなりますので、ひとまず上の形で使ってみてください。
すいません間違えてました。「●●{'q2'}」を「●●」にしてください。
ところで「●●」には
foreach my $value (@q1){ # @q1から一つずつ取り出して$valueに入れるループprint $value;}
と全て入れるのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
16進の10進変換について
-
数値英単語変換
-
【至急!!!】python言語で本を見...
-
awkの正規表現での最左最短マッ...
-
文字のカラーとフォントの指定...
-
Pythonでコンソールをクリアす...
-
Pythonでターミナルに文字を出...
-
パイソンのクラスについて
-
awk の int()に関数について
-
C言語
-
シェルスクリプトで、空白(ス...
-
PerlCGIでクエリの検索結果が途...
-
プログラミングについて 文字列...
-
画面上再読み込みをさせたいの...
-
I2C接続のLCDディスプレイを使う
-
Perl 条件一致なし 合計値 0表示
-
pythonを使ったプログラミング...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
16進の10進変換について
-
Pythonでターミナルに文字を出...
-
シェルスクリプトで、空白(ス...
-
【至急!!!】python言語で本を見...
-
pythonで演算子を変数に代入す...
-
c言語 16進数の2進数への変換
-
パイソンのクラスについて
-
I2C接続のLCDディスプレイを使う
-
関数「exists」と「defined」の...
-
pythonの*
-
変数の中は文字列か数値か調べ...
-
数値かどうかの判定方法
-
python print文のエラー
-
int(input("○○"))の使い方
-
Perlの例文でif($a==1&&$b==5&&...
-
awkの正規表現での最左最短マッ...
-
Use of uninitialized value ---
-
CGIでimgタグでalignを使うとエ...
-
swift 文字コードから文字に変...
-
javaのパッケージ構成で各パッ...
おすすめ情報