dポイントプレゼントキャンペーン実施中!

テキストボックスの内容を送信する事は成功しました。
しかし複数のテキストボックスはできませんでした。
<h1>PHPのテストです</h1>
<form action="9.php" method="POST">

<p><input type="text" size="20px" name="ad1"></p>
<p><input type="text" size="20px" name="ad2"></p>

<p><input type="submit" value="送信"></p>

<?php
print"ようこそ";
print$_POST["ad1"];
print$_POST["ad2"];

print"様";
?>


</form>


これは間違いでしょうか?
エラーもでてました

Notice: Undefined index: ad1 in C:\xampp\htdocs\6.php on line 37

Notice: Undefined index: ad2 in C:\xampp\htdocs\6.php on line 38

とでてます

すいません いつもいつも

入力された内容を受け取るという作業ができれば
なんとなく一応目標達成だとおもいます

A 回答 (10件)

> つまりページをアップロードする際、こうしたアンケート用紙などは


> PHPファイルとしてつくりアップロードするという事になるのではないか?
> と思うのです。

「アンケート用紙」とはアンケート項目が書かれたフォームのあるページの事でいいでしょうか。
フォームに記入されたデータを受取るページはPHP等で書かれたプログラムで無ければ処理できません。
しかし、フォームの項目や選択肢が変化しないのであればHTMLで書いてフォームのaction先をPHPのファイルにすると送れます。
もし、アクセスしている人に合わせて項目が変化したり、名前などを予めフォームに記入された状態で表示したのであればフォームの表示自体をPHPで処理する必要があります。


> 今回の質問ではテキストボックスの送信は万事上手くいっておるんです。
> 質問としてはただの文字、例:おはようございます
> という字をテキストボックス以外で送る方法をお聞きしたいのです。

「おはようございます」をフォームで次のページへ送るという意味でしょうか?
であれば
<input type="hidden" name="hello" value="おはようございます">
でいいのではないですか。
これならフォームのデータを受け取ったページの$_POST{"hello"]に「おはようございます」が入ってきます。
もし、フォームに埋め込むのが嫌なのであればセッション機能を使って遷移先のページへデータを引き継ぐ事も出来ます。


> も一点、このやりかただと字が連続しでてしまって、みずらいです
> <br>か<¥n>などのことで段区切りみたいのはできないのでしょうか?

<?php
print "ようこそ<br>".$_POST["ad1"]."<br>".$_POST["ad2"]."<br>様";
?>
と<br>を改行したい場所でprintするだけす。

この回答への補足

>フォームのaction先をPHPのファイルにすると送れます。

でも送る際printとかの関数が必要ですよね。
でないと受け取り側がechoで取り込めませんし、
こういう場合はいいんでしょうか?

でもなんとなく送り先が特定できれば、文字が送れてるって事なんでしょうかね。

これが二番の話にもなりますが

print "ようこそ<br>".$_POST["ad1"]."<br>".$_POST["ad2"]."<br>様";

とそのまま貼り付けて実行しましたが、やはり様がでてこないんですよ。
なんでなんだろうと思います。

送り先ではテキストボックスだけがでてくる状態ですしどうも<br>もきいてなかったです

補足日時:2014/06/29 00:06
    • good
    • 0

識別できないと言っているのは、HTML内での位置を指定してPHPからデータを出力できないと言う事でしょうか。



PHPはHTMLの好きな位置にプログラムを埋め込んで実行できる言語なので、HTML内でプログラムからデータを出力したい位置に echo や print 文で書き出すようにします。

例えば

<?php
$title = "PHPのテストです";
?>
<html>
<body>
<h1><?php print $title; ?></h1>
</body>
</html>

といった具合です。
プログラム内からDOMの位置を指定する必要はありません。

print $_POST["ad1"]; は <input type="text" size="20px" name="ad1"> のvalueをセットする命令ではありません。
あくまでもprint文が実行された位置に $_POST["ad1"] という配列変数の中身を出力しています。
このあたりを勘違いされているのでしょうか。

この回答への補足

しつこいようですいません
>単純なHTMLだけのページはHTMLだけでも問題ありません。

お聞きしたいのはそういう事ではなくでですね、例えばアンケートなんかは
PHPでないとその結果内容がこちらにわからなくて集計できませんよね。
でもそれはPHPファイルだからだきる事であって、HTMLのファイルではできな
いわけですね。

つまりページをアップロードする際、こうしたアンケート用紙などは
PHPファイルとしてつくりアップロードするという事になるのではないか?
と思うのです。


>「受け取り側echo」とは何の事を仰っているのでしょうか?

今回の質問ではテキストボックスの送信は万事上手くいっておるんです。
質問としてはただの文字、例:おはようございます

という字をテキストボックス以外で送る方法をお聞きしたいのです。

echo$_POST['ad1'];

これが受け取り手のプログラムですよね。
これはテキストボックスの事を指定してますよね。

でも様というただの字には識別する為の名前もありません。
だから送れないと思うのです。

名前の際、テクストボックスに○○その後ろに様なんてつけたい場合
これだとできない事になります。

も一点、このやりかただと字が連続しでてしまって、みずらいです
<br>か<¥n>などのことで段区切りみたいのはできないのでしょうか?

補足日時:2014/06/28 21:00
    • good
    • 0

> 質問1 しかしですね、PHPを作動させるにはPHPのファイルでなければならないですよね。


> 例えば申込用紙を作る際、PHPで作らなければならないんでしょうか?
> 例えば、HTMLで作っておいて後にファイルをPHPに変えるとかにするんでしょうか?

プログラムによる処理が必要ない所はPHPである必要はありません。
単純なHTMLだけのページはHTMLだけでも問題ありません。


> 質問2 テキストボックスのやつではなく”様”にはそれを示す目印?みたいのが
> 無い為に、受け取り側echoにはなにも入らないのではないでしょうか?

「print "様";」は「様」という文字を出力しているだけです。
プログラマーが指定した文字を、その場所に書き出しているだけですので、特に目印は必要ないと思いますが。

「受け取り側echo」とは何の事を仰っているのでしょうか?

この回答への補足

>単純なHTMLだけのページはHTMLだけでも問題ありません。

でもですね、アップしているページはHTMLだとすると
PHPじゃないとその書き込んだ内容は受け取れないわけですよ。
print$_POST["ad1"];というプログラムが必要なわけで
これはPHPですよね。HTMLでないわけですよ。


「print "様";」は「様」という文字を出力しているだけです。

そうです。

つまり6→9に例えばファイルを送ろうとした場合

echo$_POST['ad1'];

となるわけで

様はべつに字なだけで、テキストボックスの中ではないので
識別できないと思うのです。

こういう場合javascriptの場合ノードでなく例えば
getElementByIdとかID属性でこれを指定するわけですけど
PHPでは文字だけを送るのはどうしたらよいでしょうか?

補足日時:2014/06/28 01:12
    • good
    • 0

> 質問1.これはPHPファイルに書いてますよね。


> でも本来HTMLのテキストな訳ですよね。
> これはどういう事なんでしょうーか?
> ページとしてはPHPのファイルで実際HTML?
> どっちでやるもんなんでしょうーか?

PHPはプログラムがWebサーバ上で実行され、その結果がHTMLに埋め込まれてWebサーバから送られてきます。
ブラウザが受け取った時点ではHTMLデータとなっています。

JavaScriptだとプログラムごとブラウザが受け取り、ブラウザ上(閲覧者のPCサイト上)でプログラムを実行しますのでユーザーの操作を直接そのページに反映できますが、PHPは一旦サーバにデータを送ってサーバ上で処理をしてもらわないと結果が反映されません。

この辺りの、動作原理をちゃんと理解できていますでしょうか。


> 質問2.たぶんこれがここで躓いている要因のような気がします。
> テキストボックスには識別名が入ってます。
> これを送る。これはわかるんです。
> しかしprintの文字の部分には識別名がないですよね。
> あいてはつまり受け取るときにecho[識別名]で認識してますよね。
> たぶんみなさんがおっしゃりたい事と関係があるんではないでしょうか?

識別名と言っているのはinputタグのname属性のことでしょうか?
「print $_POST["ad1"];」という処理は、ブラウザからPOSTメソッドで送信されて来た、name属性が "ad1" のデータをprintするとい処理です。
ちゃんと識別名が入っていますよ。

この回答への補足

質問1 しかしですね、PHPを作動させるにはPHPのファイルでなければならないですよね。
例えば申込用紙を作る際、PHPで作らなければならないんでしょうか?
例えば、HTMLで作っておいて後にファイルをPHPに変えるとかにするんでしょうか?


質問2 テキストボックスのやつではなく”様”にはそれを示す目印?みたいのが
無い為に、受け取り側echoにはなにも入らないのではないでしょうか?

補足日時:2014/06/27 22:54
    • good
    • 0

> 送信前という事です。



送信していないデータをプログラムは受け取ることはできません。
$_POST に入ってくるデータは、そのページを表示する前のページのフォームから送信されたデータになります。

この回答への補足

ちょっとこれまでの事で疑問が出てきました。
違う質問ですがやっぱりif関数は出てこなかったです。

そこで思った事ですが

質問1.これはPHPファイルに書いてますよね。
でも本来HTMLのテキストな訳ですよね。
これはどういう事なんでしょうーか?
ページとしてはPHPのファイルで実際HTML?
どっちでやるもんなんでしょうーか?

質問2.たぶんこれがここで躓いている要因のような気がします。
テキストボックスには識別名が入ってます。
これを送る。これはわかるんです。
しかしprintの文字の部分には識別名がないですよね。
あいてはつまり受け取るときにecho[識別名]で認識してますよね。
たぶんみなさんがおっしゃりたい事と関係があるんではないでしょうか?

補足日時:2014/06/27 21:13
    • good
    • 0

> array(0) { } とでました。



と言う事は、フォームから何も送信されてきていないと言う事です。

そもそも、
  <form action="9.php" method="POST">
と、フォームからの送信先は「9.php」で、エラーが出ているのは
  Notice: Undefined index: ad1 in C:\xampp\htdocs\6.php on line 37
「6.php」とファイル名が異なっています。

エラーが出るのは送信ボタンを押した後の画面なんですか?
それとも送信ボタンを押す前ですか?

この回答への補足

いちおうテキストボックスの入力したのは成功したんですが、

テキストボックス以外と文字が連続してでて読みずらいですし、
エラーがでます。

送信前という事です。エラーがでるのは、
まあ送信自体に問題はなくなったのですが
エラーがでてるのがきになりますし、
テキストボックス以外の文字がおくれませんでした。

補足日時:2014/06/27 11:02
    • good
    • 0

……んーと、ひょっとしてご呈示のプログラムってエラーメッセージからすると、


http://oshiete.goo.ne.jp/qa/8651711.html
の質問の 6.php の方に書いてますよね?

はっきり言います、6.php の内容は
<body>
<h1>PHPのテストです</h1>
<form action="9.php" method="POST">

<p><input type="text" size="20px" name="ad1"></p>
<p><input type="submit" value="送信"></p>

<?php
print"ようこそ"
?>

</form>
</body>
</html>
のままで変更しません。

そのかわり、9.php の方を
<body>
<h1>PHPのテストです</h1>
<?php
print "ようこそ";
print $_POST["ad1"];
print $_POST["ad2"];

print "様"; ?>

</body>
</html>
にしてください。
    • good
    • 0

そもそも



>print"ようこそ";
>print$_POST["ad1"];
>print$_POST["ad2"];
>
>print"様";

この記述はPOSTされたときだけでいいハズですよね?

if ($_POST) {
print "ようこそ";
print $_POST["ad1"];
print $_POST["ad2"];

print "様";
}


というか、この表示をform要素の内側に書くセンスが理解できない。普通は(特に何も意識しなければ)</form>の後ろ(もしくは<form>の前)に書きますけどねぇ・・・
    • good
    • 0

Noticeは通知とか警告という意味です。

(エラーではない)

表示したくなければ、iniファイルで出力させないように設定するか、
if(is_set($_POST["ad1"])){
print $_POST["ad1"];
}


過去質問・・またはエラーそのままでぐぐりましょう・・
    • good
    • 0

Undefined index: ad1 って言われてますから正しくPOSTされてきていませんね。


var_dump($_POST);
を実行してみて、意図した通りの名前と値でデータが送られてきているか確認しましょう。

この回答への補足

array(0) { } とでました。
array(0) { } ようこそ
Notice: Undefined index: ad1 in C:\xampp\htdocs\6.php on line 38

Notice: Undefined index: ad2 in C:\xampp\htdocs\6.php on line 39


という具合です

補足日時:2014/06/26 23:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!