- ベストアンサー
PHPとHTMLで2人対戦の数当てゲームを作る方法
- PHPとHTMLを使用して、2人で対戦する数当てゲームのプログラムを作成中です。
- 現在、トップ画面はほぼ完成し、プレイ画面のレイアウトもほとんど終わっています。
- 友達によると、PHPを一番外に用意し、tableなどの要素をprint("...")で囲む必要があるそうです。しかし、これによりsubmitボタンからプレイ画面に移動できなくなりました。初心者なので、分かりやすい方法を教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
そのお友達の方の方が初心者だと思いますけどね。 私だったら <?php $arr = array( 'a' => 'あ', 'b' => 'い', 'c' => 'う', ); header('Content-Type: text/html; charset=UTF-8'); ?> <!DOCTYPE html> <html> <head> <title>Test</title> </head> <body> <table> <tr><th>キー</th><th>値</th></tr> <?php foreach ($arr as $key => $value): ?> <tr><td><?=$key?></td><td><?=$value?></td></tr> <?php endforeach; ?> </table> </body> </html> のように制御構造の別構文や、echoの短縮構文を利用してHTMLタグの中に値を埋め込みます。 echoで直接HTMLタグを出力するのはよく「汚い」と言われます。
その他の回答 (2)
- tracer
- ベストアンサー率41% (255/621)
PHPはHTMLを埋め込める言語です。 逆に言えば、HTMLの中にPHPを埋め込めるとも言えます。 基本は、print文でhtmlを出力できますが、長文をprintで出力する場合は、ヒアドキュメントが向いています。 print<<<HTML <h1>挨拶</h1> <ul> <li>おはよう</li> <li>こんにちは</li> <li>こんばんわ</li> </ul> HML; これは「ヒアドキュメント」で検索すればすぐにでも出るでしょう。 ただ、管理の上では、PHPプログラムの中でprint文を多用するのはあまり効率がよくないかもしれません。 それは、経験ですのでやってみればわかります。 さて、冒頭で HTMLの中にPHPを埋め込めるとも言えます。と書きましたが、答えはすでに出ていて、No.2さんのような書き方です。 <html> <head> <title><?php print $title</title> </head> <body> <?php print $body?> </body> </html> こういう書き方を覚えると、大枠を全てのページで共通させて、変更部だけをphpプログラムによって分岐させるという手段が簡単にとれます。URLなどをきっかけに内容を変更するのが一般的でしょう。 また、phpは外部ソースを読み込めるので、外部に読み込み用のhtmlを準備し、それを出力するという方法も一般的です。そうすると、htmlとphpを分離できるので、管理が楽になります。 どれが一番すぐれているというものではありません。プログラムの内容によって、適宜手段を選択していけばよいと思います。
お礼
回答ありがとうございます。 とても参考になりました。
- Yune-Kichi
- ベストアンサー率74% (465/626)
> 友達に「PHPを一番外に用意して、tableなどをprint("");で囲まないとだめ」と言われました。 これが「だめ」である,とは少なくとも私は思いません。 というよりも,プログラムの世界で理由も無しに「だめ」ということはないはずです。 # セキュリティ上云々,効率上云々,少なくとも理由は付けられますが。 まずは,なぜ「だめ」なのかを納得いくまでそのお友達に訊ねてみてはいかがでしょうか。 ちなみに,私がHTMLをechoやprintでのみ出力するようなコードを見たら,まず理由を聞くでしょう。 コードの記述効率,メンテナンス性,どちらも通常は悪くなるので。 # タグ1つくらいなら構わないですが……。
お礼
回答ありがとうございます。 まあ私は初心者で、その人が高専なんでちょっとレベルに差があって その人の言っていることが私には理解しがたいということもあるんですが(‥;)
お礼
回答ありがとうございます。 こんな書き方もあるんですね(^^) 参考になりました。 勉強しなおします。