POSTの配列名に変数を使用したい

このQ&Aのポイント
  • 質問内容は、$_POSTの配列名に変数を使いたい場合の正しい書き方についてです。
  • 質問者は、入力フォームで生成されたセレクトボックスの選択値を保持するため、$_POSTの配列名に変数を使用したいと考えています。
  • しかし、質問者の試みではシンタックスエラーが発生し、解決策がわからない状況です。
回答を見る
  • ベストアンサー

POSTの配列名に変数を使用したい

お世話になります。 ↓このあたりを見てみたのですが解決せず。。。 http://ml.php.gr.jp/pipermail/php-users/2002-February/005209.html --質問内容-------------------------------------------------------------------- ●$_POSTの配列名に変数を使いたい場合は、どのように書くのが正しいのでしょうか? ------------------------------------------------------------------------------ --状態------------------------------------------------------------------------ <? 1 for($a = 1; $a < 11; $a++) { 2 echo '<select name="item' . $a . '_count">' . "\n"; 3 for($i = 0; $i < 11; $i++) { 4 echo '<option value="' . $i . '">' . $i . '</option>' . "\n"; 5 } 6 echo "</select>\n"; 7 } ?> 上記は入力フォームの一部で、セレクトボックスを10個ほど吐き出しています。 このフォームの他の項目でエラーがあった際に、 選択していた値がページロード時に選択されるようにしたいと思っています。 その際は、 if ($i === $_POST[item . $a . _count]){ echo 'selected="selected"'; } か、 if ($i === $_POST[item . $a . _count]) echo 'selected="selected"'; を4行目の辺りに加えれば良いかなと思い、 付け加えてみるのですが、シンタックスエラーが出てしまい、 訳がわからなくなってしまいました。 ------------------------------------------------------------------------------ お手数ですが、ご教授いただければ幸いです。

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • koke29
  • ベストアンサー率58% (114/196)
回答No.3

連投失礼します 4~5行目を以下のようにすれば、たぶん欲しい動作になると思います echo '<option value="' . $i.'"'; if ($i === $_POST["item" . $a . "_count"]){ echo 'selected="selected"';}

yuko8320
質問者

お礼

冷静に考えれば確かにそうですね・・・。 ありがとうございます!! お蔭様でスッキリしました!!!

その他の回答 (2)

  • koke29
  • ベストアンサー率58% (114/196)
回答No.2

サンプル実行してみたところ 5 if ($i === $_POST["item" . $a . "_count"]){ echo selected="selected"; } ここが引っかかってました echo selected="selected"; ここをシングルクォートで囲えばOKだと思います でも、実行したファイルのセレクト内の値は1,3,5,7,9 が 複数繰り返すような内容でしたが あれで良いのでしょうか??

  • march4
  • ベストアンサー率50% (12/24)
回答No.1

回答ではありませんが、 もう少し情報が多いと答えやすいかなと思います。 具体的には、 どの行でシンタックスエラーが出ているのか、 そして、その内容(英文)はどんなものか、 これらが欲しい所です。(コピペされるだけで結構かと) それと、 $_POST[item . $a . _count] の部分は、 $_POST["item". $a ."_count"] とした方が良いと思います。 クオテーションでくくらない場合、 Noticeが吐かれますので、ご注意下さい。 情報が多ければ、レスもつきやすいかなと思います^^

yuko8320
質問者

補足

失礼いたしました!! 実際に試しているソースは↓です。 <? 1 for($a = 1; $a < 11; $a++) { 2 echo '<select name="item' . $a . '_count">' . "\n"; 3 for($i = 0; $i < 11; $i++) { 4 echo '<option value="' . $i . '"; 5 if ($i === $_POST["item" . $a . "_count"]){echo selected="selected";} 6 echo '>' . $i . '</option>' . "\n"; 7 } 8 echo "</select>\n"; 9 } ?> で吐き出しているエラーは、 Parse error: syntax error, unexpected '<' in ~~~/test/test.php on line 7 となります。 if文の書き方が悪いのかな~と思っているのですが。。。 宜しくお願い致します。

関連するQ&A

  • PHP タイムスタンプ

    タイムスタンプで値を取得して、比較するプログラムなのですが、なぜか $time = mktime(0, 0, $_POST['hh'], $_POST['dd'], $_POST['mm'], $_POST['yyyy']); の値が”-1”で返ってきてしまいます。 何故でしょうか? <?php echo "<select name=\"yyyy\">"; for ($i = 2010; $i < 2012; $i++) { $selected=$i==$_REQUEST["yyyy"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 年 "; echo "<select name=\"mm\">"; for ($i = 1; $i < 13; $i++) { $selected=$i==$_REQUEST["mm"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 月 "; echo "<select name=\"dd\">"; for ($i = 1; $i < 32; $i++) { $selected=$i==$_REQUEST["dd"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 日 "; echo "<select name=\"hh\">"; for ($i = 0; $i < 24; $i++) { $selected=$i==$_REQUEST["hh"]?" selected":""; echo "<option value=\"{$i}\"{$selected}>{$i}</option>\n"; } echo "</select> 時 <br />"; $time = mktime(0, 0, $_POST['hh'], $_POST['dd'], $_POST['mm'], $_POST['yyyy']);

    • ベストアンサー
    • PHP
  • phpのセレクトボックスの配列について

    お世話になっています。 PHPのセレクトボックスの設定でわからないことがあります。 一度質問させていただいたのですが連なる点でわからないとこが出たので質問させていただきます。 不明点は3つあります。 1.セレクトボックスの値を配列で設定する 配列で設定しておけばその配列を複数使用しても参照配列さえメンテすればいいと思うので配列を想定しています 2.配列で設定したときのセレクトボックスの初期値について セレクトボックスの値をベタ書きしている場合は単にselectedすればいいと思うのですが配列の場合厳密なselectedの方法が不明です 3.配列での選択値をPOSTした場合 3つめが最もはまっています以下のソースだと選択値が配列の値が表示されますし、初期値も表示できていますが POSTした値がまともに渡されていません POST先でDB処理を想定しているのですがdate型だとすべて[00:00:00]になってしまいます。 配列を使用しないパターンだと1.2.3全てうまくいくのですがメンテナンスがしづらいので配列で指定したいです 何か、良い方法があればご教授ください //配列の値 $time = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ); $minute = array ("00", "15", "30", "45"); for( $a=0; $a < count( $time_array ); $a++){ $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; } for($a=0; $a < count($minute_array); $a++){ $selectedStartMinute =($start_minute[$j] == $minute_array[$a])?" selected":""; $startMinuteSelectBox .="\<option value=\"{$minute_array[$a]} \"{$selectedStartMinute}>{$minute_array[$a]}</option>\n"; } <td><select name="start_time<?php echo $day ?>" onblur = "func()"> <?php echo $startTimeSelectBox ?> </select> : <select name="start_minute<?php echo $day ?>" onblur = "func()"> <?php echo $startMinuteSelectBox ?> </select> </td> かなり詰まっています。よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのpostについて

    a.phpの値をb.phpにpostしたいのですがうまく値が渡せません post元にはname属性に変数を用いているのですがpost先でnameをどのように指定したらいいかわかりません <a.php> <form action="foo.php" method="POST"> <div id="button"> <input type="submit" name ="PostGo" value="postTime" style="margin-right:30px;" /> </div> <table> <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 </select> <?php } ?> </table></form> <b.php> <?php for($i=1;$i<5;$i++){ $test =($_POST['test']);←ここの部分のpostをどう指定したらいいかわかりません echo $test; } ?> ※$_POST['test' + $i] これでも取れませんでした

    • ベストアンサー
    • PHP
  • phpの値の受け渡し方法について

    b.phpの <dl> <form action='a.php' method='post'> <dt>生年月日</dt> <dd> <select name="Y"> <?php $start = 1920; //始まりの年 $end = 2020; //終わりの年 $select = 2000; //最初に選択された状態で表示したい年 for ($i=$start;$i<=$end;$i++){ if($i==$select){ echo "<option value=\"$i\" selected=\"selected\">$i</option>\n"; }else{ echo "<option value=\"$i\">$i</option>\n"; } } ?> </select> 年 <select name="M"> <?php for ($i=1;$i<=12;$i++){ echo "<option value=\"$i\">$i</option>\n"; } ?> </select> 月 <select name="D"> <?php for ($i=1;$i<=31;$i++){ echo "<option value=\"$i\">$i</option>\n"; } ?> </select> 日 </dd> </dl> <input type="submit" value="送信する" /> </form> というコードで取得した生年月日をa.phpに渡し、表示させます。 a.phpファイルで <?php print('誕生日は:' . ($_REQUEST['Y']. '年',ENT_QUOTES)); print(($_REQUEST['M']. '月',ENT_QUOTES)); print(($_REQUEST['D']. '日',ENT_QUOTES)); ?> と、コードを入力しましたら、 誕生日は:1985年1月31日 という値を受け取り、ブラウザ上で表示することはできたのですが、他のコードで表示する方法はないのかと考えております。 もし、他のコードで表示できる方法がありましたらぜひ教えてください。お願いします。

    • ベストアンサー
    • PHP
  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP
  • エレメントclass?の値をPHPの変数に入れる

    Aタグをクリック→jsが発動(ajaxでphpにpostでエレメントID?を投げる)→phpでエレメントIDを受け取って処理 phpで処理した結果→jsに返す(ajaxの指定したエレメントclass?に渡すよう設定)→取得 selectの範囲の中なんですが、$stausにclass='edit_status'の結果を入れるにはどうしたらいいでしょうか。 <select>   <option <?php $status=."class='edit_status'".; if($status == 1){ echo "selected"; }?> >下書き</option>   <option <?php $status=."class='edit_status'".; if($status == 2){ echo "selected"; }?> >非公開</option>   <option <?php $status=."class='edit_status'".; if($status == 3){ echo "selected"; }?> >公 開</option> </select> id <input type='text' value='1111' id='eid' class='edit_id'>

    • ベストアンサー
    • PHP
  • 変数名を変数で指定するのに$_POST[

    http://oshiete1.goo.ne.jp/qa2691790.html の#1さんに,変数名を変数で指定できることを教わりました. 下記の3行目のように,です. for ($i=1;$i<=5;++$i){ if (${"var".$i}=="") { ${"errMsg".$i}=$i."が未入力"; } } ここで, (1) $_POST["form"] には「str」という文字列が入っています. (2) $Var には「10」という数値が入っています. (3) これらを結合し, どうしても $_POST["str10"] みたいな変数を作らなければならないのですが, ・<? echo $_POST["str" . $Var]; ?>では何も起こらず. ・<? echo $_POST[{"str" . $Var}]; ?>などと{}で括っても, Parse error: parse error, unexpected '{', expecting ']' in C:\temp.php on line 10. みたいなエラーになります. どういうのが正しい書き方でしょうか?

    • 締切済み
    • PHP
  • PHP

    HTML文ですが、これをPHPでループで回して無駄なコーディングを直したい。 どうしたらいいですか? <select name="nhour"> <option value="0" <?php if($nhour == '0') echo"selected"; ?>>0</option> <option value="1" <?php if($nhour == '1') echo"selected"; ?>>1</option> <option value="2" <?php if($nhour == '2') echo"selected"; ?>>2</option> <option value="3" <?php if($nhour == '3') echo"selected"; ?>>3</option> <option value="4" <?php if($nhour == '4') echo"selected"; ?>>4</option> <option value="5" <?php if($nhour == '5') echo"selected"; ?>>5</option> </select>

    • ベストアンサー
    • PHP
  • スマホサイトでの画像をPOST

    スマホサイトで画像アップロードのフォームを作成しています。 5つほど添付できるようにしています。 form.php <form action="./send.php" method="post" enctype="multipart/form-data" novalidate="novalidate"> 画像<br> <?php for($i = 1; $i <= 5; $i++) { echo '<input type="hidden" name="item_img_name[' .$i. ']" value="' .$_SESSION['item_img_name'][$i]. '">'."\n"; echo '<input type="file" name="item_img[' .$i. ']" id="item_img_' .$i. '" value=""><br>'."\n"; } ?> <input type="submit" value="送信"> </form> 以上の内容でフォームを作成しております。 問題なのが、サブミットした際send.phpに切り替わるのがかなり遅く大変困っています。 1つにつき2MGの画像サイズを早くPOSTさせる方法はありませんでしょうか。

    • 締切済み
    • PHP
  • php メールフォーム プルダウンメニュー

    現在PHPにてメールフォームを作成しております。 フォーム→確認画面→送信という順に作成しています。 フォームの段階でプルダウンを作成していますが、確認画面でフォームの内容(プルダウンの項目)を表示させようとしたときに、そのまま表示されず、1年4月1日などと表示されます。 例→フォームでは1990年04月10日としたら確認画面では1年4月1日。 1990年04月10日のように表示させたい。 確認画面でどのように記述したらよろしいでしょうか? フォームの記述は <?php if (count($_POST) > 0) { $year = @$_POST['year']; $month = @$_POST['month']; $day = @$_POST['day']; } print '<select name="year">' . "\n"; $start = date('Y') -20; $end = date('Y') -10; for ($i = $start; $i <= $end; $i++) { print '<option value="' . $i . '">' . $i . '</option>' . "\n"; } print '</select>年' . "\n"; print '<select name="month">' . "\n"; for ($i = 1; $i <= 12; $i++) { print '<option value="' . $i . '">' . $i . '</option>' . "\n"; } print '</select>月' . "\n"; print '<select name="day">' . "\n"; for ($i = 1; $i <= 31; $i++) { print '<option value="' . $i . '">' . $i . '</option>' . "\n"; } print '</select>日' . "\n"; ?> です。 確認画面のスクリプトは $year = isset($_POST['year']) ? $_POST['year'][0] : NULL; $month = isset($_POST['month']) ? $_POST['month'][0] : NULL; $day = isset($_POST['day']) ? $_POST['day'][0] : NULL; と<?php print h($year[0]) ;?>年<?php print h($month[0]) ;?>月<?php print h($day[0]) ;?>日 です。 またセッションも使用しております。 $_SESSION['year'] = $year; $_SESSION['month'] = $month; $_SESSION['day'] = $day; です。 ご教授お願いします。

    • ベストアンサー
    • PHP