• ベストアンサー

OKWaveみたいなサイト

OKWaveのような、質問とそれに対応する答えをやりとりするサイトを開きたいと思っています。 OKWaveの「質問を表示している画面」を作ろうと思うのですが、HTML部分と、PHP部分を分けて管理したいと思っています。 現在、HTMLには、REQ_TITLE のように置き換えされることを想定して書かれています。 PHPのソースの中に組み込むと、HTMLの変更が難しくなりそうなのでできれば避けたいと思っています。 どうしたら、うまくHTMLとPHPを分離して、ソースを書くことが出来ますか

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んっと。「HTMLと処理部分を分離する」のはとても大切なことで。最近では、MVCという名前でそういった思想が広がっているかと思います。 PHPだと有名なあたりでSmartyでしょうか。個人的にはあまりお勧めできませんが :-P # なので、私は個人的に「独自実装」でより「分離しやすいもの」をクラスライブラリ化しています。 とりあえず、MVCという単語からgoogleあたりで検索すると色々と情報など出ているかと思います。 ちなみに、もしSmartyを使う場合「絶対にテンプレートに処理を書かない」事で、多少なんとかなります。 私がSmartyをNGにする最大の理由は「多機能である」ことなので。 間違ってもifとか書いちゃだめです :-P

xojan
質問者

お礼

実は、持っている本にSmartyが載っていたのですが、「インストール?えっ、PHPのモジュールか?レンタルサーバーだからそんなことできないよ」とか思って、全く読まずにスルーしてたんですが、もう一度読んでみると、どうやらそうじゃないようですね。 オブジェクト指向で大変そうですが、ちょっと使ってみます。どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • SuperLe
  • ベストアンサー率44% (434/977)
回答No.4

簡単なCMSにするのであれば、 kotaeru.php ----- <HTML><HEAD>-----CSSの設定など</HEAD> <BODY ID="BODY"> <?php $Q_NO=$_REQUEST["q"]; $A_NO=$_REQUEST["a"]; include("TOP.HTML");//あるいは TOP.PHP include("SIDEBAR.PHP"); include("HEAD.PHP"); include("MENU.PHP"); include("AD.PHP"); include("DISP_Q.PHP"); include("DISP_A.PHP"); include("FOOTER.PHP"); ?> というように、機能ごとに分離して、HTMLというようり、デザインはCSSを活用すると、結構簡単にできると思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#15164
noname#15164
回答No.3

<?php #設定やレイアウトの場所。 $top_html = <<<html HTMLの内容<br>を変数化してしまう。 html; ?> <?php #スクリプト本体 print "<html><head></head><body>"; print "$top_html"; print "</body></html>"; ?> こんな事もできたと思います。 あとは、細かな装飾はスタイルシートで、外部に分けちゃうとか。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

xojanさんこんにちは。 PHPを使用するということは動的なサイトを作りたいということだと思います。 HTML部分とPHP部分を分離したいということですが、できる部分とできない部分があります。 PHPの処理で変化しない部分(静的な部分)はHTMLを そのまま表示すればいいですね。 ですが、掲示板のようにデータベースなどからデータを読込みHTML表示する部分(動的な部分)は PHP(<?php?>タグ)中で行わなければなりません。 この動的な部分を少しでも分かりやすくするためには HTMLとして出力する処理をクラス化や関数化しておき、 クラス部分だけを変更すればHTMLの表示方法が変わる ようなものを作れば管理がしやすいと思います。 ◆data.txt(データファイル) ------------------------------------------------- data1 data2 data3 ------------------------------------------------- ◆index.php ------------------------------------------------- <html> <head> <title>静的な部分なのでPHPタグの外に記述</title> </head> <body> <table border="1"> <tr><td>データ</td></tr> <?php // データを出力する関数 function output($str) { print "<tr><td>$str</td></tr>"; } // データの読込み(改行ごとに配列の要素へ) $data = file("data.txt"); // データを関数output()により出力 foreach($data => $value) { output($value); } ?> </table> </body> </html> ------------------------------------------------- 簡単な例ですが、イメージとしては上記のようなものです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpでサイト構築していて困っています

    ホットペッパーAPIを使ってサイトを作っています。まだ知識が浅く分からないことが多いのですが、下記について教えて下さい。 <?php //サイト設定 $site['title'] = "APIサンプルサイト"; $site['url'] = "http://●●.jp"; $site['mojicode'] = "Shift_JIS"; $site['info'] = "ホットペッパービューティーAPIのサンプルです"; //XMLデータ取得用ベースURL $req = "http://webservice.recruit.co.jp/beauty/salon/v1/"; //リクエストパラメータ設定 $name = "◎◎"; $name_kana = "××"; //XMLデータ取得用リクエストURL生成 $req .= "?name=".$name."&name_kana=".$name_kana; $xml = simplexml_load_file($req) or die("XMLパースエラー"); //HTML出力 echo <<<HTML <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>{$site['title']}</title> </head> <body> <h1>{$site['title']}</h1> <hr> {$site['info']} <hr> {$xml->salon->name}<br> {$xml->salon->name_kana}<br> </body> </html> HTML; ?> ------------------------------------ (APIキーを省略しています) 上記の様に作成したページに <?php include_once '../include/commons.php'; ?> を入れて別のphpファイルを参照したいのですが、どこに入れれば良いのでしょうか??もしくはこの文章を入れることはできないのでしょうか。 最終的に「../include/commons.php」を参照(読み込み?)できれば良いので、方法を教えて下さい。 昨日からずっと入れる場所をいろいろ変えて試してみましたが、うまくいきません。APIがからんでない別のphp文書の文頭に入れると動作するのですが・・。 質問の仕方が未熟で申し訳ありませんが、宜しくお願いします。

    • ベストアンサー
    • PHP
  • responseTextを使っての書き換えを複数行いたい

    JavascriptからPHPを呼び出し その結果でHTMLを書き換えるという処理を行っています。 その際、2箇所同時に書き換えるため1つのfunctionの中で 2回PHPを呼んで書き換えているのですが1回目の結果しか画面には 反映されません。これはなぜでしょうか? 以下のソースでやっており、hogeもhoge2も単独で動かした場合は それぞれ正常に動いてます。 function hoehoe(){ req = new XMLHttpRequest(); req.open("POST","hoge.php",true); document.getElementById('hoge').innerHTML = req.responseText; req2 = new XMLHttpRequest(); req2.open("POST","hoge2.php",true); document.getElementById('hoge2').innerHTML = req2.responseText; } 長くなってしまいましたが、よろしくお願いします。

  • okwaveのプログラミング言語

    タイトルの通りokwaveを構築しているプログラミング言語を知りたいのです。 トップページ、Q&Aコミュニティの部分とも おそらく、phpなのではないかと思っているのですが、どうなんでしょう。

  • HTMLファイルの書き換え

    こんにちは。お世話になっております。 ココのところ、質問ばかりで恐縮ですが・・タイトルにあるようにPHPにて既存のHTMLファイル(同じサーバー内)を変更する場合、どのようなソースになるのでしょうか? <html> <head> <title></title> </head> <body> <!--category1start--> <!--category1end--> <!--category2start--> <!--category2end--> </body> </html> 以上のような構成のHTMLファイルがあり、PHPにて<title></title>内の文字列と、コメントアウトしてあるcategory1とcategory2の、各startからendの間を変更したいと考えてます。 今日も朝からずっと調べながら、正規表現を使いファイル全体のソースを変数に格納。確認のため変数を表示。といったことを繰り返しているのですが、正規表現の理解が乏しく、思ったような結果が得られずにいます。 お恥ずかしい質問とは思いますが、ご指導頂戴出来れば幸いです。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ereg_replaceの文字化けについて

    宜しくお願いします。 PHPで文字列の置き換えをする関数の『ereg_replace』についてですが、この関数を使う変数に『'』がはいると、置き換え後にその『'』の前に『\』が付いちゃうんですが、これを回避する方法は無いでしょうか?ちなみに、文字化けするソースを明記させて頂きます。 $title_edit = ereg_replace("/\x0D\x0A|\x0D|\x0A/","<br>","${title}"); 入力フォームでtextareaで入力された項目が$titleに入るのですが、textarea内でエンター改行した場合に、その改行コードをHTML上の<BR>タグに置き換えるというものなんですが、これを行うと、『'』の前に『\』が入ってしまうのです。原因が良く判らないで困っています。 お願いします!教えて下さい!!

    • ベストアンサー
    • PHP
  • 質問サイト(OKwaveなど)の利点について

    こんばんは★ このサイト(OKwave)を利用する最大の醍醐味というか、利点について、 みなさんはどう思われますか。 わたしの場合は例えば、タイトルも作者もよくわからない内容もうる覚えの映画や本 などを探すときに、わかる人が教えてくれるところです。 簡単すぎる質問をすると”ググれ○○”と言われますし けど難しい質問でも専門書とかで本気で調べれば大概のことは 答えにたどり着けるとも思いますし、でも先のような場合は こういう質問サイトならではだとわたしは思うのです。 というわけで繰り返しになりますが、こういう質問サイトの 利点や醍醐味についてみなさんの意見をお聞かせください。 ご回答お待ちしております。

  • OKWaveのTOPページのタブ部分の表示(最新の質問とか、最新のQ&Aとかのタブ)の実現方法を教えて下さい

    OKWaveのTOPページに、「最新の質問」とか「最新のQ&A」とかのタブ部分がありますが、この部分の表示の実現方法が分からないので教えて下さい。 ブラウザでHTMLソースを見ると、各タブに紐付いている質問の一覧が、<DIV id=各一覧のID>でくくられたブロックの中に<a>要素として書かれていて、タブ部分からそのIDにリンクされているようです。 私が分からないのは、それぞれのタブに紐付いている質問の一覧がすべて<DIV id=各一覧のID>の形でHTMLソースの中に書かれているのに、選択中のタブの一覧だけ表示されるのはどういう仕組なのか?ということです。 HTML初心者の私の理解では、HTMLソース上にすべてのタブの一覧を書いているのだから、選択中の一覧だけでなくすべての一覧が表示されると思うのですが・・・。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • ヒアドキュメントとクラスの基本的?な質問です

    PHPのヒアドキュメントを使ってHTMLのクラスを使ろうと思っているのですがいきなりわからなくなってしまいました。下のソースのどこがいけないのでしょうか。 エラー内容は Parse error: parse error, unexpected $end in \Html.php on line 19 です。よろしくお願いします。 index.php <?php require_once("./Html.php"); $html = new Html(); print $html->NoFrame(); ?> Html.php <?php class Html{ function Html(){ } function NoFrame(){ $html = <<<EOF <html> <head> <title> </title> </head> <body> おーい </body> </html> EOF; return $html; } } ?>

    • ベストアンサー
    • PHP
  • OKWaveはゴミサイトです。

    OKWaveはゴミサイトです。yahoo知恵袋の方が絶対にいい。 管理者が勝手に質問を変更して質問の意図が変わったり質問してもほとんど解決できない。 勝手に変更するくらいならいっその事削除しろ。 画像を貼り付けても小さくて読めないし、外部リンクも削除される。 ゴミゴミゴミ。 どうやったら退会できるんだ。

  • ローカルでは動くがサーバーでは動かない・・・

    メールを配信するCGIがあります。 フォームで登録するようになっているのですが、フォームで登録した際に、御礼のメールを配信したいと思って下記のようなphpを作っています。 フォームから送信されたデータを受け取り、送信者にメールを送った後、別のCGI(perl)にPOST送信するphpを作っています。 ローカルに作ったphp環境では動いたのですが、サーバーにアップロードすると下記のエラーが出て動きませんでした。 エラーメッセージ Warning: main(HTTP/Request.php): failed to open stream: No such file or directory in /home/*****/public_html/cgi/********/mail.php on line 34 メールを送信する部分は特に問題なく動いているみたいで問題はほかのcgiにPOST送信する部分にあるみたいです。初心者なのであるHPに掲載されていたコードをまる写しして必要な部分だけ変更しただけで、あまり意味は分からないままです。 /*POST送信*/ require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.***.jp/******/cgi/**********/cgi-bin/*****.cgi"); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addPostData("mail", "$mail"); $req->addPostData("md", "*****"); $req->addPostData("id", "**************"); if (!PEAR::isError($req->sendRequest())) { $response1 = $req->getResponseBody(); } else { $response1 = ""; } エラーメッセージにある34行目というのは require_once "HTTP/Request.php"; なのですが、どこに問題があるのでしょうか?

    • 締切済み
    • PHP