- ベストアンサー
PHPのテストでテキストボックス送信が成功したが複数のテキストボックスはできない
- PHPのテストで、テキストボックスの内容を送信することは成功しましたが、複数のテキストボックスは作成できませんでした。
- 質問者は、PHPのテストでテキストボックスの内容を送信することはできたが、複数のテキストボックスを作成することができなかったと述べています。
- 質問者は、PHPのテストでテキストボックスの送信は成功したが、複数のテキストボックスを作成することができなかったと困惑しています。
- みんなの回答 (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するだけす。
その他の回答 (9)
- t_ohta
- ベストアンサー率38% (5238/13705)
識別できないと言っているのは、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>などのことで段区切りみたいのはできないのでしょうか?
- t_ohta
- ベストアンサー率38% (5238/13705)
> 質問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では文字だけを送るのはどうしたらよいでしょうか?
- t_ohta
- ベストアンサー率38% (5238/13705)
> 質問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にはなにも入らないのではないでしょうか?
- t_ohta
- ベストアンサー率38% (5238/13705)
> 送信前という事です。 送信していないデータをプログラムは受け取ることはできません。 $_POST に入ってくるデータは、そのページを表示する前のページのフォームから送信されたデータになります。
補足
ちょっとこれまでの事で疑問が出てきました。 違う質問ですがやっぱりif関数は出てこなかったです。 そこで思った事ですが 質問1.これはPHPファイルに書いてますよね。 でも本来HTMLのテキストな訳ですよね。 これはどういう事なんでしょうーか? ページとしてはPHPのファイルで実際HTML? どっちでやるもんなんでしょうーか? 質問2.たぶんこれがここで躓いている要因のような気がします。 テキストボックスには識別名が入ってます。 これを送る。これはわかるんです。 しかしprintの文字の部分には識別名がないですよね。 あいてはつまり受け取るときにecho[識別名]で認識してますよね。 たぶんみなさんがおっしゃりたい事と関係があるんではないでしょうか?
- t_ohta
- ベストアンサー率38% (5238/13705)
> 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」とファイル名が異なっています。 エラーが出るのは送信ボタンを押した後の画面なんですか? それとも送信ボタンを押す前ですか?
補足
いちおうテキストボックスの入力したのは成功したんですが、 テキストボックス以外と文字が連続してでて読みずらいですし、 エラーがでます。 送信前という事です。エラーがでるのは、 まあ送信自体に問題はなくなったのですが エラーがでてるのがきになりますし、 テキストボックス以外の文字がおくれませんでした。
- hitomura
- ベストアンサー率48% (325/664)
……んーと、ひょっとしてご呈示のプログラムってエラーメッセージからすると、 http://okwave.jp/qa/q8651711.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> にしてください。
- agunuz
- ベストアンサー率65% (288/438)
そもそも >print"ようこそ"; >print$_POST["ad1"]; >print$_POST["ad2"]; > >print"様"; この記述はPOSTされたときだけでいいハズですよね? if ($_POST) { print "ようこそ"; print $_POST["ad1"]; print $_POST["ad2"]; print "様"; } というか、この表示をform要素の内側に書くセンスが理解できない。普通は(特に何も意識しなければ)</form>の後ろ(もしくは<form>の前)に書きますけどねぇ・・・
- sora1515
- ベストアンサー率58% (54/92)
Noticeは通知とか警告という意味です。(エラーではない) 表示したくなければ、iniファイルで出力させないように設定するか、 if(is_set($_POST["ad1"])){ print $_POST["ad1"]; } 過去質問・・またはエラーそのままでぐぐりましょう・・
- t_ohta
- ベストアンサー率38% (5238/13705)
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 様 という具合です
補足
>フォームのaction先をPHPのファイルにすると送れます。 でも送る際printとかの関数が必要ですよね。 でないと受け取り側がechoで取り込めませんし、 こういう場合はいいんでしょうか? でもなんとなく送り先が特定できれば、文字が送れてるって事なんでしょうかね。 これが二番の話にもなりますが print "ようこそ<br>".$_POST["ad1"]."<br>".$_POST["ad2"]."<br>様"; とそのまま貼り付けて実行しましたが、やはり様がでてこないんですよ。 なんでなんだろうと思います。 送り先ではテキストボックスだけがでてくる状態ですしどうも<br>もきいてなかったです