PHPの入力フォームの質問です。


HTMLで
<form action="test.php" method="POST">
名前: <input type="text" name="xxx" value="名前" />
年齢: <input type="text" name="xxx" value="年齢" />
<input type="submit">
</form>

としたときに
test.php
<?= $_POST["xxx"]; ?>
で得られるのは「年齢」で入力した値です。

「名前」は取得できないのでしょうか?

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2006/06/21 17:25:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:heppokoA No.5

回答回数65ベストアンサー獲得回数7

ポイント35pt

すいません。追加で。

<form action="test.php" method="POST">

名前: <input type="text" name="xxx" value="名前" />

年齢: <input type="text" name="xxx" value="年齢" />

<input type="submit">

</form>

で,

test.php

----------

<?php print readfile("php://input"); ?>

----------

とすると確認可能です。

id:pipi_n

僕がやりたかったことは、これで万事解決です!

ありがとうございました!

2006/06/21 17:20:01

その他の回答4件)

id:exflower No.1

回答回数74ベストアンサー獲得回数9

ポイント20pt

<form action="test.php" method="POST">

名前: <input type="text" name="xxx1" value="名前" />

年齢: <input type="text" name="xxx2" value="年齢" />

<input type="submit">

</form>


上記の様にname内の値をユニークなものにして、

PHP側で、以下のように取り出してみてもダメですか?


名前の場合

<?= $_POST["xxx1"]; ?>

年齢の場合

<?= $_POST["xxx2"]; ?>


pipi_nさんの記述されている方法ですと、

どんなに項目があっても、$_POST["xxx"]が延々と上書きされてしまい、

結果、$_POST["xxx"]には一番最後に入力させた値しか入らない、という事になってるんだと思います。

id:pipi_n

so-netのblogの設定でカテゴリを一気に書き換えることができるんですよ。

で、ソースを見たらname属性が全部同じなのに、そんなことできるのかなぁと思いまして。

formで飛んだ先で工夫しているんですかね?

以下so-netのソース

<script language="JavaScript"></p> <p> //<!--</p> <p> function setSubmitNumber(submitForm, submitNumber, submitType) {</p> <p> submitForm.submitNumber.value = submitNumber;</p> <p> submitForm.submitType.value = submitType;</p> <p> //submitForm.action();</p> <p> }</p> <p> //--></p> <p> </script>

カテゴリー編集

現在登録されているカテゴリー

カテゴリー名 移動 削除
未分類 3件の記事が登録されています
14件の記事が登録されています
21件の記事が登録されています
4件の記事が登録されています

2006/06/21 16:32:43
id:ixcy No.2

回答回数5ベストアンサー獲得回数0

ポイント5pt

name="xxx"が同じなので、後の年齢が上書きされて取得している状態ですね。


<form action="test.php" method="POST">

名前: <input type="text" name="name" value="名前" />

年齢: <input type="text" name="age" value="年齢" />

<input type="submit">

</form>


test.php

<HTML>

<BODY>

名前:

年齢:

</BODY>

</HTML>

とされると、うまくいくと思います。

id:ito-yu No.3

回答回数323ベストアンサー獲得回数14

ポイント10pt

名前は取得できません。

どうしても同じnameで取りたい場合、配列で取得する方法もあります。

<form action="test.php" method="POST">

名前: <input type="text" name="xxx[]" value="名前" />

年齢: <input type="text" name="xxx[]" value="年齢" />

<input type="submit">

</form>

これで $_POST['xxx'] には array(名前, 年齢); が入ります。

id:heppokoA No.4

回答回数65ベストアンサー獲得回数7

ポイント30pt

xxxのところをnameとかageにして分けるのがいいと思いますが,どうしてもという場合には,PHPマニュアルより,

php://input は、POST の生データの読み込みを 許可します。これは $HTTP_RAW_POST_DATA に比べて メモリ消費量が少なく、特別な php.ini ディレクティブを設定する 必要がありません。php://input は、 enctype="multipart/form-data" に対しては 使用できません。

のとおり php://input を使ってPOSTデータを生でとると一応"xxx=値" の組が二つあると思うのでそこから無理矢理パースするとできそうです。

id:heppokoA No.5

回答回数65ベストアンサー獲得回数7ここでベストアンサー

ポイント35pt

すいません。追加で。

<form action="test.php" method="POST">

名前: <input type="text" name="xxx" value="名前" />

年齢: <input type="text" name="xxx" value="年齢" />

<input type="submit">

</form>

で,

test.php

----------

<?php print readfile("php://input"); ?>

----------

とすると確認可能です。

id:pipi_n

僕がやりたかったことは、これで万事解決です!

ありがとうございました!

2006/06/21 17:20:01

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません