今回からサーバ側の改良。
konohanaDBクラスにつけた自分の投稿関係の削除機能への対応と返す内容の検討っす。
極端な話、PHPで毎回動的に生成してるんだから
というように返す事だってできるんですが…
やっぱウェブブラウザでも表示できるHTML表記で返したいわけですよ。
で、そのために現在はtableタグを使ったページを返すようにしてるわけです。
HTML表記~?tableタグ~?な人は、ここらへんの激闘の記録その(131)~を読みましょう。
![$テン*シー*シー-1](https://stat.ameba.jp/user_images/20100413/16/xcc/d5/b2/j/o0500043210494815424.jpg?caw=800)
ちなみにSafariで上のように表示ページのソースを表示させるには、表示>ソースを表示メニューね。
ま、これで十分なんですが…
もうちょっと商用サイトのようなオシャレな感じをね、出したいな、と。画像の大きさそろえたいなとか、早い話以下のような表示にしたいんですよ。
![$テン*シー*シー-2](https://stat.ameba.jp/user_images/20100413/16/xcc/e4/d2/j/o0500044910494818351.jpg?caw=800)
ただ~、あんまり装飾のためにPHPのソースを複雑にするのもな~。
と、いうのも正論なわけで…
ここらへんをうまく解決するためにCSS(Cascading Style Sheets)を導入することにしますた。
で、結果以下のようにあんまりソースの内容は増やさずに大幅に変更できたぞっと。
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100413/16/xcc/85/e4/j/o0500053310494825047.jpg?caw=800)
上にかぶさってるのが新しくCSSを使った記述で、下側が従来の記述っす。参考のために、PHPじゃなくHTML版で単独で見ることができるようにしたサンプル置いときます。
解凍してできるサンプルフォルダ内のmainlist-old.htmlてのが従来版、mainlist-new.htmlがCSS版。Safariにドラッグアンドドロップすれば表示結果を比較する事ができるっす。
ソースの理解にはXHTMLとCSSの情報が必要だけど、ここらへんは奥村晴彦教授のサイトがお勧め。
奥村晴彦教授のサイト:XHTMLとCSS
もちろん激闘の記録その(131)~その(155)を読むのでもOK。ふっ、めまいがする量ですな。
CSSの導入でなにをやったかというとtableタグからdivタグへの移行っす。divタグはHTMLテキストの範囲を指定するためのタグで、元々は画面上には大した影響は無いものなんですが、こいつにCSSを適用すると、矩形の大きさや配置方法、背景画像なんかを指定できるようになるんですな。
例えば以下のように記述されてるページがあったとすると
そのままだと以下のような表示にんるわけですが
![$テン*シー*シー-2](https://stat.ameba.jp/user_images/20100412/17/xcc/16/5a/j/o0417031310493446208.jpg?caw=800)
こいつに
て一文を入れて、style.cssファイルを読み込ませると
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100412/17/xcc/f9/38/j/o0433036010493456803.jpg?caw=800)
って感じで、いきなり表示が変化するんですわ。
style.cssに何が書かれているかというと
という定義。
こいつが、divタグに働いて表示を変化させてるわけです。
![$テン*シー*シー-4](https://stat.ameba.jp/user_images/20100412/17/xcc/9b/e0/j/o0450038710493466426.jpg?caw=800)
margin(余白)の指定がいまいち正しくないように見えるのは、ページ全体を決めるbodyタグにもmarginが設定されてるから。
を追加してやれば
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100412/17/xcc/dc/0d/j/o0439037210493472590.jpg?caw=800)
ほらスッキリ。
タグにはclass属性が設定できるので
なんて具合に外側のdivにrowっていうclass属性を設定しておいて、style.cssに
ってな感じでrow class属性を持つdivタグの設定を追加してやると
![$テン*シー*シー-6](https://stat.ameba.jp/user_images/20100412/17/xcc/5b/98/j/o0424035710493485462.jpg?caw=800)
というように表示が変化するんですな。
なんてして、各classごとに設定を与えてやれば
はい、横置き液晶画面のアップ。
![$テン*シー*シー-7](https://stat.ameba.jp/user_images/20100412/17/xcc/49/c7/j/o0432041210493496177.jpg?caw=800)
回り込み指定(float:leftという指定。また回り込めるかどうか判定するので幅の指定も必要になる。これがwidth:100pxという指定で100ピクセルの幅を指定している理由)もできるのでdivタグ全体に指定してやると~
![$テン*シー*シー-8](https://stat.ameba.jp/user_images/20100412/17/xcc/cd/2a/j/o0433037110493500691.jpg?caw=800)
なんかテーブルっぽくなってきた~。
んじゃ、row classのdivにだけ回り込みを解除させて、幅も大きめにしてみたら~
![$テン*シー*シー-9](https://stat.ameba.jp/user_images/20100412/18/xcc/2e/fa/j/o0427032910493506479.jpg?caw=800)
表っぽい~。
つ~わけで、CSSを使うとHTMLの内容を触らずにデザインを変更していく事が可能なんですな。
次回は、従来版では提案ページに移動するさいに隠しFORMとしていた問い合わせIDをURLに含めてGET形式で送るようにし、ページングもこのURLに表示させたい問い合わせIDを含ませる形で対応する予定。
konohanaDBクラスにつけた自分の投稿関係の削除機能への対応と返す内容の検討っす。
極端な話、PHPで毎回動的に生成してるんだから
写真パス1, 名前候補1, コメント1,
写真パス2, 名前候補2, コメント2,
・
・
写真パス2, 名前候補2, コメント2,
・
・
というように返す事だってできるんですが…
やっぱウェブブラウザでも表示できるHTML表記で返したいわけですよ。
で、そのために現在はtableタグを使ったページを返すようにしてるわけです。
HTML表記~?tableタグ~?な人は、ここらへんの激闘の記録その(131)~を読みましょう。
![$テン*シー*シー-1](https://stat.ameba.jp/user_images/20100413/16/xcc/d5/b2/j/o0500043210494815424.jpg?caw=800)
ちなみにSafariで上のように表示ページのソースを表示させるには、表示>ソースを表示メニューね。
ま、これで十分なんですが…
もうちょっと商用サイトのようなオシャレな感じをね、出したいな、と。画像の大きさそろえたいなとか、早い話以下のような表示にしたいんですよ。
![$テン*シー*シー-2](https://stat.ameba.jp/user_images/20100413/16/xcc/e4/d2/j/o0500044910494818351.jpg?caw=800)
ただ~、あんまり装飾のためにPHPのソースを複雑にするのもな~。
と、いうのも正論なわけで…
ここらへんをうまく解決するためにCSS(Cascading Style Sheets)を導入することにしますた。
で、結果以下のようにあんまりソースの内容は増やさずに大幅に変更できたぞっと。
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100413/16/xcc/85/e4/j/o0500053310494825047.jpg?caw=800)
上にかぶさってるのが新しくCSSを使った記述で、下側が従来の記述っす。参考のために、PHPじゃなくHTML版で単独で見ることができるようにしたサンプル置いときます。
解凍してできるサンプルフォルダ内のmainlist-old.htmlてのが従来版、mainlist-new.htmlがCSS版。Safariにドラッグアンドドロップすれば表示結果を比較する事ができるっす。
サンプルプロジェクト:CSS.zip
ソースの理解にはXHTMLとCSSの情報が必要だけど、ここらへんは奥村晴彦教授のサイトがお勧め。
奥村晴彦教授のサイト:XHTMLとCSS
もちろん激闘の記録その(131)~その(155)を読むのでもOK。ふっ、めまいがする量ですな。
CSSの導入でなにをやったかというとtableタグからdivタグへの移行っす。divタグはHTMLテキストの範囲を指定するためのタグで、元々は画面上には大した影響は無いものなんですが、こいつにCSSを適用すると、矩形の大きさや配置方法、背景画像なんかを指定できるようになるんですな。
例えば以下のように記述されてるページがあったとすると
<div>
<div>1-a</div><div>1-b</div><div>1-c</div>
</div>
<div>
<div>2-a</div><div>2-b</div><div>2-c</div>
</div>
<div>1-a</div><div>1-b</div><div>1-c</div>
</div>
<div>
<div>2-a</div><div>2-b</div><div>2-c</div>
</div>
そのままだと以下のような表示にんるわけですが
![$テン*シー*シー-2](https://stat.ameba.jp/user_images/20100412/17/xcc/16/5a/j/o0417031310493446208.jpg?caw=800)
見てわかるようにソース側の改行は意味を持たない。あくまでdivタグで囲まれている部分がひとつのブロックとして扱われ改行が入る。
ちなみにブロックごとに改行を加えない範囲指定にはdivではなくspanというタグを使う。
![$テン*シー*シー-4](https://stat.ameba.jp/user_images/20100413/17/xcc/d1/8c/j/o0457040310494864849.jpg?caw=800)
ちなみにブロックごとに改行を加えない範囲指定にはdivではなくspanというタグを使う。
![$テン*シー*シー-4](https://stat.ameba.jp/user_images/20100413/17/xcc/d1/8c/j/o0457040310494864849.jpg?caw=800)
こいつに
<link rel="stylesheet" type="text/css" href="style.css" />
て一文を入れて、style.cssファイルを読み込ませると
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100412/17/xcc/f9/38/j/o0433036010493456803.jpg?caw=800)
って感じで、いきなり表示が変化するんですわ。
style.cssに何が書かれているかというと
div {
margin:10px 10px;
background-color:#eee;
}
margin:10px 10px;
background-color:#eee;
}
という定義。
こいつが、divタグに働いて表示を変化させてるわけです。
![$テン*シー*シー-4](https://stat.ameba.jp/user_images/20100412/17/xcc/9b/e0/j/o0450038710493466426.jpg?caw=800)
margin(余白)の指定がいまいち正しくないように見えるのは、ページ全体を決めるbodyタグにもmarginが設定されてるから。
body {
margin:0;
}
div {
margin:10px 10px;
background-color:#eee;
}
margin:0;
}
div {
margin:10px 10px;
background-color:#eee;
}
を追加してやれば
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100412/17/xcc/dc/0d/j/o0439037210493472590.jpg?caw=800)
ほらスッキリ。
タグにはclass属性が設定できるので
<div class="row">
<div>1-a</div><div>1-b</div><div>1-c</div>
</div>
<div class="row">
<div>2-a</div><div>2-b</div><div>2-c</div>
</div>
<div>1-a</div><div>1-b</div><div>1-c</div>
</div>
<div class="row">
<div>2-a</div><div>2-b</div><div>2-c</div>
</div>
なんて具合に外側のdivにrowっていうclass属性を設定しておいて、style.cssに
body {
margin:0;
}
div {
margin:10px 10px;
background-color:#eee;
}
div.row {
background-color:#066;
}
margin:0;
}
div {
margin:10px 10px;
background-color:#eee;
}
div.row {
background-color:#066;
}
ってな感じでrow class属性を持つdivタグの設定を追加してやると
![$テン*シー*シー-6](https://stat.ameba.jp/user_images/20100412/17/xcc/5b/98/j/o0424035710493485462.jpg?caw=800)
というように表示が変化するんですな。
<div class="row">
<div class="a">1-a</div><div class="b">1-b</div><div class="c">1-c</div>
</div>
<div class="row">
<div class="a">2-a</div><div class="b">2-b</div><div class="c">2-c</div>
</div>
<div class="a">1-a</div><div class="b">1-b</div><div class="c">1-c</div>
</div>
<div class="row">
<div class="a">2-a</div><div class="b">2-b</div><div class="c">2-c</div>
</div>
なんてして、各classごとに設定を与えてやれば
body {
margin:0;
}
div {
margin:10px 10px;
background-color:#eee;
}
div.row {
background-color:#066;
}
div.a {
background-color:#f00;
}
div.b {
background-color:#0f0;
}
div.c {
background-color:#00f;
}
margin:0;
}
div {
margin:10px 10px;
background-color:#eee;
}
div.row {
background-color:#066;
}
div.a {
background-color:#f00;
}
div.b {
background-color:#0f0;
}
div.c {
background-color:#00f;
}
はい、横置き液晶画面のアップ。
![$テン*シー*シー-7](https://stat.ameba.jp/user_images/20100412/17/xcc/49/c7/j/o0432041210493496177.jpg?caw=800)
回り込み指定(float:leftという指定。また回り込めるかどうか判定するので幅の指定も必要になる。これがwidth:100pxという指定で100ピクセルの幅を指定している理由)もできるのでdivタグ全体に指定してやると~
body {
margin:0;
}
div {
margin:10px 10px;
float:left;
width:100px;
background-color:#eee;
}
div.row {
background-color:#066;
}
div.a {
background-color:#f00;
}
div.b {
background-color:#0f0;
}
div.c {
background-color:#00f;
}
margin:0;
}
div {
margin:10px 10px;
float:left;
width:100px;
background-color:#eee;
}
div.row {
background-color:#066;
}
div.a {
background-color:#f00;
}
div.b {
background-color:#0f0;
}
div.c {
background-color:#00f;
}
![$テン*シー*シー-8](https://stat.ameba.jp/user_images/20100412/17/xcc/cd/2a/j/o0433037110493500691.jpg?caw=800)
なんかテーブルっぽくなってきた~。
回り込み指定(float:left)について
これは隙間があれば、左詰めで配置していけという指定。
![テン*シー*シー-1](https://stat.ameba.jp/user_images/20100419/18/xcc/9e/ee/j/o0405045810503176198.jpg?caw=800)
というように、自分が入ることが出来る隙間がある場合、下には入らずに左詰めで入っていく。
![テン*シー*シー-2](https://stat.ameba.jp/user_images/20100419/18/xcc/cd/5f/j/o0405040510503176211.jpg?caw=800)
この隙間があるかないかは、自分の親の領域に対するものであり、今回のようにdiv領域の中に入れ子状に配置されたdiv領域は、親のdiv領域に対して隙間があるかないかを判断する。
![テン*シー*シー-3](https://stat.ameba.jp/user_images/20100419/18/xcc/31/a0/j/o0272031810503176199.jpg?caw=800)
これは隙間があれば、左詰めで配置していけという指定。
![テン*シー*シー-1](https://stat.ameba.jp/user_images/20100419/18/xcc/9e/ee/j/o0405045810503176198.jpg?caw=800)
というように、自分が入ることが出来る隙間がある場合、下には入らずに左詰めで入っていく。
![テン*シー*シー-2](https://stat.ameba.jp/user_images/20100419/18/xcc/cd/5f/j/o0405040510503176211.jpg?caw=800)
この隙間があるかないかは、自分の親の領域に対するものであり、今回のようにdiv領域の中に入れ子状に配置されたdiv領域は、親のdiv領域に対して隙間があるかないかを判断する。
<div>
<div>1-a</div><div>1-b</div><div>1-c</div>
</div>
<div>1-a</div><div>1-b</div><div>1-c</div>
</div>
![テン*シー*シー-3](https://stat.ameba.jp/user_images/20100419/18/xcc/31/a0/j/o0272031810503176199.jpg?caw=800)
んじゃ、row classのdivにだけ回り込みを解除させて、幅も大きめにしてみたら~
body {
margin:0;
}
div {
margin:10px 10px;
float:left;
width:100px;
background-color:#eee;
}
div.row {
clear:both;
width:370px;
background-color:#066;
}
div.a {
background-color:#f00;
}
div.b {
background-color:#0f0;
}
div.c {
background-color:#00f;
}
margin:0;
}
div {
margin:10px 10px;
float:left;
width:100px;
background-color:#eee;
}
div.row {
clear:both;
width:370px;
background-color:#066;
}
div.a {
background-color:#f00;
}
div.b {
background-color:#0f0;
}
div.c {
background-color:#00f;
}
![$テン*シー*シー-9](https://stat.ameba.jp/user_images/20100412/18/xcc/2e/fa/j/o0427032910493506479.jpg?caw=800)
表っぽい~。
つ~わけで、CSSを使うとHTMLの内容を触らずにデザインを変更していく事が可能なんですな。
次回は、従来版では提案ページに移動するさいに隠しFORMとしていた問い合わせIDをURLに含めてGET形式で送るようにし、ページングもこのURLに表示させたい問い合わせIDを含ませる形で対応する予定。