旅先で恋に落ちたくなる?思わぬ運命の恋に巡り合う映画

 実質的には初めてのWebアプリケーション開発です。
 さて、社内でも意見が割れているのですが、コーディングはHTMLとPHPのどちらをベースにしたら良いでしょうか?

【HTMLベース】
<input ~ value="<?=$hensu?>">
<?
if($hensu==6){
$cnt=0;
}
?>

【PHPベース】
print ("<input ~ value=\"$hensu\">");
if($hensu==6){
$cnt=0:
}


 つまり、
「HTMLの中にPHPを埋め込んでいく」
「PHPの中にHTMLを埋め込んでいく」

 開発効率やメンテナンス、あるいは世間の趨勢等、
どちらがいいのでしょうか?

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

A 回答 (6件)

先の回答者が2人とも PHP ベースとおっしゃっているので


私は普段 HTML ベースなので、少し意見を。

で、Web アプリケーションの開発ですけど、
ビジネスロジック・インタフェース・デザインは
分離して開発するといいと思います。

したがって、出来る限り HTML と PHP は分離
する方がよいと思います。

例えば、簡単なカウンターを考えた場合、
ファイルから現在のカウンタを取得し、ロックかけて
1カウントアップして画面に表示する。
となりますが、

私が PHP を使って開発する場合、こんな感じに
なります

<?php
 require("CCounter.php");
 cCount = new CCounter();
 cCount.countUP();
?>
<html><head></head><body>....
<p><?php echo cCount.getCount(); ?>
</body></html>

つまり、処理のほとんどを PHP のクラスに
閉じ込めてしまいます。
つまり HTML を出力する PHP では極力 PHP が
登場しないようするべきだと思っています。

結果的に HTML ベースの形になります。
これだと、画面レイアウトの変更とかが
最悪デザイナーに依頼してもやってくれます。

PHP ベースだと Web デザイナーに画面を綺麗に
してもらうのは、なかなか困難かと思うので。

---
というわけで、私は
■ 画面レイアウトの HTML
■ ロジックの PHP クラス
に分離し、HTML に最小限の PHP を埋め込むことで
Web アプリの開発をしています。

どうでしょう。一意見として聞いていただければ
幸いです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

> HTML を出力する PHP では極力 PHP が
登場しないようするべきだと思っています。

 なるほど、参考になります。
 現在、開発標準を決めている段階なのですが、
その方向でも検討してみたいと思います。

(お礼が遅くなりまして申し訳ございませんでした)

お礼日時:2004/08/10 12:31
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

恥ずかしながら初めて耳にしました。
参考URLをじっくり読ませて頂き、
目的に合うようなら選択肢の
ひとつとしたいと思います。

(お礼が遅くなりまして申し訳ございませんでした)

お礼日時:2004/08/10 12:38

ケースバイケースかと。



・デザインを外注する
・デザイン変更しやすい、というのを売りにする
以上の場合はHTMLベースで、

・明らかに変数などをちまちま書き出さねばならない
・急いでいる(笑)
等の場合はPHPベースで書くとよいと思います。

横ですが、
>私は、一つのPHPで複数ページを表示
私はこれは結構好きですね。たしかに小さいアプリ限定ですが。
フリーCGIのようにコーディングの知識などない人が変更しないという前提で使うという用途で配布するような場合は努めてそうします。これもケースバイケースですか。

役に立たん中庸な回答申し訳ないです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

「急いでいる」場合にPHPベースというのは、
私のようなPHP初心者には厳しいかもしれませんね。
「デザイン変更しやすい」という面から検討してみたい
と思います。

(お礼が遅くなりまして申し訳ございませんでした)

お礼日時:2004/08/10 12:36

私も、#3と同じくHTMLベースというか、デザインとロジックは分離するほうがいいと思います。



イメージとしては、
PHPのクラスとかファンクションのみで、HTMLは出てこない logic.php を、
ほぼHTMLのindex.phpで、requireして使うみたいな感じです。#3と同じですね。
私は、一つのPHPで複数ページを表示するのは邪道だと思います。(小さなアプリだとついやってしまいますが。)

まあ、こういうのは、いろんな人なりにポリシーというか好みというかのがあって、違う考えの人を説得するのは難しいので、チーム開発の場合は、私は黙って上の人とか多数派に従いますが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

どちらがベースと考えるより、
PHPとHTMLを極力分離させる、
という方向で考えてみたいと思います。
確かに「好みの問題」になる可能性はありますね。

(お礼が遅くなりまして申し訳ございませんでした)

お礼日時:2004/08/10 12:33

私の場合は複数ページを1プログラムで表示させていますのでPHPをベースにした方がやり易かったです。



フォルダ内にindex.phpを置き各ページを呼ぶ際は
case文を用いて振り分けを行います。
※.htaccessで下記文章を編集して追加する事が前提
 DirectoryIndex index.php index.html index.htm index.cgi index.shtml

例)呼び出し:index.php?action=main(POSTでもGETでもOK)
  振り分け:switch($_GET[action]){
        case "main":main();break;
        case "image":image();break;
        case "music":music();break;
        default:start();break;
       }

こうすると各ページが関数で呼び出せるのでフォルダ内がシンプルになりメンテナンス効率が良くなります。
あと、hedderやfooter等、各ページ統一の関数を作成しておけば全ページに統一性を持たせる事が出来ます。

- 以上 -
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

 なるほど。こういったやり方もあるのですね。
 複数ページを1プログラムで表示する予定は
ないのですが、この方法は他の場面で使えそうです。

(お礼が遅くなりまして申し訳ございませんでした)

お礼日時:2004/08/10 12:28

サーバーに入れてあるPHPがZendなどでチューニングされているならPHPベースが良いと思います。


素の状態ならどちらもあまり変わらないと思います。
どれくらいの規模のWebアプリか存じませんが
比較的に処理速度を求めるならPHPベース
サイトデザインを含めてメンテナンスのし易さで選ぶならHTMLでしょうか?
あとは好みの問題だと思います、

一から構築されるのであればJSP+サーブレット+jetspeedが良いかも・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>サイトデザインを含めてメンテナンスのし易さで選ぶならHTML

 画面数、データ量共に大した規模ではないので、
メンテナンスの容易性は魅力的です。

>JSP+サーブレット+jetspeed
 
 そういう選択肢もあるのですか。残念ながら開発環境は
変更できなそうです。

(お礼が遅くなりまして申し訳ございませんでした)

お礼日時:2004/08/10 12:24

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCSSでborderの長さを指定、または可変にしたい。

下記のように指定していますが、これだと横幅いっぱいに下の線が表示されてしまいます。

文字なりの長さ、または指定のピクセル数にしたいのですが、どのようにしたらよいでしょうか。

h3{
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

Aベストアンサー

borderの長さはそのボックスの大きさですから、ボックスの大きさを指定する事になります。
h3{
width:???px;
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

また、文字数(ボックスの内容)に合わせたい場合は、ボックスを浮動化(float)する等の方法もありますが・・・そのボックスの周りへ影響が出たり、ブラウザ毎にバグや実装の違いなどが比較的多く、扱いが面倒になるのであまりおすすめできません。

HTMLの方も修正する方法でもよければ

<h3><span>××○○</span></h3>
のようにspanで囲い、スタイルをspanに対して指定する方法もあります。

h3 span{
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

borderの長さはそのボックスの大きさですから、ボックスの大きさを指定する事になります。
h3{
width:???px;
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

また、文字数(ボックスの内容)に合わせたい場合は、ボックスを浮動化(float)する等の方法もありますが・・・そのボックスの周りへ影響が出たり、ブラウザ毎にバグや実装の違いなどが比較的多く、扱いが面倒になるのであまりおすすめできません。

HTMLの方も修正する方法でもよけ...続きを読む

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

Qリストの左余白の削除方法

<li>リストを作成した再に表示されてしまう、左余白部分を削除して、画面左に詰めたいのですが、上手く出来ません。
どなたかご教授頂けませんでしょうか?

=>CSS記述<=
ul li {
list-style: none;
margin: 0px;
padding: 0px;}

=>HTML記述<=
<ul>
<li><a href="#">サンプル</a></li>
<li><a href="#">サンプル</a></li>
<li><a href="#">サンプル</a></li>
<li><a href="#">サンプル</a></li>
</ul>

Aベストアンサー

ul li {

の箇所を

ul {

にするだけ

Qボタンを横に並べて表示させる方法

<input type="button"> ←このボタンを、並べて表示させるにはどうしたら良いでしょうか? (tableは使わない方法で) よろしくお願いいたします

Aベストアンサー

ソースをください。

inputはインライン要素なので改行は入らないです。

Qhtml、テーブル内にテーブル。表示位置

htmlで<table>タグを使って テーブルを作成しました。(これをテーブル(1)とします。)
このテーブルのなかに表を作成したいため、テーブル内で<table>タグを使用し表を作成しました。(ここで作成したテーブル(表)をテーブル(2)とします。)
つまり、テーブル(1)の中にテーブル(2)(表)が存在する。といった状況です。

ところがテーブル(2)がテーブル(1)の真ん中に表示されてしまいます。
そこでテーブル(2)のタグに<table align="left" valign="top">というような要素を加えてみたのですが変化がありません。
どうしたらよいでしょうか?
教えてくださいよろしくお願い致します。

Aベストアンサー

> そこでテーブル(2)のタグに<table align="left" valign="top">というような要素を加えてみたのですが変化がありません。

テーブル(2)ではなくてテーブル(1)を次のようにすればテーブル(2)が左に寄ります。

<TABLE> ここはテーブル(1)
<TBODY>
<TR>
<TD align="left">
<TABLE> ここからテーブル(2)
<TBODY>
<TR>
<TD> 

Qphpにcssを適応させたいのですが?

phpで出力させた結果をブラウズするのに、css指定させたいのですが?

できるのでしょうか?

Aベストアンサー

PHPだから特別な考えはしなくて良いです

PHPはあくまでも、サーバー側で動いて、その結果を出力させるだけです

つまり出力させたHTMLにごくごく普通にCSSを適用させれば良いだけです
又、テクニックとしCSSそのものをPHPで処理させることも可能ですよ

例えば
---------------index.html(又はindex.php)のhead内
<link rel="stylesheet" type="text/css" href="stylecss.php"/>
---------------

------------stylecss.php
BODY {
background-color: #<?php echo $background; ?>;
margin: 0px;
}

A:link {
color: #<?php echo $acollar; ?>;
text-decoration:none;
}
-----------
のようにしてしまって、CSSそのものを動的に生成することも可能です

PHPだから特別な考えはしなくて良いです

PHPはあくまでも、サーバー側で動いて、その結果を出力させるだけです

つまり出力させたHTMLにごくごく普通にCSSを適用させれば良いだけです
又、テクニックとしCSSそのものをPHPで処理させることも可能ですよ

例えば
---------------index.html(又はindex.php)のhead内
<link rel="stylesheet" type="text/css" href="stylecss.php"/>
---------------

------------stylecss.php
BODY {
background-color: #<?php echo $background; ?>;
margin: 0px;
...続きを読む

Qアンケートフォームの未記入項目チェック

アンケートフォームを作る勉強をしています。
氏名やメールアドレスなどが未記入の場合にエラーとして登録できないようにするにはどうしたらいいでしょうか

PHPの勉強をはじめてまだ数日なので参考書片手にやっている状態なのですが
is_nullというのがあったので
<?php
if(is_null($_POST['name"])){
print("<p>ERROR:氏名が未記入です。<br>");
}else{
$result1=($_POST['t_fname']);
}
?>
こんな具合にやってみたのですがうまく動きませんでした
どのようにやったらいいかアドバイスお願いします。

Aベストアンサー

tabun0622さんはじめまして、papillon68と申します。

氏名やメールアドレスを入力する部分を
<input type="text"・・・>
で作成していると推測しての回答です。


◆text(テキスト)
submitが押されるとその時入力されている値が送信されます。
未入力の場合は空白です。("")

◆select、option(コンボボックス)
submitが押されるとその時選択中のvalueが送信されます。

◆checkbox(チェックボックス)
submitが押されるとチェックが入っていればvalueが送信され、チェックが入っていなければそのチェックボックス自体は送信されません。
$_POST['チェックボックスのname']が未定のような感じです。

◆radio(ラジオボタン)
submitが押されると選択されているラジオボタンのvalueが送信され、チェックが入っていなければそのラジオボタン自体は送信されません。

◆submit(サブミット)
押されたサブミットボタンのみが送信されます。



ですので、
> if(is_null($_POST['name"])){
の場合ですと

if($_POST['name'] == "") {

とすると未入力かどうかが判断できます。


チェックボックスやサブミットボタンの場合ですと

if(isset($_POST['name']))

とすると送信されたかどうかが判断されます。
この方法はよく使われているように思います。


例えば、以下のようにするとサブミットボタン(send)がおされなければ、登録処理は行われません。
--------------------------------------------------
<?php
 // sendが押されたかどうか
 if(isset($_POST['send'])) {
  // nameが未入力ではないか
  if($_POST['name'] == "") {
   print("<p>ERROR:氏名が未記入です。<br>");
  }else{
   $result1=($_POST['t_fname']);
  }
 }
?>
<form>
氏名:<input type="text" name="name">
<input type="submit" name="send">
</form>
--------------------------------------------------

tabun0622さんはじめまして、papillon68と申します。

氏名やメールアドレスを入力する部分を
<input type="text"・・・>
で作成していると推測しての回答です。


◆text(テキスト)
submitが押されるとその時入力されている値が送信されます。
未入力の場合は空白です。("")

◆select、option(コンボボックス)
submitが押されるとその時選択中のvalueが送信されます。

◆checkbox(チェックボックス)
submitが押されるとチェックが入っていればvalueが送信され、チェックが入っていなければそのチェ...続きを読む

QリダイレクトでPOST

教えてください。

リダイレクトの際、POSTで次のページにデータを渡すことは可能でしょうか?

GETだと
header("Location: "a.php?no=".$no);
と、問題なくできるのですが、
できれば、パラメータを隠したいと思います。

以上ですが、よろしくお願いします。

Aベストアンサー

多分できないです。
それに、結局クライアント側に情報を送信しているのだから、POSTにしたところでパラメータを隠した事にはならないですし。
本当に隠すならサーバ側でセッション情報を引き継ぐような形にしないとダメでしょう。

AJAXのかたちにして、ページ遷移を見えなくするというのが手っ取り早いかも。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qシングルクォーテーションとダブルクォーテーション

いつも楽しく拝見させて頂いています。
初心者ですが宜しくお願いします。
シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。
select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。
以上宜しくお願いします。

Aベストアンサー

文字定数は、「'」で囲む必要があります。

例)SELECT 'ABC' →文字定数の'ABC'と解釈される
SELECT ABC →ABCは、表名や列名と解釈される

数値定数は、多くのRDBMSでは「'」で囲みませんが、MySQLでは独自仕様として囲むことが可能です。

例)SELECT 123 →数値定数の123
SELECT '123' →一般的なRDBMSでは文字として扱われる。MySQLでは数値としても扱える

殆どのRDBMSには予約語があり、RDBMSでは予約語を頼りに構文解析します。表名や列名に英単語やその組み合わせを使おうとすると、予約語とぶつかってしまうことがあります。

例)SELECT FROM FROM →予約語のSELECT FROMの間に「*」や列名が指定されておらず、RDBMSは構文誤りと認識する

それを回避するために、標準SQLでは「"」で表名や列名を囲みます。MySQLでは、文字コードにANSIを使う場合は、「"」で、それ以外には独自仕様で「`」(バッククォーテーション)を使います。

例)SELECT "FROM " FROM →多くのRDBMSでは「"」で囲むことで、RDBMSに最初の「FROM」は、列などの名前であることを知らせる
SELECT `FROM` FROM →ANSI以外のMySQLでは、「`」(バッククォーテション)で囲む

また、「-」(ハイフォン)を表名や列名に使う場合、「"」で囲まないと、SQLでは減算と解釈されます。このように、「"」で囲むことで、記号なども名前に使用することができます。

例)SELECT ABC-DEF →列ABCと列DEFの減算と解釈される
  SELECT "ABC-DEF" →列「ABC-DEF」と解釈される
  SELECT `ABC-DEF' →ANSI以外のMySQLでは、「"」でなく「`」(バッククォーテション)を使用

文字定数は、「'」で囲む必要があります。

例)SELECT 'ABC' →文字定数の'ABC'と解釈される
SELECT ABC →ABCは、表名や列名と解釈される

数値定数は、多くのRDBMSでは「'」で囲みませんが、MySQLでは独自仕様として囲むことが可能です。

例)SELECT 123 →数値定数の123
SELECT '123' →一般的なRDBMSでは文字として扱われる。MySQLでは数値としても扱える

殆どのRDBMSには予約語があり、RDBMSでは予約語を頼りに構文解析します。表名や列名に英単語やその組み合わせを使おうとすると、予...続きを読む


人気Q&Aランキング