- ベストアンサー
PHP初学者のエラー解決について
- PHP初学者がフォームとPOSTを使ってデータを渡す際にエラーが発生しています。
- エラーの原因がまだわからず、解決方法が分かりません。
- PHPの参考書に掲載されているサンプルコードと同じようにコーディングしているにも関わらず、期待した結果を得ることができません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
動作結果を補足で書いてくれたので、再現させる事が出来ました。 正直、初歩以前の問題。 PHPファイルを直接ブラウザで開いても、PHPは動作しません。 PHPとは、サーバー上でスクリプトが動作した結果をブラウザに返す、サーバサイドスクリプトです。 その本には、Apacheのインストール方法が載っていませんでしたか? 最近の本でCD-ROMが付いているのであれば、XAMPPが付属している事が多いと思いますが、それはインストールしましたか? 仮にC:\xamppにインストールしたとすると、 下記のフォルダに置いたファイルが、XAMPPテスト環境になります。 C:\xampp\htdocs テスト用に、以下のフォルダを作成して C:\xampp\htdocs\test\ form.html form.php それぞれは、testフォルダの中に入れたとします。 ブラウザを開いて、http://localhost/test/form.htmlと入力してEnter、これでインストールしたXAMPPテスト環境に接続できて、PHPのサーバーサイドスクリプトが動きます。
その他の回答 (3)
- doran975
- ベストアンサー率14% (1/7)
>echo 'あなたは「', $f1, "」が好きなんですね。<br>\n"; >echo '「', $f2, "」も好きなんですね。<br>\n"; 「,」ではなくて「.」 後echoで「'」と「"」を使っているけどそれぞれの挙動の違い理解しているのか? echo '「$f2」も好きなんですね。<br>\n'; echo "「$f2」も好きなんですね。<br>\n"; で挙動の違いを理解しておこう
補足
できませんでした。。。 まだ始めたばかりなのでなにがどうなのか全くわかりません。 どなたか正確な回答を教えていただけないでしょうか? おそらく出版社に聞いても答えてくれないでしょうし・・ 本のサンプルCDについていたものをそのまま記載しておきます。 ■form1.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form method="post" action="form1.php"> 好きな食べ物は?<input type="text" name="food1"><br> 好きな飲み物は?<input type="text" name="food2"> <input type="submit" value="送信"> </form> </body> </html> ■form1.php <?php header('Content-type: text/html; charset=UTF-8'); ?> <html> <body> <?php $f1 = $_POST['food1']; // 連想配列で好きな食べ物を取得 $f2 = $_POST['food2']; // 連想配列で好きな飲み物を取得 $f1 = htmlentities( $f1, ENT_QUOTES, 'UTF-8' ); $f2 = htmlentities( $f2, ENT_QUOTES, 'UTF-8' ); echo 'あなたは「', $f1, "」が好きなんですね。<br>\n"; echo '「', $f2, "」も好きなんですね。<br>\n"; ?> </body> </html> ■サンプルCD付属のファイルの実行結果 \n"; echo '「', $f2, "」も好きなんですね。 \n"; ?> 明確な答えがあった方が、後で自分自身でも調べやすいと思いますので。
まずお願いなのですが、この手の質問をする際は、どんなエラー状況なのか、エラーメッセージが出ていたらそれも添えて質問して下さい。その方が回答しやすいので。 ご質問のケースですが、form1.phpで文字化けや文字が表示されなくなるというエラーですよね? であれば、以下のようにform1.phpの一部を変更して下さい。 $f1 = $_POST['food1']; $f2 = $_POST['food2']; ↓ $f1 = mb_convert_encoding($_POST['food1'], 'UTF-8', 'auto'); $f2 = mb_convert_encoding($_POST['food2'], 'UTF-8', 'auto'); これはphp.ini の設定によって発生した文字化け問題です。
補足
実行結果は以下のようになります。 \n"; echo '「', $f2, "」も好きなんですね。 \n"; ?> エラーが出ているということではなく、おそらく初歩的なミスだと思うのですが、購入した参考本のサンプルCDのファイルを弄っても同様の実行結果になったので、参考書のサンプルCDそのものが間違っているのではないかと思って・・・ 昨日買ったその本を見て読み進めているので、回答となるものを教えていただけた方が助かります。 'と"の違いかと思ったのですが、"は'どちらを用いてもよいというようなことが書いてありましたし、参考書のサンプルCDファイルを実行しても同様の結果になってしまうので。
- BellBell
- ベストアンサー率54% (327/598)
まずはエラーメッセージをきちんと読みましょう。 英語でよくわからなければ、辞書を引きましょう。 どのファイルの、どの行でエラーが発生しているか書かれているハズです。 その行を、そのサンプルの本と見比べましょう。 そうやってどうしても判らなければ、質問するのも良いですが、エラーメッセージは載せましょう。 正直、初心者の頃はエラーが起こった時こそチャンスです。 エラーの対処の仕方を覚えることで、プログラムが上達します。 その本に、必ず解説されていますので、一度戻って読み返しましょう。 ヒントとしては、以下2行にエラーがあります。 echo 'あなたは「', $f1, "」が好きなんですね。<br>\n"; echo '「', $f2, "」も好きなんですね。<br>\n";
お礼
再現することができました。 始めからソースが間違っていたのではなく、アクセスする先が間違っていたのですね。 ファイルを直接クリックして表示させていました。 すごく初歩的なことですが、これは教えてもらわなければ気付けなかったことだと思います。 気付いて下さってありがとうございました。