phpのpostについて

このQ&Aのポイント
  • phpのpostについてうまく値が渡せない場合の解決方法を教えてください。
  • a.phpの値をb.phpにpostする方法について教えてください。
  • post元でname属性に変数を用いている場合、post先でどのように指定すれば良いでしょうか。
回答を見る
  • ベストアンサー

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
  • 回答数3
  • ありがとう数13

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>※$_POST['test' + $i] >これでも取れませんでした 文字列の連結ですから・・・ $_POST['test' . $i] ですね ちなみに今回の例だと ><select name="test<?php echo $data?>"> の個所を <select name="test[<?php echo $data?>]"> としておけば <?php foreach($_POST['test'] as $key=>$test){ echo $key."→".$test."<br>\n"; } ?> で受けられます

k-karasu
質問者

お礼

回答ありがとうございます。 文字連結は普通に使っていたのに・・・ JavaScriptと混ざって間違ってしまいました。 POSTできるました。感謝です!!

その他の回答 (2)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>$_POST['test' + $i] >これでも取れませんでした $test=($_POST['test' . $i]); phpでの + は加算演算子です。phpスクリプトを書いているなら文字列の結合演算子はご存知だと思いますし、わからなければマニュアルを読めばいいのですが・・・ http://php.net/manual/ja/language.operators.string.php

k-karasu
質問者

お礼

回答ありがとうございます。 普通に文字連結実装してました・・・ 他のと混ざって考えてました。

  • t_ohta
  • ベストアンサー率38% (5069/13245)
回答No.1

$test = $_POST['test' . $i]; PHPで文字列連結する際の演算子は . (ピリオド)です。 + だと数値に変換して足し算をしてしまいます。

k-karasu
質問者

お礼

文字の連結は普通に実装してました。 間違って考えてました。

k-karasu
質問者

補足

回答ありがとうございます。 別のところで実装していたのにjavascriptと混合してしまいました。

関連するQ&A

  • PHPで日付の範囲検索

    PHPを使って日付の範囲検索を実装しています。日付をセレクトフォームで選択し、該当する日時をSELECT文で記述するという流れです。イメージは以下のような感じですが、大体合っていますか? <? php if (!empty(filter_input(INPUT_POST, 'day'))) { $day = filter_input(INPUT_POST, 'day'); ・・・・ SELECT 文   ・・・・ ?> <html> <div class="search"> <form method="post"> <select name="year"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> </select> <select name="month"> <?php for ($i=1; $i <= 12; $i++) { $month .= '<option value="'.$i.'">'.$i.'月</option>'; } ?> </select> <select name="day"> <?php for ($i=1; $i <= 31; $i++) { $day .= '<option value="'.$i.'">'.$i.'日</option>'; } ?> </select> <input type="hidden" name="search" value="<?php echo $_POST['year'].'-'. $_POST['month'].'-'. $_POST['date']; ?>"> <input type="submit" value="検索"> </form> </div> </html>

    • ベストアンサー
    • PHP
  • 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
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • PHP 選んだ状態を維持するには

    初心者です。 下記のソースで、ボタンを押すと指定した状態が残らず、元の状態に戻ってしまいます。 現時点では、どんな日付を選んでも2000年1月に戻ります。これをボタンを押しても選んだ状態を維持するにはどうすればよいでしょうか? checkedをどこかに指定すればいいのでしょうか?ご指導をお願いします。 ---------------- <html> <head> <title>test</title> </head> <body> <form method="POST"> <?php echo "<select name=\"yyyy\">"; for ($i = 2000; $i < 2012; $i++) { echo "<option>".$i; } echo "</select> 年 "; echo "<select name=\"mm\">"; for ($i = 1; $i < 13; $i++) { echo "<option>".$i; } echo "</select> 月 "; echo "選択された日付:".$_POST["yyyy"]. "年".$_POST["mm"]."月"; ?> <p><input type="submit" value="送信"> <form> </body> </html>

    • ベストアンサー
    • PHP
  • phpの入力値の渡し方

    ループでテキストボックス、セレクトボックスを作成しそれぞれのコントロールに入力した値を別phpファイルに渡すことを考えています。 ループではなく一個一個テキストボックスを作れば個々のname属性をpostすればいいと思うのですがループの場合、それぞれの入力値をどのように渡せばいいかわかりません。 <test.php> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="style.css" type="text/css" /> <meta name="viewport" content="width=device-width"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>勤怠データ入力</title> </head> <script type="text/javascript"> function myEnter(){ myRet = confirm("入力画面を閉じてよろしいですか?"); } </script> <body> <div id="name"> <table> <tr style="text-align:center; background-color:#DDEBF7;"> </tr> <form name = "Data" action="foo.php" method="POST"> <tr style="text-align:center;"> </tr> </table> </div> <div id="button"> <input type="submit" name ="touroku" value="登録更新" style="margin-right:30px;" /> <input type="submit" value="戻る" onclick="myEnter()" /> </div> <div id="calendar"> <table style="text-align:center;"> <tr style="text-align:center; background-color:#DDEBF7;"> <td style="width:20px;">日</td> <td>開始時間</td> <td>終了時間</td> <td>入力1</td> <td>入力2</td> <td>入力3</td> </tr> <tr><!--1日--> <?php $day = 1; while ($day < 32){ ?> <td><input type="text" readonly value="<?php echo $day ?>" style="width:20px;"</td> <td><select name="start_time" > <option value="0" > 0</option> <option value="1" > 1</option> </select> : <select name="start_minute"> <option value="00" >00</option> <option value="30" >30</option> </select> </td> <td><select name="end_time" > <option value="0" >0</option> <option value="1" >1</option> </select> :<select name="end_minute"> <option value="00" >00</option> <option value="30" >30</option> </select> </td> <td><input type="text" name = "nyuryoku1" value="" style=width:150px></td> <td><input type="text" name = "nyuryoku2" value="" style=width:150px></td> <td><input type="text" name = "nyuryoku3" value="" style=width:150px></td> </td> </tr> <?php $day++; } ?> </form> </body> </html> <foo.php> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <?php $s_hour = ($_POST['start_time']); $s_minutes = ($_POST['start_minute']); $e_hour = ($_POST['end_time']); $e_minutes = ($_POST['end_minute']); $data1 = ($_POST['nyuryoku1']); $data2 = ($_POST['nyuryoku2']); $data3 = ($_POST['nyuryoku3']); $s_time = ($s_hour.$s_minutes); $e_time = ($e_hour.$e_minutes); echo '開始時間'; echo $s_time; echo '終了時間'; echo $e_time; echo '入力1'; echo $data1; echo '入力2'; echo $data2; echo '入力3'; echo $data3; ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> テスト実行 </body> </html>

    • ベストアンサー
    • PHP
  • PHP

    PHPで質問があります。funに「無し」を選択すると結果が?になり文字化けします。なぜでしょうか? <select name="fun"> <option vaue="*">無し</option> <option value="1">01</option> <option value="2">02</option> <option value="3">03</option> <option value="4">04</option> <option value="5">05</option> <option value="0">00</option> </select> </p> <input type="submit" value="設定" /> </form> </body> </html> <?php echo $_POST['fun']; echo " "; echo $_POST['jikan']; echo " "; ?>

    • ベストアンサー
    • 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とhtmlについて

    初心者なりに下のようなプログラムを作ってみましたが、「注文画面へ」のボタンを押しても反応がありません。どうしたらいいでしょうか?教えてください。 あと、注文画面へ行くとボールの個数を選んだ後に出る合計金額を次のページに反映させたいのですが、それもわかりません。もしよければ、こちらも教えてください。 よろしくお願いします。 <html> <head> <title> 商品確認 </title> <script language ="JavaScript"> <!-- function calc(amount){ document.ball.total.value = 4095 * eval(amount); }//--> </script> </head> <body> <form name=ball> V4SLBL ソフトタッチ鈴入り4号球<br> <hr> 個数: <select name ="num" onchange = "javascript:calc(this.value)"> <option value =0>0 <option value =1>1 <option value =2>2 <option value =3>3 <option value =4>4 <option value =5>5 </select> 小計: <input type="text" size="8" name="total">円<br> <hr> <?php $go['V4SLBL ソフトタッチ鈴入り4号球'] = "4,095円"; echo " 商品確認"; echo "<table border=\"1\">"; foreach($go as $key=>$value) echo '<tr><td>'."$key</td><td>$value</td></tr>"; echo '</table>'; echo"<form action=\"m4.php\" method = \"post\"> <input type = \"submit\" value = \"注文画面へ\"></form>"; echo"<form action=\"m1.php\" method = \"post\"> <input type = \"submit\" value = \"戻る\"></form>"; ?> </form> </body> </html>

    • 締切済み
    • PHP
  • phpでのpost送信について

    今、phpを使用して、データベースに格納されている値にリンクを貼り、その先にpostメソッドで値を渡すスクリプトを書いているのですが、formの書き方が悪いと思うのですがsyntax errorが出てしまいます。 echo '<form name='.X.' method='.POST.' action='.$Link_URL.'>'; echo '<input type='.hidden.' value='.$sql_result[$i]["renban"].' name='.primary.'>'; echo '</form>'; echo '<a href='.javascript:document.X.submit().'>'.$sql_result[$i]["title"].'</a>'; このスクリプトは$iの値によってループしています。 $sql_result[$i]["title"]という値にリンクを貼り、$Link_URLにpostで$sql_result[$i]["renban"]という値を送りたいと考えています。 何分初心者なもので、このやり方が最善かどうかもわかりませんが、改善案をご存知の方はご教授お願いします。

    • ベストアンサー
    • 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

専門家に質問してみよう