【最大10000ポイント】当たる!!質問投稿キャンペーン!

参考書を見ながらPHPの勉強を始めていますが、本のサンプルと全く同様にコーディングしているはずなのに、良い結果が得られずバグとなります。

formとpostを使って内容を渡すという項目なのですが。

form.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>

おそらくちょっとしたことが原因でエラーが出ているのだと思いますが、まだ始めて1日目なので、どこがいけないのかさっぱりわかりません。

一体どこがおかしいのか、教えていただけますか?

このQ&Aに関連する最新のQ&A

A 回答 (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のサーバーサイドスクリプトが動きます。
    • good
    • 0
この回答へのお礼

再現することができました。
始めからソースが間違っていたのではなく、アクセスする先が間違っていたのですね。

ファイルを直接クリックして表示させていました。
すごく初歩的なことですが、これは教えてもらわなければ気付けなかったことだと思います。

気付いて下さってありがとうございました。

お礼日時:2010/04/02 14:02

>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"; ?>

明確な答えがあった方が、後で自分自身でも調べやすいと思いますので。

補足日時:2010/04/02 12:14
    • good
    • 0

まずお願いなのですが、この手の質問をする際は、どんなエラー状況なのか、エラーメッセージが出ていたらそれも添えて質問して下さい。

その方が回答しやすいので。

ご質問のケースですが、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ファイルを実行しても同様の結果になってしまうので。

補足日時:2010/04/02 11:00
    • good
    • 0

まずはエラーメッセージをきちんと読みましょう。


英語でよくわからなければ、辞書を引きましょう。
どのファイルの、どの行でエラーが発生しているか書かれているハズです。
その行を、そのサンプルの本と見比べましょう。

そうやってどうしても判らなければ、質問するのも良いですが、エラーメッセージは載せましょう。
正直、初心者の頃はエラーが起こった時こそチャンスです。
エラーの対処の仕方を覚えることで、プログラムが上達します。

その本に、必ず解説されていますので、一度戻って読み返しましょう。

ヒントとしては、以下2行にエラーがあります。

echo 'あなたは「', $f1, "」が好きなんですね。<br>\n";
echo '「', $f2, "」も好きなんですね。<br>\n";
    • good
    • 0

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


人気Q&Aランキング