- 締切済み
php初歩的な質問1
<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でかこっても 真っ白い画面になってます。 エラーではないんですが、何故なんでしょうか? すいません。今日からphpの勉強に入った者です。
- みんなの回答 (11)
- 専門家の回答
みんなの回答
- akechi0227
- ベストアンサー率0% (0/0)
>Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) in C:\xampp\htdocs\9.php on line 26 parse error → 文法のエラー on line 26 → コードの26行目あたりにエラーの原因があります ということなんですね。 だからコードの26行目を書いていただくのが速いんですけど。。 今回はおおかた <?php echo $_POST['ad1']; ?> のechoの前に全角スペースが入ってるとかじゃないですか? 本のほうで、「ああああああああ」のように 送信した内容を表示させる部分にどのようなphpコードが記述されているか 確認してみて下さい。僕の書いた内容でも表示は出来るんですけど。 9.phpになにも記述せずに、6.phpから送信した内容が 9.phpから表示されることはありえないので。 手紙だけ受け取って開封していない、みたいなもんですからね。
- akechi0227
- ベストアンサー率0% (0/0)
OKです。 質問者さんがPHPで情報を送る仕組みについて勘違いしていることがわかりました。 サーバーだなんだの説明はこの際省きます。 まず、9.phpには6.phpから送信された情報を受け取って 表示させるコードを書かなければだめです。 現状だと、いくらformから9.phpに情報を送っても、 9.phpのほうでその情報を活用する手続きが書かれていない状態です、 9.phpには<form>~</form>もいりません。 代わりに、次のように書いてください。 <?php echo $_POST['ad1']; ?> この$_POST['○○']というのは、 nameが◯◯のinput要素から送信されたデータ、 という意味だと思ってひとまず大丈夫です。 この場合はname="ad1"のテキストボックスから9.phpに 入力内容を送信するので、 9.phpのほうで$_POST['ad1']と書いて入力内容を表示させるわけです。
補足
しかしですね、本では <?php echo $_POST['ad1']; ?> とは書いてないのですが、でたエラーが Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) in C:\xampp\htdocs\9.php on line 26 とでてます。 そこで本にデバックとあり C:\xampp\htdocs\9.phpと26という部分が太字になっています。 本では、ここがエラーの要因であるとなってます。 テキストボックスの中に書かれた字を 9に送った際、ああああああああああと書いた場合 画面にああああああああああとでないと本通りではないようなわけです。
- agunuz
- ベストアンサー率65% (288/438)
>ファイルはあるんですよ。でもテキストに入れた文字を送るという事が >PHPの技術?なんじゃないんすかね。 データを送るのはhtmlとhttpの仕組みです。送るのはブラウザで、受けとるのが(サーバで動作する)phpスクリプトです。で、phpスクリプトで受けとるのには $_POST というスーパーグローバル変数を使います。 #あまりに基礎の話なので、ここから説明するのは時間の無駄な気が・・・ http://www.php.net/manual/ja/reserved.variables.post.php ↑ これを読んで理解できないなら、まだphpスクリプトを書いてはいけません。 ごく簡略化して 【form.html】 <form action="test.php" method="post"> POSTするデータ:<input type="text" name="dataname" /> <input type="submit" /> </form> 【test.php】 <?php if (isset($_POST['dataname'])) { print htmlspecialchars($_POST['dataname'], ENT_QUOTES, 'sjis') . " がPOSTされました"; } else { print "データがPOSTされていません"; } これだけのファイルで試してください。文字セットはsjisで。本当はutf-8推奨ですが、メモ帳で作成されると面倒なので(汗
- akechi0227
- ベストアンサー率0% (0/0)
いちど6.phpというファイルをメモ帳で開いて、 その中身を全部コピペしてここに書いてもらえますか? できれば9.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> が6なんですよ。 それで <p><input type="text" size="20px" name="ad1"></p> <p><input type="submit" value="送信"></p> <?php print"ようこそ" ?> の部分がないのが9です。これ以上の書き方はできないです。 これ以外書いてないですから。
- akechi0227
- ベストアンサー率0% (0/0)
>じゃあ、自分の考えている事と違う展開になっているという事なんでしょうか? →ですから、この「自分の考えている事」というのは具体的になんですか? 送信ボタンを押したらページが変わって、 テキストボックスに入力した内容が表示されることですか? それとも、送信ボタンを押したら9.phpというファイルに 直接入力内容が書き込まれることですか? 送信ボタンを押したら9.phpというファイルの内容が直接書き換わって、 ブラウザから9.phpを開くことでそれが直接表示される、というような動作は基本的にはしませんよ。 そういう処理の流れを想像しているなら完全に勘違いです。 >実際ですけど、テキストの文面を送るというのはPHPでできるんでしょうか? →この場合だとテキストではなくテキストボックスのほうが正しい言い方ですけれども、 テキストボックスに入力した文面をサーバに送信すること、という意味でなら可能です。
補足
>→この場合だとテキストではなくテキストボックスのほうが正しい言い方ですけれども、 テキストボックスに入力した文面をサーバに送信すること、という意味でなら可能です。 これに関しては失礼しました。 一応色々ためしてみたんですが、 ようこそ Notice: Undefined variable: _post in C:\xampp\htdocs\6.php on line 35 様 なる部分が展開的には6というページを開くとでてくるのですが actionのところにはつまりactionとは送付先だと思うんですが 変化がないんですよ。ならこれは一体なんの意味があるのかが、 本の趣旨がわからないわけです。 余談ですがテキストボックスに書かれた例えば、名前とかは 簡単に9というファイルに6に書いたものを9に移す事は簡単にできるもんなんでしょうか? ※適切じゃないかもしれませんが、つまり内容を違うファイルにつまり 6で”あ”とかいたら9を開いたら”あ”と出てくるみたいな感じです。
- agunuz
- ベストアンサー率65% (288/438)
#「サーバーサイドプログラムの仕組み」を理解して #いないんだろうとしか思えません。 form要素でPOSTしたデータは、phpスクリプトに送られるだけです(phpスクリプトでは、$_POSTなどに格納されて利用出来る)。 勝手に 9 というファイルが出来上がったりはしませんww >テキストの中に入った字を9というファイルに >転送したいんです。 9 という名前のファイルに転送したければ、form要素のaction属性に指定している(つまりformデータを受け取る)9.php というphpスクリプトで <?php file_put_contents('9', $_GET['ad1']); echo "9 に保存しました"; ?> とでもしないといけませんが、そういうことをする意味は何もないです(毎回上書きされるなんて作り方はあり得ない)。まして「9.php が存在する(受け取ったデータを適切に処理する)」ことが大前提です。 まずは受け取った(formから送られた)データを表示でもして確認するのが先です。
補足
>勝手に 9 というファイルが出来上がったりはしませんww ファイルはあるんですよ。でもテキストに入れた文字を送るという事が PHPの技術?なんじゃないんすかね。 まだ一日目とかなんで解りませんけど。
- akechi0227
- ベストアンサー率0% (0/0)
補足を読んだ上で、 質問者さんが現時点でどういう状態に持って行きたいのかが (画面がどういう表示になれば成功なのかが) まったくわからないので、まずそこを整理することでしょうか。。 それがわからないままであれば、いくら実践してもしょうがないかと。 ちなみにformのactionを9.phpに指定していて、 9.phpにあらかじめなにも記述していないのであれば 現時点で送信ボタンを押しても画面は真っ白になるだけです。
補足
>現時点で送信ボタンを押しても画面は真っ白になるだけです。 じゃあ、自分の考えている事と違う展開になっているという事なんでしょうか? 実際ですけど、テキストの文面を送るというのはPHPでできるんでしょうか?
- akechi0227
- ベストアンサー率0% (0/0)
質問者の意図がわからないのでもうちょっと詳しく書くことにしました。 ・送信ボタンをクリックしたら9.phpというページにジャンプして、 その画面でad1というテキストボックスに入力した文字を表示させたい場合 →9.phpをテキストエディタで開いて <?php echo $_POST['ad1']?>と記入して保存。 ・送信ボタンをクリックした時に、9.phpというファイルの中身自体を書き換えたい場合 →ひとまずは9.phpじゃなくて9.txtの形式のほうがいいような。。 ファイルの形式を変更したらプロパティのセキュリティから書き込みの許可を設定(ググってください) →<form action="9.php" method="POST">を次のように書き換え <form action="" method="POST"> →次に自分自身で受け取った値($_POST['ad1'])を9.txtに書き込む処理を追加 以下を入力欄のあるphpファイルの一番上に書き込み <?php if(isset($_POST['ad1'])){ $file = "9.txt"; $crr = file_get_contents($file); $crr .= $_POST['ad1']."\n"; file_put_contents($file, $crr); } ?> →ここまでやって実際に送信したら9.txtを開いて送信内容が書き込まれているか確認 これでどうですか?だめですか?
補足
明日実践してみようと思いますが、 たぶん本のながれから例えば、 申し込み用紙とかをテキストに入力しますよね。 その内容を送信して受け取り側が見れるようにするというのが これからの展開だと思うのです。 こうのうなかは解りませんが、こういう事をPHPではできるという事なんでしょうか?
- akechi0227
- ベストアンサー率0% (0/0)
9.phpのファイルをテキストエディタで開き、 以下のコードを書いて(コピペでいいです)上書き保存してください。 <?php echo $_POST['ad1']?> これで表示されないなら、XAMPPを入れていないなど、 環境の設定をそもそもしていない可能性がありますね。
- shimix
- ベストアンサー率54% (865/1590)
>しかし、転送に失敗したのか字がでてこないのです いや、ですから 9.php というスクリプトはどういうソースなのですか? <?php print $_POST['ad1']; ?> だけのスクリプトということでしょうか? <?php var_dump($_POST); ?> ではどうなりますか?
補足
><?php print $_POST['ad1']; ?> ではなくてですね。 テキストの中に入った字を9というファイルに 転送したいんです。 つまり9は空なんです。 もしかして、本が意図している事と僕は違う事をやっているのかな? でも、後にアンケートを作るらしいのです。。。
- 1
- 2
補足
すいません。度重なるご無礼とご指導>< できました。 echoの前に全角スペースが入ってるとかじゃないですか? これでした。 それと本で<?php echo $_POST['ad1']; ?> はやはり書くようです。 なんだかこの本ばらばらに書いてあってわかりにくいです。 ですが一転 <?php print"ようこそ"; print$_POSTS["ad1"]; print"様"; ?> と書いたのですが、様がでてきませんでした。 ?なんでしょうかね^^