ReadParseで同名のinput名は配列で処理される?

このQ&Aのポイント
  • ReadParseを使用して同名のinput名が配列で処理されるかどうかについて質問です。
  • フォームパラメータを送信する際、同名のNameを使用した場合、受信側で配列として取得できるのか疑問です。
  • 例えば、textタイプやhiddenで同じ名前のNameを指定した場合、正しく配列として取得できるのか心配です。
回答を見る
  • ベストアンサー

ReadParseで同名のinput名は配列で処理される?

ReadPaeseでパラメータの受け渡しを行うのですが、CheckBoxの場合は、複数データが送れますが、textタイプやhiddenで同名のNameでフォームパラメータを送信した場合、受信側で配列として取得できるのでしょうか? それとも送る側で DATA1 DATA2 DATA3...のようにNameを付けて送信しないといけないのでしょうか? <INPUT text="KAMOKU" VALUE="国語"> <INPUT text="KAMOKU" VALUE="算数"> <INPUT text="KAMOKU" VALUE="理科"> <INPUT text="TEN" VALUE="60"> <INPUT text="TEN" VALUE="80"> <INPUT text="TEN" VALUE="70"> 国語60点と正しく順に取得できるかも心配 最悪これですか?3種ならこれでよいですが、増えると・・・ <INPUT text="KAMOKU1" VALUE="国語"> <INPUT text="KAMOKU2" VALUE="算数"> <INPUT text="KAMOKU3" VALUE="理科"> <INPUT text="TEN1" VALUE="60"> <INPUT text="TEN2" VALUE="80"> <INPUT text="TEN3" VALUE="70"> 以上です。

  • bazax
  • お礼率5% (12/228)
  • Perl
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

use CGI; かなんかで受け取る形でしょうか? cgi-lib.pl かな? 確か配列では入ってこないはずです。 スペース区切り(というか\0区切りだったか?)で入ってくるような気がします。 実際にやってみたほうが早いでしょうね。 あと、INPUTの書式が違います。 <INPUT type="text" name="KAMOKU" value="国語"> としないと駄目です。 単純に数が増えるだけならばforを使用すれば簡単です。 ある程度定義は必要になるかもしれません。 &ReadParse; while (($key,$val) = each %in) { if ($key ne "KAMOKU") { push(@kamoku,$val); } } とかやるのもいいかもしれません。

関連するQ&A

  • 二次元配列のソート方法がわかりません

    下記のデータがあったときに、点数の低い人だけを表示するプログラムを作りたいのです。 ■データ <?php $data[] = array("kamoku" => "国語", "value" => "80", "name" => "島田","class"=>"5組"); $data[] = array("kamoku" => "算数", "value" => "98", "name" => "山田","class"=>"4組"); $data[] = array("kamoku" => "国語", "value" => "70", "name" => "島田","class"=>"5組"); $data[] = array("kamoku" => "理科", "value" => "10", "name" => "鈴木","class"=>"2組"); $data[] = array("kamoku" => "国語", "value" => "68", "name" => "島田","class"=>"5組"); $data[] = array("kamoku" => "理科", "value" => "35", "name" => "斉藤","class"=>"2組"); $data[] = array("kamoku" => "国語", "value" => "18", "name" => "鈴木","class"=>"2組"); $data[] = array("kamoku" => "理科", "value" => "90", "name" => "島田","class"=>"5組"); ?> ■結果(一番低い人だけを表示)   国語 18点 鈴木   算数 98点 山田   理科 10点 鈴木 どのようにソートすればよろしいでしょうか? 教えてくださいますようお願いします。

    • ベストアンサー
    • PHP
  • phpでチェックボックスでの値の表示について

    HTMLで作成したテキスト、セレクト、チェックボックスなどに、選択されたもの全てをPOST送信で受け取って PHPにてパラメータをチェックしてから 確認画面(HTML)に表示してPHPにてDB登録するというプログラムを作ってます。 HTML側で <input type="checkbox" name="genre[0]" value="1" >国語 <input type="checkbox" name="genre[1]" value="2" >算数 <input type="checkbox" name="genre[2]" value="3" >理科  <input type="checkbox" name="genre[3]" value="4" >社会 として例えば、 <?php $genre = $_POST["genre"]; foreach ($genre as $key => $value){ print($value); } ?> で表示するとチェックした数字が表示されます。 (国語をチェックした場合 1) これを 国語 と表示させるにはどうすればいいんでしょうか? DBに登録する際は数字でいいんですが。

    • ベストアンサー
    • PHP
  • 同じ名前が複数あるインプットフィールドの値を取得するには?

    <form action="***" method="post" name="frmTest"> <input name="chktest[0]" type="checkbox" value="c0"> <input name="txttest[0]" type="text" value="t0"> <input name="chktest[1]" type="checkbox" value="c1"> <input name="txttest[1]" type="text" value="t1"> <input name="chktest[2]" type="checkbox" value="c2"> <input name="txttest[2]" type="text" value="t2"> </form> このようなフォームがあった時、例えばtxttest[1]の値をjavascriptで取得する場合、どのように記述すればよいのでしょうか。 document.frmTest.txttest[1].valueでは上手くいきませんでした。 ([document.frmTest.txttest.1はNullまたはオブジェクトではありません]というエラーが発生しました) アドバイスをお願いします。

  • php繰り返し構文とforeache

    PHP5.26 MySQL5 Apache2.2 <html> <head>登録</head> <body> <form action="" method="post"> <input type="submit" value="登録" /> <?php $context=<<<EOF <input type="text" name="name" /><br /> <input type="checkbox" value="" name="国語" />国語<br /> <input type="checkbox" value="" name="算数" />算数<br /> <input type="checkbox" value="" name="理科" />理科<br /> <input type="checkbox" value="" name="社会" />社会<br /> <input type="checkbox" value="" name="道徳" />道徳<br /> EOF; for($i=0;$i<4;$i++) {print $context;} ?> </body> </html> 上記コードを書くと5つループされます。 これをDBに登録する際、insert文を5回繰り返す、科目が複数チェックされていると1つのinsert文のように登録することが出来ません。1つの場合はforeachを使って配列を返す構文まではわかりました。 解決策としてはforeachを使って返された配列をserialize関数を使ってオブジェクト化し、そのまま登録することを考えました。出来ればserializeを使わずに登録したいと思います。 PDOを使用しています。 どうかどなたかお時間御座いましたらご教授お願いします。

    • 締切済み
    • PHP
  • 配列で渡されたチェックボックスの値の処理

    POST元のページから <input type="checkbox" name="hoge[23]" value="1"> <input type="checkbox" name="hoge[31]" value="0"> <input type="checkbox" name="hoge[33]" value="1"> ・・・ のような形でデータが渡されます。 要素一つに付き、ONなのか、OFFなのか、表示されていないのかの判別が必要なため、このような形になっています。 受けるPHP側で、hogeの配列番号と一致したものがあればそれに対する処理を行う必要があります。 $buff=array(20,30,31); となっているとして、 $_POST["hoge"]の配列の値と$buff内の数字が一致したら~ (上記例だと31が一致) の書き方はどう書けばいいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • sqlのVIEWの作り方

    mysqlでviewを作ろうと考えています。 書籍を調べて3日くらい格闘していましたが挫折してしまい アドバイスをいただきたく、質問いたします。 テーブル名: kamoku kamoku_id name ------------------ 001 国語 002 算数 003 理科 004 社会 テーブル名: siken siken_id siken_name kamoku_id1 kamoku_id2 kamoku_id3 ------------------------------------------------------- 000011 試験1回目 001 002 003 000012 試験2回目  001 003 004 000013 試験3回目 001 002 004 000014 卒業試験 003 004 null この2つのテーブルからVIEWを作りたいと考えています VIEW名 siken_kamoku siken_id siken_name kamoku_id1 kamoku_id2 kamoku_id3 ------------------------------------------------------- 000011 試験1回目 国語 算数 理科 000012 試験2回目  国語 理科 社会 000013 試験3回目 国語 算数 社会 000014 卒業試験 理科 社会 科目名を一回で取得できるようなViewを作りたいのですが CREATE VIEW view_siken_kamoku ( siken_id, siken_name, kamoku_name1, kamoku_name2, kamoku_name3 ) AS SELECT siken.siken_id, siken.siken_name, kamoku.kamoku_name, kamoku.kamoku_name, kamoku.kamoku_name WHERE siken_kamoku_id1 = kamoku.kamoku_id AND siken_kamoku_id2 = kamoku.kamoku_id AND siken_kamoku_id3 = kamoku.kamoku_id; 以上の文ですとエラーがでます。 どのような文にすれば、上記のようなVIEWがえられますでしょうか おたすけてください

    • ベストアンサー
    • MySQL
  • POSTデータのNAME属性をVALUEによって取得する方法

    HTML→PHPのPOSTデータのやりとりについて、 【HTML】 <form name="form1" method="post" action="xxx.php"> <input name="01" type="text" value="1"> <input name="02" type="text" value="0"> <input name="03" type="text" value="0"> <input name="04" type="text" value="1"> <input type="submit" name="Submit" value="送信"> </form> 【xxx.php】 フォームから送信されたデータを使って、「value」が"1"の「name」を拾うのにはどのように書けばいいでしょう? ↓このように取得したいです。 $data[0]="01"; $data[1]="04"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQLのデータをPHPで多次元連想配列にしたい

    MySQLのデータを多次元連想配列にする方法を教えて下さい。 下記のような多次元連想配列のデータがあります。 これと同様のMySQLに登録されたデータから多次元連想配列を作りたいと思います。 $test= array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90"), ); print_r($test); ---print_r($test)の結果--------------------------------- Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) ) -------------------------------------------------------- これと同様のデータをMySQLに作成します。 テーブル名:test 列名:id,kamoku,tensu MySQLからデータを取得 try { $dbh = new PDO($DSN , $DBUSER , $DBPASS); $query = select * from test $stmt = $dbh->prepare($query); $stmt->execute(); while($result = $stmt->fetch(PDO::FETCH_ASSOC)) { $id = ($result['id']); $kamoku = ($result['kamoku']); $tensu = ($result['tensu']); } } catch(PDOException $e) { print "Error!: " . $e->getMessage() . "<br>"; die(); } このソースの中で何らかの処理をして print_r($test); を実行したときに ---print_r($test)の結果--------------------------------- Array ( [0] => Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) [1] => Array ( [id] => 2 [kamoku] => 理科 [tensu] => 88 ) [2] => Array ( [id] => 3 [kamoku] => 国語 [tensu] => 90 ) ) -------------------------------------------------------- というような、文頭で記載したものと同じ結果を得たいと思います。 while内で print_r($result);を行うと1行ずつ下記のような連想配列 Array ( [id] => 1 [kamoku] => 算数 [tensu] => 70 ) が取得できているのでこれを連結させて $test_sample=<<<EOF array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") EOF; という配列の中身は作ることができました。 (1)ケース1 $test=array($test_sample); print_r($test); としてもダメで、 Array ( [0] => array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90") ) というようにうまく多次元連想配列になっていません。 (2)ケース2 $test='array('.$test_sample.')'; print_r(test); としてみたところ、 array( array("id" => "1","kamoku" => "算数","tensu" => "70"), array("id" => "2","kamoku" => "理科","tensu" => "88"), array("id" => "3","kamoku" => "国語","tensu" => "90")) というように配列ではなく単なる文字列として表示されてしまいます。 配列の中身を変数で扱う時には特別な記述法などがあるのでしょうか?

    • ベストアンサー
    • PHP
  • AJAXでのinputもしくはoptionなどのテキスト取得

    お知恵を貸して下さい。。。 今、フォームの各項目を選択してる場合(たとえば、checkedがついてる場合)その要素のテキスト部分を別部分に出力してーというのをjQueryで作ってます。 inputのvalue値やnameは取ってこれるんですが、<input>タグの後のテキスト部分がなかなか思うように取得出来ませんでした。 PHPでのフォームで下記のようにしてるので、どうしてもinputの後のテキストを取りたいのです。(下記の場合、パソコンという部分) ↓ <input type=checkbox name="NAM[1]" value="1">パソコン <input type=checkbox name="NAME[2]" value="1">パソコン <input type=checkbox name="NAME[3]" value="1">パソコン いろいろ試してみたんですけど、そもそのやろうとしてる事は可能なのでしょうか? 説明が下手でごめんなさい、どうぞよろしくお願いします。

    • ベストアンサー
    • AJAX
  • 指定のinputに入力

    恐れいります。 <form action="./xxx.cgi" method="POST"> <input type="text" name="name1"> <input type="text" name="name2"> <input type="text" name="name3"> <input type="text" name="name4"> <input type="text" name="name5"> <input type="submit" value="送信"> </form> と、5つの入力欄があり、別ウィンドウから、指定の場所に代入することは可能でしょうか。例えば、name1のエリアに、別ウィンドウからformで「test」という文字を送信して入力する感じです。 よろしくお願いします。