『 2010年11月 』

≒ データベースのカラム名

MySQLのテーブル「○○_users」と「○○_shipping」。その名の通り会員情報と出荷情報のテーブルなんだけど、両方でカラム名に「state」ってのがある。
ここまでで想像がつくように値の操作で失敗。shippingテーブルにusersテーブルをLEFT JOINしてSELECT *。
その結果のstateの値はどちらのものでしょうか。

今日失敗する前の僕なら、先に呼んでるし、左外部結合だし、迷わずshippingって答えるんだけど、正解はusersだった。
解決は「select *,○○_shipping.state」でいけた。けど上書き気持ち悪いね。

今後、カラム名は必ず「テーブル名_カラム名」って付けよう。それとももっと良い方法があるのかな?

≒ wordpressのif文がわからない

(表題の件の解答は載ってません。あくまで備忘録です。)

職業訓練も卒業制作の期間に入って、毎日自習状態。
これなら家でやってたほうが環境(現実のとPCスペックと)は良いんだけど、出席足らずで訓練終了認定もらえなかったら元も子もないので、教室に来てしょぼいPCでコード書いてます。Eclipseが使えないのでPHPコードをごりごり書くのは敬遠して、前から気になってたこのブログがW3C先生に怒られてたのを直すことにする。
細かいの(id指定をclass指定に変えるとかね)を全部つぶして、最後に残ったのがページ遷移部分。wordpressのテンプレート通りだと、例えば先頭ページの場合、当然、もっと「最近の投稿」は存在しないのだけれども、<span>タグだけは出力されるので、「中身がないですよー」って怒られる。以下試してみた対処法。

  • if文でくくる。「if(『最近の投稿』を出力する関数』){echo”<span>”. 『最近の投稿』を出力する関数』.”<span>”}」
  • 同じく。「if(『最近の投稿』を出力する関数』){echo”<span>”;(改行)『最近の投稿』を出力する関数』;(改行)echo”<span>”;(改行)}」
  • 同じく。ぐぐってwordpress(というか別の書き方)のif構文に書き換える。「if(): ~ endif;」

以上全部駄目。なぜか<span>タグだけ出力されない。『最近の投稿』は出力される。試しに実行部分の『最近の投稿』を出力する関数』を削って「echo”<span>”」だけにしても『最近の投稿』だけ出力される。幽霊みたいでちょっと怖くなった。
まぁ、良く考えたら、分岐判定部分に記述している関数が実行されて処理を抜けちゃってることがわかったんだけど、今度はそれの直し方がわからない。つまり「if文で判定にある関数の実行結果を参照したい。けど実行はさせたくない」という問題。
if(()==”TRUE”)って明示してみたりしたんだけど全然駄目。

以上、午前中いっぱい使って駄目だったのであきらめる。宿題として覚えておく。まだif構文の理解が甘い。
え、でも治ってるって?<span>タグには&nbsp;突っ込んでW3C先生を騙してます…

≒ <nobr>タグは必要なし?

今日の失敗。

なんちゃってECサイトも大詰めで、参考書に載ってるコードは全部打ち終わった。あの本は解説どころか全く言及がなく、コード内のジャンプ先で必要になって初めて気がつくコードファイルが結構あって、その場合、サポートサイトからとってきたサンプルコードを解読しながら打ちこまないといけないようになっているので、本が終了してもまだ終わらないんですねー。

というわけで、今日は売上管理の部分を打ち込んだんだけど、コードの構成も大分判ってきて、打ち込みながら自分好みに改造していく。今日ハマったのはそれほど重要な部分ではなくて(いつもか?)CSS関連。

<a>タグでページ遷移させてたところにパラメータいっぱいくっつけなくちゃいけなくなって、action属性があんまり長くなるのもどうかなとも思ったので<form>要素に変更した。動作はうまく行ったんだけど、変更前は「<a></a><a></a>」で仲良く二つボタンが横並びになってたところが、「<input /><a></a>」だと改行されちゃう。
そうか、<nobr>タグはだめだから入っている<td>タグに「white-space:nowrap」しちゃおう。で、効かない。
<p>タグで括ってnowrap。駄目。
<div>も駄目。<span>も駄目。<td>の幅をでかくしても駄目。
仕舞には禁断の<nobr>も試したんだけど駄目!

で、コードとにらみ合いをしてたら、<form>がちゃんと閉じていない。ちゃんと閉じる。
治る。横並びになった。いつも通りカンターン!というか今日の失敗は我ながら特にバカっぽいなー。

GETとPOSTの取り扱いもよくわかってないことがはっきりしたし、今日も勉強になった!