• 締切済み

チェックボックスを利用してデータの更新をしたいのですが

どうもです!またまた質問失礼します。出席管理の作成をしているのですが、番号と名前を追加することができまして、この後チェックボックスをクリックしてデータ更新ボタンを押しそのチェックしたところを残したいのですが詰まってしまって困っています。 # 学籍番号と出席の入ったファイルからすべて読み出す。 # 学籍番号と名前を保存しておく。 # @gs(学籍番号) , @name(名前); my $gs,$name,$s[1],$s[2],$s[3],$s[4],$s[5],$s[6],$s[7],$s[8],$s[9],$s[10],$s[11],$s[12],$s[13],$sr; open(READ,"3.csv");#ファイルを読み込む @lines = <READ>; close(READ);#ファイルを閉じる # 学籍番号分の繰返し { # 出席回数分の繰返し { # if文を使い、1 or 0を確認して、保持する(配列に入れる)。 まず『学籍番号と名前を保存しておく。』この二つだけを保存するのが???です。そして、このあと学籍番号と出席回数分の繰返しをやるわけですが。この前はforeachを使うのでしょうか? 説明不足の文かと思いますがご助言お願い致します。

みんなの回答

回答No.1

何かの課題ですか? まぁ、それはいいとして # 学籍番号と出席の入ったファイルからすべて読み出す。 # 学籍番号と名前を保存しておく。 # @gs(学籍番号) , @name(名前); となっているので、学籍番号と出席の入ったファイル(3.csv?)から 学籍番号と名前を抜き出して、配列@gsと@nameに入れればいいという事じゃ ないでしょうか? イメージ的には open(READ,"3.csv"); while(<READ>){ ($g,$n) = split(",",$_); push(@gs, $g); push(@name,$n); } close(READ); こんな感じではないでしょうか? 後は配列をforなりforeachなりを使ってループさせればいいわけです。 #最終的に何をしようとしているのかが見えないので #とりあえず当たり障りの無い回答を・・

terunosuke
質問者

お礼

お返事ありがとうございます。 恥ずかしながら課題の一部がどうしても解らず、ヒントでもと思い書き込んだ次第です。参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルでまとまったデータを取り出すには?

    エクセルでできた二つの名簿ファイルがあり、片方のファイル(1)にはクラス全員の<学籍番号、名前、住所、電話番号、メールアドレス・・・>が、それぞれ1列目、2列目・・・・に入力されているとします。もう片方のファイル(2)にはクラスの一部の生徒の学籍番号だけが1列目に入力されているとします。エクセルを使って、ファイル(2)に学籍番号がのっている生徒の分だけ<名前、住所、電話番号、メールアドレス・・・>のデータを全て取り出して表示する(学籍番号で絞り込みをする)にはどのような式でどのような操作を行えばよいのでしょうか?よろしくお願いします。

  • 【mysql.php】チェックボックスの処理

    データベースにチェックボックスのON、OFF状態を 保存しようとしているのですが、 やり方が色々あり、どのやり方が一番いいのかわかりません。 調べたところ、大きく以下の4つがあることがわかりました。 ----------------------------------------- 方法1 チェックボックス分カラムを用意する ----------------------------------------- 例 id name flag4 flag3 flag2 flag1 15 なまえ 1   1   0  0 ----------------------------------------- 方法2 ビット演算を使う ----------------------------------------- id name bit 15 なまえ 12 ----------------------------------------- 方法3 カンマで区切ってデータを入れる ----------------------------------------- id name check 15 なまえ 3,4 ----------------------------------------- 方法4 チェックボックス管理テーブルを作る ----------------------------------------- main_tb id name 15 なまえ check_tb id check 15 4 15 3  それぞれ、一長一短があると思うのですが それぞれのメリット・デメリット、一般的にどの方法が好まれているのか等 アドバイス頂けると嬉しいです。

    • ベストアンサー
    • MySQL
  • 二人目以降から計算がおかしくなってしまうんです。

    質問失礼します。出席管理みたいなものを作っているのですが下記のように13回ループさせて出席した場合はカウントが入りそこから$percent = $count / 13.0 * 100;という計算方法で出席率を出しているのです。 一人目は正常に出てくるのですが、二人目以降から計算がおかしくなってしまいます。 my $gs,$name,$s[1],$s[2],$s[3],$s[4],$s[5],$s[6],$s[7],$s[8],$s[9],$s[10],$s[11],$s[12],$s[13],$sr; open(READ,"2.csv"); #ファイルを読み込む @lines = <READ>; close(READ); #ファイルを閉じる foreach $line ( @lines ){ # @s に 添え字の1から13までに、出席の状態が入る。 ($gs,$name,$s[1],$s[2],$s[3],$s[4],$s[5],$s[6],$s[7],$s[8],$s[9],$s[10],$s[11],$s[12],$s[13],$sr)=split(/,/,$line); print "<tr><td>$gs</td><td>$name</td>"; for($i=1;$i<=13;$i++){ $str = "$gs" . "_" . "$i"; if( $s[$i] eq "1"){ print "<td><input type=\"checkbox\" name=\"$str\" value=\"1\" checked></td>\n"; $count ++; }else{ print "<td><input type=\"checkbox\" name=\"$str\" value=\"1\"></td>\n"; } } $percent = $count / 13.0 * 100; $percent_2 = sprintf "%3.0f",$percent; print "<td>$percent_2%</td></tr>"; } 6人目になると100%が上限なのですが300%などいってしまいます。説明が下手で申し訳ないですが、ご助言いただけないでしょうか?

    • ベストアンサー
    • Perl
  • チェックボックスでのvalue値のスペースについて

    HTMLのformからチェックボックスで選択された値をCGIに飛ばしデータファイル(cgiファイル)に保存したいのですが、 チェックボックスのvalueを複数選択するとvalue値の間にスペースが入ってしまいます。 正確にはデータファイルをterapadで開こうとすると、 「NULL文字を含むファイルです。NULL文字は半角スペースへ変換しました。」というアラートがでてvalue値の間に半角スペースが入ってしまいます。 <チェックボックスのHTML> <input type="checkbox" name="■" value="jpn" />日本 <input type="checkbox" name="■" value="usa" />米国 ■にはデータを保存する項目の番号が入っており、一つのチェックボックスでは同じ番号が入ります。 例えば■が1なら1番に保存されます。 日本と米国を選択し送信するとデータファイル上では「jpn usa」となってしまいます。 NULL文字とはデータの値がない場合に返される値だという認識なのですが、全てのチェックボックスを選択していれば、 「jpnusa」という形で送信されるものではないのでしょうか? データを送信する際、このNULL文字による半角スペースをなくしたいのですが、何か方法はありますでしょうか? やはりCGIファイルを編集しなければ不可能なのでしょうか? ご教授よろしくお願いします。

    • ベストアンサー
    • CGI
  • チェックボックスからの値を受け取る

    つたなくもperlを使ってCGIスクリプトを作っている者です。 <input type="checkbox" name="test" value="1">1 <input type="checkbox" name="test" value="2">2 <input type="checkbox" name="test" value="3">3 上記のように、nameは全て同じ名前にして、データを受け取りたいと思っています。 ただ、 if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{CONTENT_LENGTH}); } require './jcode.pl'; @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コードをS-JIS変換 &jcode'convert(*value, "sjis", "", "z"); $data{$name} = "$value"; と、最初に$data{test}に格納をしています。 現在は全ての項目にチェックをいれても、 3 と表示されてしまいます。 なんとかjcode.lib以外のモジュールを使わないで、 $data{test}に選択された全ての項目を入れることはできないでしょうか。 ご教授いただけましたら幸いです。

    • ベストアンサー
    • Perl
  • フレームへのデータ渡し

    フレームへ飛ぶまえのファイルの一部 <FORM METHOD=POST ACTION="frame.html" > <INPUT TYPE=HIDDEN NAME="RECID" VALUE="<% = rec.Fields("学籍番号") %>"> <TD BGCOLOR=#FFC0CB><font SIZE="3"><INPUT TYPE=SUBMIT VALUE="入力・変更"></TD> </FORM> 学籍番号がフレームの1つであるup.aspに渡ってselect文で使えるようにしたいのですが、どうすればよいかわかりません。初心者ですのでわかりやすく教えてください。 (frame.html) <frameset rows="30%,70%"> <frame name="up" src="up.asp"> <frame name="down" src="down.asp"> (up.asp) set rec=db.Execute("SELECT * FROM 生徒データ WHERE 学籍番号=" & Request("RECID"))

  • チェックボックスのデータをdatファイルに保存する方法

    更新記録CGI(perl)を改造中です。 修正画面でチェックボックスにチェックを入れておくと確認画面である文字列を表示させるというのを実現させたいです。 表示させる方はIF文で、 if ($check ==1){普通に表示}else {別の文字列を表示} とすることで何とかなると思うのですが、このチェックボックスの情報の保存方法がよくわかりません。 記事登録処理の部分、 foreach (@data) { ($contents,$date,$year,$month,$day,$comment,$check) = split(/<>/); if ($in{'contents'} eq $contents && $in{'year'} eq $year && $in{'mon'} eq $month && $in{'day'} eq $day && $in{'comment'} eq $comment $in{'check'} eq $check ) { &error("記録済みです"); } } このあたりが、データの保存を指示している場所だと思うのですが、このままだと、datファイルには「in{'check'}」と保存されてしまいます。 これをどうやったらチェックボックスにチェックが入っているという風に保存できるのでしょうか? また、修正画面でチェックボックスにチェックが入っている場合はチェックが入った状態で表示する(その情報表示する)という風にしたいのですが、これまたうまくできません。 多分、 if ($no eq $in{'edit_no'}){~~$e_check = $check;~~} <input type=\"checkbox\" name=\"e_check\" size=5 value=\"$e_check \">\n"; この二つが関係していると思うのですが… 単純に、チェックボックスにチェックを入れて保存したら、datファイルにそのデータが保存され、チェックが入っていれば、修正画面・表示画面にてそれぞれのアクションを起こしてほしいというものです。 抜けてる情報などありましたら指摘してください。すぐに書き込みします。 よろしくお願いします。

    • 締切済み
    • CGI
  • 試験の時の学生証のチェック

    大学の試験の時とかって、 学生証を机の上においておくではないですか? それで先生は紙をみながらチェックしてまわりますが、 あれってどこの部分をチェックしているんですか? 学籍番号と名前と顔ですか? 生年月日もチェックしているのでしょうか? 諸事情により、生年月日が周りにばれたくないので 生年月日のところにすっごく小さなシールを貼っているのですが、 やはり怒られますかね?

  • チェックボックスの入力チェック

    JSPでJavaScript使用しています。 no.logからテキスト(1~80までの数値がランダムに書いてある)を読みこんで、その数字でチェックボックスを作り、チェックの付いている番号を違うJSPに飛ばしています。この時どこもチェックされて無ければメッセージを表示したいのですがうまくいきません。 チェックが付いているのに、チェックされていないと認識され、メッセージが表示されてしまいます。5行目のif文が問題だと思うのですが、どうすればいいのかわかりません。アドバイス下さい。宜しく御願いします。 <script language="JavaScript"> <!-- function check(){ no = document.form1.no.value; if(no == null){ alert("チェックしてください"); return false; } } //--> </script> <form name="form1" method="post" action="test2.jsp" onSubmit="return check()"> <% String str = null; int tmpn = 0; int count = 0; BufferedReader br2 = new BufferedReader(new FileReader(getServletContext().getRealPath("/WEB-INF/no.log"))); while((str = br2.readLine()) != null) { tmpn = Integer.parseInt(str); count++; if(tmpn >= 1 && tmpn <= 9){ %> <input type="checkbox" name="no" value="<%= String.valueOf(tmpn) %>">0<%= tmpn %> <% }else{ %> <input type="checkbox" name="no" value="<%= String.valueOf(tmpn) %>"><%= tmpn %> <% if(count == 10){ out.print("<br>"); count = 0; } } } %> <input type="submit" value="送信">

  • ASPでのチェックボックスの使い方について

    初心者ですみません。 ASPを使い、データベース(mdbファイル)にアクセスし、 データを共有しようとしています。 そのなかで、チェックボックスを使いたいのですが、チェックボックスの 値の取得と、更新時にそれがどうなるのか(ちゃんとチェックが ついた状態で表示されるのか)がわかりません。 フォームには、 <input type="checkbox" name="ビル:受付番号" value="OK"> というように、valueを設定していますが、データベースにこの情報が 格納されるには、 RS("ビル:受付番号") = Request.Form("ビル:受付番号") では「OK」という値は格納されないんですね。 #ちなみに格納先はテキスト型です 別にOKじゃなくても、falseでもなんでもいいんですが、情報が ちゃんとデータベースに反映されるようにまずしたいです。 さらにデータベースに載せた情報は後から更新することも考えられますので、 更新作業をしたときに、ちゃんとOKとなっている部分が チェックボックスにチェックされた状態で表示されることを期待して いるのですが、そういったことも可能でしょうか。 全然勉強不足で申し訳ありません。 こういったことはVBを勉強すればわかるんでしょうか。 何卒ご指南ください。